更改备用元素的背景颜色 css
Change the background-color of alternate elements css
我想更改替代元素的颜色,但我的代码不起作用。我的代码改变了整个容器元素的颜色。
谁能告诉我代码哪里出错了?
.pvt-msg-panel {
height: 92vh;
float: left;
margin-top: -20px;
}
#pvt-messages-box {
height: 50vh;
width: 650px;
margin-top: 10px;
margin-left: 10px;
overflow-y: scroll;
}
.pvt-messages-box-item {
padding: 10px;
padding-left: 20px;
position: relative;
display: inline-block;
width: 100%;
color: black;
padding-left: 20px;
font-size: 12px;
cursor: pointer;
}
.pvt-messages-box-item:nth-child(odd) {
background-color: green;
}
.pvt-messages-box-item:nth-child(even) {
background-color: white;
}
<div class="pvt-msg-panel">
<section id="pvt-messages-box">
<span class="pvt-messages-box-item"><span><img src="images/avatar2.png"></span>message 1</span>
<br>
<span class="pvt-messages-box-item"><span><img src="images/avatar2.png"></span>message 2</span>
<br>
<span class="pvt-messages-box-item"><span><img src="images/avatar2.png"></span>message 3</span>
<br>
</section>
</div>
这里有 jsfiddle。将 nth-of-type(odd)
用于 span
.pvt-messages-box-item:nth-of-type(odd){
background-color: green;
}
.pvt-messages-box-item:nth-of-type(even){
background-color: white;
}
:nth-child 如果元素是其父元素的指定子元素,则匹配。 div 中的
元素导致选择器的奇数和偶数部分失败,因为它使两个跨度成为其父项的奇数子项(第 1 个和第 3 个)。
当使用 first-child
选择器时,br
标签将尝试选择 even
选择器。尝试使用 nth-of-type
选择器,然后就可以了:
.pvt-msg-panel{
height: 92vh;
float: left;
margin-top: -20px;
}
#pvt-messages-box{
height: 50vh;
width: 650px;
margin-top: 10px;
margin-left: 10px;
overflow-y: scroll;
}
.pvt-messages-box-item{
padding:10px;
padding-left: 20px;
position: relative;
display: inline-block;
width: 100%;
color: black;
padding-left: 20px;
font-size: 12px;
cursor: pointer;
}
.pvt-messages-box-item:nth-of-type(odd){
background-color: green;
}
.pvt-messages-box-item:nth-of-type(even){
background-color: white;
}
<div class="pvt-msg-panel">
<section id="pvt-messages-box">
<span class="pvt-messages-box-item"><span><img src="images/avatar2.png"></span>message 1</span><br>
<span class="pvt-messages-box-item"><span><img src="images/avatar2.png"></span>message 2</span><br>
<span class="pvt-messages-box-item"><span><img src="images/avatar2.png"></span>message 3</span><br>
</section>
</div>
好的,我发现了你的问题。
首先,我将您的代码复制到我的 jet brain 中,看起来像 that.ok?
如果我更改这样的代码:
background-color: red;
背景变成全红色。那么问题来了,为什么?
首先,section 的第一个子元素不是 span.pvt-message-box-item:nth-child(1) 而是空格,第二个是这样的元素。第三个是相同的,也是第一个 span 元素和第二个元素之间的空白,现在如果你想改变背景颜色,你可以使用这种分辨率。将 css 奇数和偶数更改为实际数字,例如将奇数和偶数替换为 1/3/5,结果显示符合您的要求:
我想更改替代元素的颜色,但我的代码不起作用。我的代码改变了整个容器元素的颜色。
谁能告诉我代码哪里出错了?
.pvt-msg-panel {
height: 92vh;
float: left;
margin-top: -20px;
}
#pvt-messages-box {
height: 50vh;
width: 650px;
margin-top: 10px;
margin-left: 10px;
overflow-y: scroll;
}
.pvt-messages-box-item {
padding: 10px;
padding-left: 20px;
position: relative;
display: inline-block;
width: 100%;
color: black;
padding-left: 20px;
font-size: 12px;
cursor: pointer;
}
.pvt-messages-box-item:nth-child(odd) {
background-color: green;
}
.pvt-messages-box-item:nth-child(even) {
background-color: white;
}
<div class="pvt-msg-panel">
<section id="pvt-messages-box">
<span class="pvt-messages-box-item"><span><img src="images/avatar2.png"></span>message 1</span>
<br>
<span class="pvt-messages-box-item"><span><img src="images/avatar2.png"></span>message 2</span>
<br>
<span class="pvt-messages-box-item"><span><img src="images/avatar2.png"></span>message 3</span>
<br>
</section>
</div>
这里有 jsfiddle。将 nth-of-type(odd)
用于 span
.pvt-messages-box-item:nth-of-type(odd){
background-color: green;
}
.pvt-messages-box-item:nth-of-type(even){
background-color: white;
}
:nth-child 如果元素是其父元素的指定子元素,则匹配。 div 中的
元素导致选择器的奇数和偶数部分失败,因为它使两个跨度成为其父项的奇数子项(第 1 个和第 3 个)。
当使用 first-child
选择器时,br
标签将尝试选择 even
选择器。尝试使用 nth-of-type
选择器,然后就可以了:
.pvt-msg-panel{
height: 92vh;
float: left;
margin-top: -20px;
}
#pvt-messages-box{
height: 50vh;
width: 650px;
margin-top: 10px;
margin-left: 10px;
overflow-y: scroll;
}
.pvt-messages-box-item{
padding:10px;
padding-left: 20px;
position: relative;
display: inline-block;
width: 100%;
color: black;
padding-left: 20px;
font-size: 12px;
cursor: pointer;
}
.pvt-messages-box-item:nth-of-type(odd){
background-color: green;
}
.pvt-messages-box-item:nth-of-type(even){
background-color: white;
}
<div class="pvt-msg-panel">
<section id="pvt-messages-box">
<span class="pvt-messages-box-item"><span><img src="images/avatar2.png"></span>message 1</span><br>
<span class="pvt-messages-box-item"><span><img src="images/avatar2.png"></span>message 2</span><br>
<span class="pvt-messages-box-item"><span><img src="images/avatar2.png"></span>message 3</span><br>
</section>
</div>
好的,我发现了你的问题。
首先,我将您的代码复制到我的 jet brain 中,看起来像 that.ok?
如果我更改这样的代码:
background-color: red;
背景变成全红色。那么问题来了,为什么?
首先,section 的第一个子元素不是 span.pvt-message-box-item:nth-child(1) 而是空格,第二个是这样的元素。第三个是相同的,也是第一个 span 元素和第二个元素之间的空白,现在如果你想改变背景颜色,你可以使用这种分辨率。将 css 奇数和偶数更改为实际数字,例如将奇数和偶数替换为 1/3/5,结果显示符合您的要求: