如何停止 CSS 级联或如何仅针对第 2 个 child 而不是第 3 个 CSS

How to stop CSS cascading or how to target only 2nd child and not 3rd with CSS

我有三个容器,像这样

container
  |
  + container
      |
      + container

我想通过应用 class "minisized" 缩小中间容器。但是,这也会缩小第三个容器。

是否可以仅针对第二个容器而不是第三个容器?我想将 class 添加到嵌入式或容器中,但如果可能的话不添加到单独的行中。

------------------------更新---------------- ----------

我能够使 Tarun 和 Imashcha 的回答都有效。

根据 Imashcha 的回答更新了以下代码。

------------------------更新---------------- ----------

<style type="text/css">

    .container
    {
        border-width: 10px;
        border-style: solid;
        border-color: rgb(0,0,255);

        margin: 10px;
    }

    .container .row
    {
        border-width: 2px;
        border-style: solid;
        border-color: rgb(255,128,0);
    }

    .container.minisized>.row1 { display: block;}
    .container.minisized>.row2 { display: none;}
    .container.minisized>.row3 { display: none;}
    .container.minisized>.row4 { display: none;}

</style>

<div class="container">
    <div class="row row1">row 1</div>
    <div class="row row2">row 2</div>
    <div class="row row3">row 3</div>
    <div class="embedded">
        <div class="container minisized"> <!-- "container" --> <!-- "container minisized" -->
            <div class="row row1">row 1</div>
            <div class="row row2">row 2</div>
            <div class="row row3">row 3</div>
            <div class="embedded">
                <div class="container">
                    <div class="row row1">row 1</div>
                    <div class="row row2">row 2</div>
                    <div class="row row3">row 3</div>
                    <div class="embedded">
                    </div>
                    <div class="row row4">row 4</div>
                </div>
            </div>
            <div class="row row4">row 4</div>
        </div>
    </div>
    <div class="row row4">row 4</div>
</div>

我认为 nth-child() 选择器可能是有趣的

问题是您指的是 .embedded.minisized 的所有 .rowX children。 要仅访问容器的直接 children,请使用以下内容:

    .embedded.minisized>.container>.row1 { display: block;}
    .embedded.minisized>.container>.row2 { display: none;}
    .embedded.minisized>.container>.row3 { display: none;}
    .embedded.minisized>.container>.row4 { display: none;}

最简单的方法是添加新的 class 并相应地设置样式。

如果这不是一个选项,考虑到您的标记,您需要一些奇怪的选择器,例如:

body(assuming body is above your first container in DOM) > .container > .embedded > .container { //minisize rules } 

这样您就可以按特定顺序定位直接子级 您还可以将新的 class 添加到 JS 中的中间那个,但这只会让您的渲染变得不稳定。

css 正在应用于所有 children inside .embedded.minisized 您必须立即 child 应用 css。使用“>”css 选择器选择立即 child。使用下面的 CSS:-

        .container .embedded.minisized > .comtainer > .row1 { display: block;}
        .container .embedded.minisized > .container > .row2 { display: none;}
        .container .embedded.minisized > .container > .row3 { display: none;}
        .container .embedded.minisized > .container > .row4 { display: none;}