You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多级导航子菜单添加底部padding(排除最末子菜单)实现问题

问题原因

你写的.sub-menu:not(:last-child)不生效是因为CSS的:last-child选择器的匹配规则是:选中作为父元素的最后一个子元素的目标节点。你代码里所有的.sub-menu都是它所属的li.menu-item-has-children的最后一个子元素(li下先放a标签再放sub-menu,sub-menu是li的最后一个子节点),所以所有.sub-menu都匹配:last-child,:not(:last-child)自然选不到任何元素。

解决方案

你可以先给所有子菜单统一加20px底部内边距,再单独把整个导航最末尾的一级菜单下的子菜单的底部内边距设为0即可,不会出现内边距叠加的问题:

/* 给所有子菜单加底部内边距 */
.sub-menu {
  padding-bottom: 20px;
}
/* 选中最外层导航最后一个一级菜单下的所有子菜单,取消底部内边距 */
nav > ul > li:last-of-type .sub-menu {
  padding-bottom: 0;
}

如果想一步到位也可以直接用:not选择器排除:

.sub-menu:not(nav > ul > li:last-of-type .sub-menu) {
  padding-bottom: 20px;
}

内容的提问来源于stack exchange,提问作者user10334265

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:24:02