Ear*_*ray 2 html javascript css jquery
我有一些带显示的 div: inline-block; 我必须选择第一行 div 并将它们设置为例如不同的边框颜色,我需要在 javaScript (jQuery) 中进行。
HTML :
<div class="container">
<div class="item">item 1</div>
<div class="item">item 2</div>
<div class="item">item 3</div>
<div class="item">item 4</div>
<div class="item">item 5</div>
<div class="item">item 6</div>
<div class="item">item 7</div>
<div class="item">item 8</div>
<div class="item">item 9</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS :
.container {
border: 1px solid red;
padding: 10px;
}
.item {
display: inline-block;
border: 1px solid green;
width: 200px;
margin: 10px;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
您必须检查第一行中有哪些元素,并标记它们。一种方法是小提琴
此代码假设第一个元素在一行中的第一个(始终为真),并检查哪些元素具有相同的顶部偏移量,然后对它们应用 borderColor 更改
var top;
$('.container .item').each(function(i){
var thistop = $(this).offset().top;
if (i==0){
top = thistop;
}
if (top==thistop){
$(this).css({borderColor:"purple"});
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,在现实生活中的应用程序中,您将在调整窗口大小时使用事件处理程序,以在调整窗口大小时再次运行它。
我做了一个单独的小提琴来做事件处理程序版本。这需要将上面的代码包装在一个函数中,并稍微更改功能以添加/删除类,而不仅仅是添加 css(因为添加和手动删除 css get 很麻烦)。小提琴可以在这里找到。
因此,它不是添加 css,而是添加/删除一个类
markrow = function(){
$('.container .item').each(function(i){
...
if (top==thistop){
$(this).addClass('special');
}else{
$(this).removeClass('special');
}
});
}
markrow();
$(window).on('resize',markrow);
Run Code Online (Sandbox Code Playgroud)
特别是一个改变边框颜色的css类
.special {
border-color:purple;
}
Run Code Online (Sandbox Code Playgroud)