我遇到的问题可以用代码更好地描述。
我有一些像下面这样的HTML
<div class="page">
<div class="slider-wrap">
<div class="products ">
<div class="product"></div>
<div class="product"></div>
</div>
</div>
</div>
<div class="page">
<div class="products">
<div class="product"></div>
<div class="product"></div>
</div>
</div>
CSS代码看起来像这样,
.page {
clear: both;
.products {
.product {
float: left;
margin-bottom: 20px;
width: 200px;
height: 100px;
border: 1px solid #ff0000;
background: green;
}
}
}
现在,这些代码导致所有具有"产品"类的DIV都具有绿色背景。
我正在寻找的是,我怎么能不为"滑块包装"容器应用"产品"样式。这意味着,第一页容器的产品不会是绿色的。
使用 CSS 选择器>
。>
所做的是,它仅在它是直接父级时才调用该 CSS 函数。
因此,通过分配.page > .products
,您应用的 css 规则仅在.page
是.products
的直接父级时才会发生。
.slider-wrap
介于.page
和 之间。products
,以便该特定部分不会受到影响,因为.slider-wrap
现在是直接父级。
您可以在 https://developer.mozilla.org/en-US/docs/Web/CSS/Child_combinator
试试这个:
.page {
clear: both;
}
.page > .products .product {
float: left;
margin-bottom: 20px;
width: 200px;
height: 100px;
border: 1px solid #ff0000;
background: green;
}
<div class="page">
<div class="slider-wrap">
<div class="products ">
<div class="product">1</div>
<div class="product">1</div>
</div>
</div>
</div>
<div class="page">
<div class="products">
<div class="product">2</div>
<div class="product">2</div>
</div>
</div>
您可以改为:not()
,仅过滤.page
类中的直接子>
:
.page {
clear: both;
> .products {
.product {
float: left;
margin-bottom: 20px;
width: 200px;
height: 100px;
border: 1px solid #ff0000;
background: green;
}
}
}
https://codepen.io/gc-nomade/pen/YzKJQmv
您可以使用:first-of-type
来覆盖样式。
.page {
clear: both;
}
.page .products .product {
float: left;
margin-bottom: 20px;
width: 200px;
height: 100px;
border: 1px solid #ff0000;
background: green;
}
.page:first-of-type .products .product {
background: tomato;
}
<div class="page">
<div class="slider-wrap">
<div class="products ">
<div class="product"></div>
<div class="product"></div>
</div>
</div>
</div>
<div class="page">
<div class="products">
<div class="product"></div>
<div class="product"></div>
</div>
</div>
你可以使用它来代替:not
.page {
clear: both;
.products {
.product {
float: left;
margin-bottom: 20px;
width: 200px;
height: 100px;
border: 1px solid #ff0000;
background: green;
}
}
.slider-wrap{
.products {
.product {
background: yellow;
}
}
}
}