为具有子元素的 <li> 设置样式

Posted

技术标签:

【中文标题】为具有子元素的 <li> 设置样式【英文标题】:Style the <li> that has child elements 【发布时间】:2014-02-01 09:02:38 【问题描述】:

我正在尝试创建一个带有下拉子菜单功能的顶部菜单。 我想定位具有附加子菜单(子元素)的列表项。这样我就可以使用不同的颜色列表样式等来设置它们的样式。

html

<nav>
    <ul><div id="logo">
            <img src="images/design/logo.png"  />
        </div>
        <li>Home</li>
        <li>Parrent Link
            <ul>
                <li>Child Link</li>
                <li>Child Link</li>
                <li>Parrent Link
                    <ul>
                        <li>Child Link</li>
                        <li>Child Link</li>
                        <li>Child Link</li>
                        <li>Child Link</li>
                        <li>Child Link</li>
                    </ul>
                </li>
            </ul>
        </li>
        <li>About</li>
        <li>Gallery</li>
        <li>Contact</li>
    </ul>
</nav>

因此每个 Parrent 链接都获得了不同于其他链接的另一种样式。

【问题讨论】:

nav &gt; ul &gt; li &gt; ul &gt; li &gt; ul &gt; li ... ? 你是什么意思? DEMO HERE 最好的解决方案是给父 &lt;li&gt;'s 一个类 看看这个帖子***.com/questions/5281556/… @Legarndary 看看我的解决方案。有用吗? 【参考方案1】:

您不能选择基于后代元素的元素。那么你不能有这样的选择器:

选择所有包含&lt;ul&gt; 标记的&lt;li&gt; 标记

其他方式可以

选择&lt;li&gt;标签内的所有&lt;ul&gt;标签

你能做的最好的就是分配一个班级:

<li>Child Link</li>
   <li>Child Link</li>
   <li class="sub">Parrent Link
      <ul>
        <li>Child Link</li>
        <li>Child Link</li>
        <li>Child Link</li>
        <li>Child Link</li>
        <li>Child Link</li>
      </ul>
    </li>

【讨论】:

很遗憾。如果我们可以在 CSS 中使用 XPath,那就太棒了。 //li[./ul]【参考方案2】:

每次创建新列表时,我都会更改 ul.class。

这样,如果 ul li 有孩子,它会自动改变,如果我想在那里有孩子。

【讨论】:

【参考方案3】:

您只需要使用 CSS 选择器,如下所示:

ul > li > li 
   // your css code here

W3C site 中有官方文档。

不需要你使用id'sclass标签

【讨论】:

这样,您可以定位 ul 标签的所有 li 直接子代。并非所有li 元素都带有ul。 OP希望列表项有一个子菜单(子元素) 你是对的,对不起!我没有很好地理解这个问题,我编辑了我的答案,所以现在它针对列表元素【参考方案4】:

你可以用 JQuery 做到这一点:example

$(function()
    $('li').each(function()   
        var parent = $(this).parent().parent();
        if(parent.is('li'))
            parent.addClass("colored");
         
    )
);

此解决方案假定您的 HTML 有效并且您正确使用了 &lt;ul&gt;&lt;li&gt;

【讨论】:

以上是关于为具有子元素的 <li> 设置样式的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 CSS 选择和设置所有具有 UL 子元素的 LI 元素? [复制]

如何使用 CSS 选择和设置所有具有 UL 子元素的 LI 元素? [复制]

使用 Tailwind CSS 为 <ul> 中的所有 <li> 项目设置样式

height 100%

我如何一次为每个 li 元素设置样式?

使用.slice()方法仅设置列表中特定元素的样式