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

如何在CSS中定位div内的ul/li菜单并设置样式?

如何选择并设置嵌套菜单的样式

首先注意到你的HTML里div的id写了id="=cont",这应该是笔误吧?正常ID不建议以等号开头(虽然浏览器可能兼容,但不符合规范),我先假设是id="cont"来讲解,要是你确实要保留这个特殊ID,后面会补充对应的写法~

一、CSS选择器定位目标元素

要选中<section id="main">里<div id="cont">内的ul和li,有几种实用的选择器方式:

1. 完整层级选择器

这种方式最直观,顺着DOM层级写,不会选错元素:

/* 选中cont下的第一层ul */
#main #cont ul {
  /* 样式代码 */
}

/* 选中cont下第一层ul里的li */
#main #cont ul li {
  /* 样式代码 */
}

/* 选中子菜单里的第二层ul */
#main #cont ul li ul {
  /* 子菜单ul样式 */
}

/* 选中子菜单里的li */
#main #cont ul li ul li {
  /* 子菜单li样式 */
}

2. 简化选择器(利用ID唯一性)

因为ID在页面中是唯一的,所以可以直接用#cont定位,不用写前面的#main,更简洁:

#cont ul {
  /* 第一层ul样式 */
}

#cont ul li {
  /* 第一层li样式 */
}

#cont ul li ul {
  /* 子菜单ul样式 */
}

3. 子选择器(仅选直接子元素)

如果只想选#cont的直接子级ul(而非更深层的嵌套ul),可以用>子选择器:

#cont > ul {
  /* 仅#cont直接子元素的ul */
}

#cont > ul > li {
  /* 仅第一层ul的直接子li */
}

二、示例菜单样式(含下拉子菜单)

这里给你一个常见的横向下拉菜单样式示例,你可以根据需求调整细节:

/* 重置列表默认样式 */
#cont ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex; /* 主菜单横向排列 */
  background-color: #333;
}

/* 主菜单li基础样式 */
#cont ul li {
  position: relative; /* 为子菜单绝对定位做准备 */
  padding: 12px 20px;
  cursor: pointer;
}

/* 主菜单链接样式 */
#cont ul li a {
  color: white;
  text-decoration: none;
  font-size: 16px;
}

/* 子菜单默认隐藏 */
#cont ul li ul {
  position: absolute;
  top: 100%;
  left: 0;
  background-color: #444;
  display: none;
  flex-direction: column; /* 子菜单纵向排列 */
  min-width: 200px;
}

/* 鼠标悬停主菜单li时显示子菜单 */
#cont ul li:hover ul {
  display: flex;
}

/* 子菜单li样式 */
#cont ul li ul li {
  padding: 10px 15px;
  border-bottom: 1px solid #555;
}

/* 子菜单链接hover效果 */
#cont ul li ul li a:hover {
  color: #ffd700;
}

三、特殊ID的处理(如果保留id="=cont")

要是你确实要使用id="=cont"这个特殊ID,CSS里需要转义等号,写法如下:

#main #\=cont ul {
  /* 样式代码 */
}

不过还是建议把ID改成正常的cont,避免不必要的兼容性或书写麻烦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:31:41