css - 如何使用 SASS 定位列表的最后一个孩子
问题描述
我的 HTML 的结构是这样的 -
<ul id="primary-menu">
<li class="menu-item">
<a>Item 1</a>
<ul class="dropdown-menu">
<li class="menu-item">
<a>Dropdown Item 1</a>
</li>
</ul>
</li>
<li class="menu-item">
<a>Item 2</a>
<ul class="dropdown-menu">
<li class="menu-item">
<a>Dropdown Item 2</a>
</li>
</ul>
</li>
</ul>
我正在尝试定位下拉菜单中的最后一项,“下拉项目 2”
这是我的 SASS -
#primary-menu {
.dropdown-menu {
&:last-child {
.dropdown-item {
width: 424px;
}
}
}
}
但是我的宽度样式出现在这两个项目上。在开发工具中,它看起来像这样 -
#primary-menu .dropdown-menu:last-child .dropdown-item {
width: 424px;
}
如何仅定位第二个下拉项目?
解决方案
对于您的特定 html
#primary-menu > .menu-item:last-child .menu-item:last-child { ... }
如果用 SASS 编写,它将类似于
#primary-menu {
> .menu-item:last-child .menu-item:last-child {
...
}
}
这是假设您在下拉菜单中有更多项目。
您的 css 不起作用,因为您有多个下拉菜单,并且它们都是其父容器的最后一个子容器,因此它将针对所有容器。
您需要定位作为主菜单子项的最后一个菜单项,然后定位菜单项最后一个子项。
#primary-menu > .menu-item:last-child .menu-item:last-child {
background: green;
width: 424px;
}
<ul id="primary-menu">
<li class="menu-item">
<a>Item 1</a>
<ul class="dropdown-menu">
<li class="menu-item">
<a>Dropdown Item 1</a>
</li>
</ul>
</li>
<li class="menu-item">
<a>Item 2</a>
<ul class="dropdown-menu">
<li class="menu-item">
<a>Dropdown Item 2</a>
</li>
</ul>
</li>
</ul>
推荐阅读
- c# - 仅推断具有多个泛型类型的一种类型
- javascript - 变量可以用“this”关键字声明吗?
- xcode - Xcode 似乎在运行脚本构建阶段修改了 bash 脚本中的路径
- excel - ADODB with provider MSDAORA in Powershell
- javascript - 合并来自不同查询的数据而不重复
- sql - Postgres Group by like 模糊逻辑
- sql-server - TSQL XQuery 过滤器仅选择包含至少一个字符(或非数字)的节点
- firebase - 托管在firebase中的React路由器应用程序,子路由返回404
- c# - 如何通过自定义子字符串相等性仅迭代不同的字符串值
- java - java 9999-12-31 iso 日期插入 mongo 结果作为非 iso 日期插入