0

我有以下 ASP.Net 代码

...
<div style="width: 40%; float: left; margin-left: 15px">
    <b>County:</b>
    <asp:ComboBox ID="cboCounty" runat="server" MaxLength="0" 
    AutoCompleteMode="SuggestAppend" CssClass="EPSCombo">
    </asp:ComboBox>
    <br />
...

问题:这个 div 包含许多组合框,它们没有按预期显示,它们都有EPSCombo类。当我调试 CSS 时,我发现它被覆盖了,这是 FireBug 的输出

在此处输入图像描述

我的EPSCombo样式如下(覆盖默认的 AjaxToolkit CSS)

.EPSCombo .ajax__combobox_inputcontainer .ajax__combobox_textboxcontainer input
{
    margin: 0;
    border: solid 1px #7F9DB9;
    border-right: 0px none;
    padding: 1px 0px 0px 5px;
    font-size: 13px;
    height: 18px;
}
.EPSCombo .ajax__combobox_inputcontainer .ajax__combobox_buttoncontainer button
{
    margin: 0;
    padding: 0;
    background-image: url(../images/windows-arrow.gif);
    background-position: top left;
    border: 0px none;
    height: 21px;
    width: 21px;
}
.EPSCombo .ajax__combobox_itemlist
{
    border-color: #7F9DB9;
}

而包含 EPSCombo 的 CSS 文件是母版页中包含的最后一个。

问题:我做 Web 开发可能已经有一段时间了,但是如果我决定控件的 CSS 类不应该具有最高优先级并且应该覆盖其他所有内容,对吗?如果是这样,那么为什么我的组合框样式(高度、宽度、边距和填充)被覆盖?我没有任何其他样式类可以为 Firebug 中显示的值设置高度和宽度。

在 Loki 的回答之后更新我想我应该添加这个,添加!important到这些属性可以解决问题,但我想找到这个的根本原因,看看哪里出了问题。

4

2 回答 2

3

您的 ComboBox 可能从<div>它所包含的或更高的 div 继承它的样式。由于您没有为包含在其中的 div 指定“类”或“ID”属性,如果您有类似的内容,该 div 可能正在从您的 CSS 文件中检索样式:

div
{
  height: 21px;
  margin: 0px;
  padding: 0px;
  width: 21px;
}

要强制您的 ComboBox 采用独立样式,尽管您可以style像这样使用 asp 属性:

<asp:ComboBox ID="cboCounty" runat="server" MaxLength="0" 
AutoCompleteMode="SuggestAppend" style="margin: 0;padding: 0;height: 21px;width: 21px;">
</asp:ComboBox>

这应该是可能干扰您的应用程序的任何其他样式的最高优先级。尽管被认为是不正确的编程实践,但它可以帮助您缩小问题范围。

干杯,埃里克

编辑 我还应该提到,您的 CSS 代码按从最具体到最不具体的标签定义的顺序进行解释。例如,div.menu比 更具体div,这可能发生在样式表的其他地方。

也是一篇描述继承的好文章。希望这可以帮助!

于 2013-07-19T19:39:41.420 回答
1

快速修复 - 将!important标志添加到您的样式表。它们将比其他所有内容具有更高的优先级,除非有其他标志定义了相同元素的相同属性

于 2013-07-19T19:32:11.443 回答