【问题标题】:Get those li that have sub children ul获取那些有子孩子 ul 的 li
【发布时间】:2016-12-08 16:35:12
【问题描述】:

如何获得那些有孩子ulli。我想将 CSS 设置为那些 li。我无法设置类,因为li 是动态打印的。当我如下设置 CSS 时,它将所有父级 li 设置为加号。

.ul{
 width:200px;
 position:relative;
}
.ul li{
   position:relative;
 }
.ul > li:before{
 content : '+';
 position: absolute;
 top: 0;
 right: 7px;
}
<ul class="ul">
<li>List 1</li>
<li>List 2</li>
<li>List 3
    <ul>
       <li>Sub List 1</li>
       <li>Sub List 2</li>
       <li>Sub List 3</li>
    </ul>
</li>
<li>List item 4</li>
</ul>
This is style for that.

【问题讨论】:

    标签: html css css-selectors


    【解决方案1】:

    您不能这样做,因为在 CSS 中,您没有 父选择器

    例如,您不能执行以下操作:

    ul < li { color: #ddd; }
    

    甚至类似:

    ul:has(li) { color: #ddd; }
    

    这是因为如果您有这样的parent selector,则会出现很多性能问题,例如重新渲染页面。这就是 W3C 的人没有添加父选择器工具的原因。

    在这里阅读更多内容:

    Is there a CSS parent selector?

    Parent selectors in CSS

    【讨论】:

      【解决方案2】:

      实际上你很接近。诀窍是简单地为.ul 中的每个ul 设置样式。然后将+ 移动到您希望它出现的位置(即在父 li 的第一行之后)。

      .ul {
        width: 200px;
        position: relative;
      }
      .ul li {
        position: relative;
      }
      .ul ul::before {
        content: '+';
        position: absolute;
        top: 0;
        right: 7px;
      }
      <ul class="ul">
        <li>List 1</li>
        <li>List 2</li>
        <li>List 3
          <ul>
            <li>Sub List 1</li>
            <li>Sub List 2</li>
            <li>Sub List 3</li>
          </ul>
        </li>
        <li>List item 4</li>
      </ul>
      This is style for that.

      【讨论】:

        猜你喜欢
        • 2015-01-10
        • 2021-09-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多