代码之家  ›  专栏  ›  技术社区  ›  Jean-Philippe Encausse

CSS通用同级选择器vs头

  •  2
  • Jean-Philippe Encausse  · 技术社区  · 15 年前

    这是一个基本但棘手的问题,关于使用一般兄弟选择器设置头的样式。很多人在使用它(和写书)上犯了错误。对我来说似乎没用:

    <h1>Title 1</h1>
    <p>text</p><p>text</p>
    <h2>Title 1.1</h2>
    <p>text</p><p>text</p>
    <h3>Title 1.1.1</h3>
    <p>text</p><p>text</p>
    <h2>Title 1.2</h2>
    <p>text</p><p>text</p>
    <h3>Title 1.2.1</h3>
    <p>text</p><p>text</p>
    

    我想给我所有的P加一个边距:

    H1 ~ P { margin-left: 1em; }
    H2 ~ P { margin-left: 2em; }
    H3 ~ P { margin-left: 3em; }
    

    简直不行!

    因为1.2节中的P是在H3之后,由H3命名为H2的整数。

    • 我不能用H2+P,因为我可以有很多P。
    • 我不想用 <div> 在P的周围太乱了。
    • 如果我不在这个代码上放一个包装器,在这个代码之后页面中的所有P都将被选中!

    是否有方法确定范围?或者巧妙地处理这个问题?

    1 回复  |  直到 15 年前
        1
  •  1
  •   BoltClock    14 年前

    尝试将css反过来(最后一个定义获胜,所以我认为这是可行的(但我还没有测试过))

    新CSS:

    h3 ~ p { margin-left: 3em; }
    h2 ~ p { margin-left: 2em; }
    h1 ~ p { margin-left: 1em; }