在我的第一个项目中,我尝试将 .hover 与 .addClass()结合使用,以突出显示鼠标指针下的div。
它应该相当简单,但我不能让它工作,这是我到目前为止写的:
jQuery的:
$(document).ready(function() {
$('#NewItem').hover(function() {
$('#NewItem').addClass('active');
});
});
CSS
div {
border-radius: 5px;
transition: background-color 0.5s ease;
}
#NewItem {
border: 1px solid #000000;
background-color: #F0F8FF;
Width: 100px;
height: 50px;
margin-left: auto;
margin-right: auto;
margin-top: 100px;
z-index: 5;
text-align: center;
}
.active {
background-color:#556677;
}
HTML
<body>
<div id="background">
<div id="NewItem">
<p> Add item </p>
</div>
</div>
</body>
试图找出我错了什么,我换了&#34; .addclass(&#39; active&#39;)&#34;用&#34; .hide()&#34;它确实让div消失了。
答案 0 :(得分:1)
它确实在悬停时添加了这个类。问题是选择器#NewItem
比选择器.active
更具体,这意味着正在覆盖随.active
选择器添加的背景颜色。
#NewItem
的{{3}}为0,1,0,0;而.active
的特殊性是0,0,1,0。
增加.active
选择器的specificity,并详细了解specificity。
#NewItem.active {
background-color: #556677;
}
作为旁注, if 您打算在mouseenter和mouseout上切换类,请使用.toggleClass()
方法代替:
$('#NewItem').hover(function() {
$(this).toggleClass('active');
});
或者完全避免使用jQuery并使用:hover
伪类(如果适用于您的情况):
#NewItem:hover {
background-color: #556677;
}
答案 1 :(得分:0)
即使添加了class
,您也无法获得所需的结果。原因是CSS特异性。所以改变方式:
#NewItem.active {
background-color: #556677;
}
#id
优先于.class
选择器。所以给两者都有效。
对于more information,请将此作为参考:
答案 2 :(得分:-1)
由于CSS特异性,NewItem ID的背景颜色会覆盖活动类的背景颜色。请参阅下面的新工作示例。
var count = <?php
$tmp = json_encode($resultArray);
echo ($tmp === false ? 'null' : $tmp);
?>;
$(document).ready(function(){
$(".newItem").hover(function(){
$(".newItem").toggleClass("active");
});
});
div {
border-radius: 5px;
transition: background-color 0.5s ease;
}
.newItem {
border: 1px solid #000000;
background-color: #F0F8FF;
Width: 100px;
height: 50px;
margin-left: auto;
margin-right: auto;
margin-top: 100px;
z-index: 5;
text-align: center;
}
.active {
background-color:#556677;
}