我的问题可能很简单,但不知怎的,我无法修复它。在一组物体中,一个物体悬停在上面,我希望悬停的物体保持不变,但所有其他物体都应该改变。
更具体一点:我有一个无序的菜单项列表。每当我将鼠标悬停在其中一个上时,所有其他项目都应该变小。当我“撤消”该项目时,他们应该再次改回来。
我找到了这篇文章,但它的答案对我不起作用: Set style for not not hovered elements only
这是我到目前为止所尝试的:
/*This is the default size*/
#navigation ul li a
{
font-size: 14px;
}
/*When the list is hovered, change font-size (does’nt work)*/
#navigation ul:hover
{
font-size: 13px;
}
/*When the a menu-item is hovered change it’s font-size back to default*/
#navigation ul li a:hover
{
font-size: 14px;
}
这是我在上面提到的帖子中找到的答案之一。如果可以通过简单的CSS完成它将会很棒。但它不起作用。我做错了吗?
我也尝试过使用jQuery,虽然我不是专家。
for(var i=1; i <= anzahlNavipunkte; i++)
{
var naviId = "navi" + i; // id name for every menu-item
var currentMenuItem = "#navigation li:nth-child(" + i + ") a";
$(currentMenuItem).attr('id', naviId); // gives the current menu-item a specific id
$('#navigation li a').hover(function()
{
var hoveredId = $(this).attr("id"); // get the id of of the hovered element
$('#' + hoveredId).hover(function()
{
console.log(hoveredId);
$('#' + hoveredId).css('font-size', '14px'); // hovered element gets default font-size
$('#navigation ul').css('font-size', '13px'); // other elements change to 13px
}, function()
{
$('#navigation ul').css('font-size', '14px'); // other elements change back
})
});
};
它也不起作用。可能是因为它与纯CSS解决方案的方法相同。有人可以帮帮我吗?
我希望我的解释是可以理解的。如果还有问题请询问。
答案 0 :(得分:2)
HTML:
<div id="container" >
<div id="children">
</div>
</div>
CSS:
#container:HOVER #children {
/* your style */
}
试试这个......
答案 1 :(得分:0)
由于特异性#navigation ul li
覆盖#navigation ul:hover
,这就是规则集不起作用的原因。
在列表中添加“a”:悬停规则,您应该没问题
#navigation ul:hover a
{
font-size: 13px;
}
答案 2 :(得分:0)
#navigation ul
,我认为它应该是#navigation ul li
更直接的方法是将一个类添加到你的li并指向该类。
我使用函数li所以:
function reduceOtherLi(li_to_keep_big){
var eList = $('#navigation ul li')`//put all the li in an array
// for each li in the array
for (i=0; i<eList.length; i++){
var e = eList[i]; //get current li
//if it not the clicked one, make the size smalle
if (e != li_to_keep_big) $(e).css({'font-size':'13px'});
else $(e).css({'font-size':'14px'});
}
}
然后您可以使用鼠标悬停处理程序来触发函数
$("#navigation ul li").mouseover(function() { reduceOtherLi(this);});
重置它们只需添加以下行:
$("#navigation ul li").mouseout(function() { $('#navigation ul li').css({'font-size':'14px'});});
基本上你可以把它放在一个标签中,它可以像你想要的那样工作。
注意.css(),您可以轻松地使用.addClass()和.removeClass(),并在那里指定font-size(和其他css的bunh)。
对于事件处理程序,'this'将重复出现hoverred元素。并作为li_to_keep_big进行过。
希望这会有所帮助。