使用纯CSS定位第一个可见元素

我想知道是否有可能将以下内容转换成纯CSS

$('.child:visible:first').css({'border-top':'1px-solid#cccccc','border-bottom':'1px-solid#cccccc');

我似乎找不到解决办法

作为抽象,这是不可能的:jQuery依赖于遍历DOM以编程方式确定适合各种条件的元素,然后停止。你不能这样做。但我想在实践中你会知道很多事情。此解决方案假定:

  1. 您知道这些元素将如何被隐藏。它们是否将display:none作为内联样式(如果您在它们上使用了jQuery.hide(),它们将)?他们是否有一个.hidden类?只要您知道该方法,就可以使用选择器来表示该方法。您可以将其与CSS3:not()选择器结合使用
  2. 因为它们被称为.child,所以我假设它们都是兄弟姐妹-没有一个嵌套在其他.child元素中,并且它们都共享同一个父元素

如果上述任何一项都不是真的,那就不可能了。但如果它们都是真的:

.child:not([style*=“display:none]”){
边框顶部:1px实心#中交;
边框底部:1px实心#CCCC;
}
.child:not([style*='display:none'])~.child:not([style*='display:none'])){
/*…或任何默认样式*/
边界顶部:无;
边框底部:无;
}

:not()伪类非常明显:它只选择与包含的选择器不匹配的元素。~运算符意味着,如果左侧的选择器在源代码后面出现,则右侧的选择器将成为目标

发表评论