jQuery:添加了类,但忽略了页边空白顶部样式
我在元素上切换一个类,悬停时,该类添加得很好,但jQuery:添加了类,但忽略了页边空白顶部样式,jquery,css,Jquery,Css,我在元素上切换一个类,悬停时,该类添加得很好,但边距顶部似乎被忽略了。如何使页边距顶部样式正常工作。代码只是一个片段 CSS: jQuery: $('#nav ul a li').hover(function () { $(this).toggleClass('hover'); }); HTML: 请阅读有关样式优先级的信息尝试使用以下选项: #nav li.hover{ background-color: red; margin-top: 100px; }
边距顶部
似乎被忽略了。如何使页边距顶部
样式正常工作。代码只是一个片段
CSS:
jQuery:
$('#nav ul a li').hover(function () {
$(this).toggleClass('hover');
});
HTML:
请阅读有关样式优先级的信息尝试使用以下选项:
#nav li.hover{
background-color: red;
margin-top: 100px;
}
问题是你的CSS选择器不够具体,所以
margintop:100px代码>被页边距顶部:0否决
您的另一个样式更具体,请将.hover
更改为#nav li.hover
这是css特殊性的问题,只需在.hover之前添加#nav li
,请参阅
选择器#nav li
更精确,因此.hover
会被覆盖。您的边距顶部
未被应用,因为您的.hover
类的样式远小于列表项的原始样式(使用ID)。一个方便的(极客)图表
一个解决方案是将CSS更改为在两个位置都使用ID(正如@Alex所建议的),甚至使用类似于的东西!重要信息
,但这两项都不是可行的长期解决方案。*
最好的办法是重新考虑CSS,使其只使用类。如果您只想实现这些,那么也不需要使用jQuery进行悬停样式设置。最后,正如@Vega所指出的,您的ul
只能将li
项作为直接子项。这就给你留下了:
以及经修订的HTML:
<div class="nav" id="nav">
<ul>
<li>
<a href="#">
<h3>title</h3>
<p>description.</p>
</a>
</li>
<li>
<a href="#">
<h3>title</h3>
<p>description.</p>
</a>
</li>
<li>
<a href="#">
<h3>title</h3>
<p>description.</p>
</a>
</li>
</ul>
</div>
-
-
-
*您可以主张在这里使用ID,但这使得您的.hover
类只能在这个实例中使用。单独上课会让你的生活更轻松。当然,如果您修改为使用:hover
伪类,那么这一点就没有意义了。这是由于CSS的特殊性
您将样式设置为#nav li
,这将比仅引用一个类更重要
注意:避免使用!重要信息
此处正在工作,例如
而不仅仅是使用。悬停使用
#nav .hover
正如您之前使用#nav li定义样式一样。您的HTML结构不正确ul>a>li
。在ul
内不能有a
标签ul
只能包含li
元素。感谢您对其不起作用的原因进行深入解释。这不会造成问题。
please use different class name instead of hover to "hover1".
may be class name conflict with hover property
.nav ul {
display: inline;
list-style: none;
}
.nav li a {
display: block;
height:100px;
}
.nav li {
float:left;
width:100px;
margin-top:0px;
margin-right:50px;
}
.nav li:hover {
background-color: red;
margin-top: 100px;
}
<div class="nav" id="nav">
<ul>
<li>
<a href="#">
<h3>title</h3>
<p>description.</p>
</a>
</li>
<li>
<a href="#">
<h3>title</h3>
<p>description.</p>
</a>
</li>
<li>
<a href="#">
<h3>title</h3>
<p>description.</p>
</a>
</li>
</ul>
</div>
#nav .hover
please use different class name instead of hover to "hover1".
may be class name conflict with hover property