附上一张图片,显示我正在寻找的东西。当鼠标悬停在框上时,鼠标上方的所有框都会突出显示。盒子是完全分开的
我这辈子都想不通!
感谢您的帮助。
附上一张图片,显示我正在寻找的东西。当鼠标悬停在框上时,鼠标上方的所有框都会突出显示。盒子是完全分开的
我这辈子都想不通!
感谢您的帮助。
考虑到以下 HTML 标记,纯 CSS 方法是可能的:
<div class="container">
<div class="box">
</div>
<!-- other elements -->
<div class="box">
</div>
</div>
使用以下 CSS:
div {
width: 80%;
margin: 1em auto;
min-height: 2em;
border: 1px solid #000;
}
div.box { /* default */
background-color: #009;
margin: 0 auto;
}
.container:hover .box {
background-color: red;
}
.container:hover .box:hover ~ .box {
background-color: #009;
}
当然,这确实需要一个支持通用兄弟~
组合子的浏览器,并且再次“当然”这些元素是兄弟。
不幸的是,由于元素之间的边距.box
,这确实会导致闪烁(当元素:hover
从.box
元素移到父.container
元素时)
参考:
由于您没有提及您的标记,因此我使用 jQuery 从头开始构建了一些东西:
JavaScript
$('.container > div').hover(
function() {
$(this).prevAll().addClass('active');
},
function() {
$('.container > div').removeClass('active');
}
);
HTML
<div class="container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
</div>
CSS
div.container > div {
width: 100px;
height: 20px;
background: #ccc;
}
div.container > div:hover, div.container > div.active {
background: red;
color:white;
}
演示
这个jsFiddle 示例应该这样做:
$('div').mouseover(function() {
var x = $(this, 'div').index();
$('div:lt(' + (x + 1) + ')').addClass('red');
$('div:gt(' + x + ')').removeClass('red');
});