CSS 选择器的几种方法

CSS 选择器的几种方法

业余选手爱记笔记

CSS权威指南(第四版)是一本好书,看了一遍第二章的选择符有些受益,记录一点读后感和练习。我已将该书电子版的PDF书签整理完善,供大家下载:

CSS权威指南中文第四版 PDF电子版下载详见 https://download.csdn.net

示例代码

在多个按钮之间,加一个竖向管道 | 分隔符,按钮的个数是变化的,示例图如下,现在需要将第 2 到第 n 个按钮前加左边框,用 css 选择器有哪几种方法?

html 示例代码:

html 复制代码
 <!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>选择器练习</title>
    <style>
        #nav>li { width: 100px; display: inline-block; text-align: center; }
        #nav>li>a { text-decoration: none; color: inherit; }
        #nav>li>a:hover, #nav>li>a:focus { color: #f30327; font-weight: 700; }
    </style>
</head>
<body>
    <p>示例:在按钮之间添加一个分隔符</p>
    <ul id="nav">
        <li id="btn1"><a href="#mon">张三</a></li>
        <li id="btn2"><a href="#tues">李四</a></li>
        <li id="btn3"><a href="#wen">王麻子</a></li>
    </ul>
</body>
</html>

用否定伪类+伪元素

  1. 不选择 ul 的第一个子代,用伪元素 :first-child
css 复制代码
li:not(li:first-child) {border-left: 1px solid #ccc;}
  1. 不选择 ul 的第一个子代,用伪元素 :nth-child(1),指定第1个li
css 复制代码
li:not(li:nth-child(1)) {border-left: 1px solid #ccc;}
  1. 不选择 id 为 btn1 的 li,需要标记列表 id
css 复制代码
li:not(#btn1) {border-left: 1px solid #ccc;}

用代数式法

  1. 选择 li 元素,并从第 2 个开始,n=0,1,2...
css 复制代码
li:nth-child(n+2) {border-left: 1px solid #ccc;}

同胞选择符 ~

  1. 选择 id 为 btn1 的同胞元素,btn1 是第一个按钮,他的同胞就是其他按钮
css 复制代码
#btn1~li {border-left: 1px solid #ccc;}
  1. 不用 id 选择器也可以,因为第一个按钮也是 li 元素,可以用如下写法
css 复制代码
li~li {border-left: 1px solid #ccc;}

相邻同胞选择符 +

  1. 看起来和第6种方法很相似,但他们是有区别的,前一个 li 并不特指第一个按钮。如果你有怀疑,可以用 #btn1+li 选择符测试,结果只是在第 1 个和第 2 个按钮之间添加了分隔符
css 复制代码
li+li {border-left: 1px solid #ccc;}

以上 7 种 CSS 选择器的写法均能实现相同效果,本人水平有限,可能还有其他方法。

相关推荐
treasure1408 小时前
【复古】浅尝Django前后端不分离
前端·css·python·django·bootstrap·html·web
jay神9 小时前
基于 YOLOv8 的手势识别系统(Web 版)
前端·人工智能·python·深度学习·yolo·计算机视觉·计算机毕业设计
屏什么录9 小时前
长时间录屏中途崩溃:MP4 打不开的 6 种救回方案与参数设置
前端·音视频开发
code_Bo9 小时前
不只命令行:我把跨 Agent 会话同步做成了桌面应用
前端·javascript·后端
kyriewen10 小时前
AI 能把页面写出来,为什么改个需求就开始崩?
前端·javascript·人工智能
涛涛ing11 小时前
2026年最值得关注的前端变化,藏在“默认值”里
前端
亿元程序员13 小时前
太牛了!这AI做出来的游戏,居然还能变现!
前端
hellice13 小时前
闪传 FlashDrop 实战:我用 300 行 Node 代码做了个「4 位取件码」临时文件中转站
前端·产品
用户08297732600513 小时前
RTX 5500 MIG 踩坑记录:切分之后模型跑不起来,排错整整一下午
前端
Lank_M13 小时前
AI 放大后的图更清楚,但它不能当原图入库
前端