我在许多页面上使用标题 ID,但不希望底部边框仅显示在某些页面上。下面的代码为了简单起见,从标题 ID 中删除了一些样式:
#header {
width:790px;
min-height:230px;
border-bottom: 1px solid #DADADA;
}
.header-no-line {
border-bottom: none;
}
<div Id="header" class="header-no-line">
<h1>Title</h1>
</div>
我在许多页面上使用标题 ID,但不希望底部边框仅显示在某些页面上。下面的代码为了简单起见,从标题 ID 中删除了一些样式:
#header {
width:790px;
min-height:230px;
border-bottom: 1px solid #DADADA;
}
.header-no-line {
border-bottom: none;
}
<div Id="header" class="header-no-line">
<h1>Title</h1>
</div>
您的问题在于 CSS 特异性:http ://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/
您可以important
在您的情况下添加关键字来解决此问题:
.header-no-line {
border-bottom: none !important; /* <----- */
}
好吧,您应该阅读有关特异性的信息。http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/是一篇好文章。
一个好的规则是:
“从 0 开始,样式属性加 1000,每个 ID 加 100,每个属性、类或伪类加 10,每个元素名称或伪元素加 1。”</p>
在这种情况下,ID 值 100,类值 10,因此 ID 获胜。
此外,任何时候你正在“撤消”CSS,这通常是一个不好的迹象。
解决这个问题的垃圾方法是在!important
该声明中添加一个,但大多数人会在代码审查中选择它并询问为什么需要它——这很少是做事的方式。
许多人还建议不要对 CSS 使用 ID,而是对所有内容使用类(嗯,除了普通的选择器等),并且只对 Javascript 钩子使用 ID。这是处理事情的好方法。
你在css中越具体,你的规则就越重要。
例如:
而不是.header-no-line
你可以使用
#header .header-no-line { border-bottom:none; }
或者
body #header .header-no-line { border-bottom:none; }
也正如提到的使用!important
属性应该可以解决问题。
#header .header-no-line { border-bottom:none !important; }
更新:我完全错过了那.header-no-line
不是#header
......我上面的代码不起作用。但这将:
body .header-no-line { border-bottom:none !important; }