- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我有以下结构:
<div class="elementWrapper">
<div>1. Element</div>
<div>2. Element</div>
<div>3. Element</div>
<div class="alternate">1. Element with spec. Class</div>
<div class="alternate">2. Element with spec. Class</div>
<div class="alternate">3. Element with spec. Class</div>
<div class="alternate">4. Element with spec. Class</div>
<div class="alternate">5. Element with spec. Class</div>
<div>9. Element</div>
<div>10. Element</div>
<div>11. Element</div>
</div>
前后可以有未知数量的多个元素,我不可能在 class="alternate"的元素周围添加一个“包装”div。 (在那里一切都会好起来的)。
我想给第一个 .alternate 元素一个顶部边框,最后一个 .alternate 元素一个底部边框。所有 .alternate 元素的每一行(偶数/奇数)都应该有不同的背景颜色。
我尝试过不同的方法,我知道 nth-of-type 和 nth-child 不会工作,因为我的 .alternate 元素周围没有包装 div,所以它不能工作,因为所有元素都计算为偶数/奇数等等。
所以我把问题和可能的解决方案写成了笔:
http://codepen.io/emjay/pen/RpyyOo
我想问你,在不改变结构的情况下,最好的方法是什么。是否有仅适用于 CSS 的解决方案?
感谢您的帮助!
最佳答案
对于第一个问题(将 border-top
添加到第一个 .alternate
元素并将 border-bottom
添加到最后一个 。 alternate
元素),您可以通过将 border-top
单独添加到:
.alternate
元素紧跟在执行 :not()
的元素之后有 .alternate
类,并且,.alternate
类的元素紧跟在一个有的元素之后。如果第一个 .alternate
元素之前没有元素,您还需要将 border-top
添加到 .alternate
元素也是 :first-child
并且,如果在最后一个 .alternate
之后没有元素,则需要添加 border -bottom
到 .alternate
元素,它也是 :last-child
。
对于关于“斑马条纹”的第二个问题,.alternate
元素,假设奇数或偶数元素是否具有交替的 background
无关紧要,您可以使用一个简单的 :nth-of-type()
(或 :nth-child()
)伪类。但是,如果您需要第一个 .alternate
元素始终具有相同的 background
而不管其前面的元素数量如何,您将需要求助于 JavaScript - 它是可能单独使用 CSS,但需要荒谬数量的选择器(参见 this answer 作为示例)。
(function(){
var wrappers=document.querySelectorAll(".elementWrapper"),
x=wrappers.length,
divs,y,alt;
while(x--){
divs=wrappers[x].querySelectorAll(".alternate");
y=divs.length;
alt=!(y%2);
while(y--)
divs[y].classList.add((alt=!alt)?"odd":"even");
}
})();
/** JQuery **/
//$('.alternate:odd').addClass('odd')
//$('.alternate:even').addClass('even');
.elementWrapper>div:not(.alternate)+div.alternate,
.elementWrapper>div.alternate+div:not(.alternate),
.elementWrapper>div.alternate:first-child{
border-top:1px solid #000;
}
.elementWrapper>div.alternate:last-child{
border-bottom:1px solid #000;
}
.elementWrapper>div.alternate.odd{
background:#ccc;
}
.elementWrapper>div.alternate.even{
background:#eee;
}
/** Uncomment below for CSS-only zebra-striping **/
/*.elementWrapper>div.alternate:nth-of-type(odd){
background:#ccc;
}
.elementWrapper>div.alternate:nth-of-type(even){
background:#eee;
}*/
/** "housekeeping" **/.elementWrapper{background:#fff;color:#000;margin:0 0 20px;}.elementWrapper>div{font-family:sans-serif;font-size:14px;overflow:hidden;padding:5px;text-overflow:ellipsis;white-space:nowrap;}
<div class="elementWrapper">
<div>1. Element</div>
<div class="alternate">1. Element with spec. Class</div>
<div class="alternate">2. Element with spec. Class</div>
<div class="alternate">3. Element with spec. Class</div>
<div class="alternate">4. Element with spec. Class</div>
<div class="alternate">5. Element with spec. Class</div>
<div>9. Element</div>
</div>
<div class="elementWrapper">
<div>1. Element</div>
<div>2. Element</div>
<div class="alternate">1. Element with spec. Class</div>
<div class="alternate">2. Element with spec. Class</div>
<div class="alternate">3. Element with spec. Class</div>
<div class="alternate">4. Element with spec. Class</div>
</div>
关于css - 以第一个、偶数/奇数和最后一个元素为目标,带有类,没有包装器,以及其他元素(nth-of-class 行为):),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42972528/
:nth-child(2) 似乎选择了 child 1 内部的东西。 child 1 和 child 3 工作正常。 好像不涉及tag的类型,几个类似但不同的问题都有。我没有看到问题。 https:/
我想用 javascript 隐藏一个特定的 child : #table-detail > tbody > tr:nth-child(10) 基于另一个特定的前一个 child 的内容: #tabl
在我自学 CSS 的过程中,我遇到了伪选择器 :nth-child() (以及它相关的选择器 :nth-last-child() 和 :nth-of-type())。 我已经对它进行了足够的研究,以了
在自学 CSS 的过程中,我遇到了伪选择器 :nth-child() (以及它的相关选择器 :nth-last-child() 和 :nth-of-type())。 我已经对它进行了足够的研究以理解语
我对 nth-of-type 有点困惑伪类,以及它应该如何工作——尤其是与 nth-child 相比类。 也许我的想法是错误的,但是考虑到这个结构 A B 1 2
我对 nth-of-type 有点困惑伪类,以及它应该如何工作——尤其是与 nth-child 相比类。 也许我的想法是错误的,但是考虑到这个结构 A B 1 2
我对 nth-of-type 有点困惑伪类,以及它应该如何工作——尤其是与 nth-child 相比类。 也许我的想法是错误的,但是考虑到这个结构 A B 1 2
我对 nth-of-type 有点困惑伪类,以及它应该如何工作——尤其是与 nth-child 相比类。 也许我的想法是错误的,但是考虑到这个结构 A B 1 2
我对 nth-of-type 有点困惑伪类,以及它应该如何工作——尤其是与 nth-child 相比类。 也许我的想法是错误的,但是考虑到这个结构 A B 1 2
我想避免在自定义 Wordpress 模板中使用函数或循环来为特定元素显示不同的背景颜色。我的问题是需要更改的容器及其父容器。 每个第 1、4、7 等配置文件类都需要有蓝色背景色。每个第 2、5、8
这个问题在这里已经有了答案: What does a space mean in a CSS selector? i.e. What is the difference between .clas
我有 3 个按钮,对于第二个按钮,我试图为其添加额外的边距,但出于某种原因,nth-child 和 nth-of-type 根本没有改变外观。我想我只是不明白它们是如何工作的,所以如果有人可以传播一点
我对 nth-of-type 有点困惑伪类,以及它应该如何工作——尤其是与 nth-child 相比类。 也许我的想法是错误的,但是考虑到这个结构 A B 1 2
我需要在 x 数量的元素之后插入一个 clearfix div,以便我可以获得格式良好的列。 我已经尝试了 :nth-child 和 :nth-of-type 并且我只在前 x 个项目之后添加了一个
遇到一个我想不通的问题。我正在尝试做的一个简单示例: 在类 .row 下第一个“跨度”的每次出现都以红色突出显示,除了第一次出现,它应该以黄色突出显示。 .row span:nth-of-type(1
什么 CSS 选择器可用于选择父元素中的所有奇数元素,但不一定是兄弟元素? A A A
我正在尝试更改 div 内的奇数 div 的样式。出于某种原因,当 nth-of-type(odd) 在另一个 div 中时,它会影响我的所有 div。这是我的常规 div 和奇数 div 的代码:
这个问题在这里已经有了答案: Can I combine :nth-child() or :nth-of-type() with an arbitrary selector? (9 个回答) Wh
我正在尝试更改 div 内的奇数 div 的样式。出于某种原因,当 nth-of-type(odd) 在另一个 div 中时,它会影响我的所有 div。这是我的常规 div 和奇数 div 的代码:
我有这个 html 代码: CSS: .productWarp .productLine { background-color
我是一名优秀的程序员,十分优秀!