Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CSS选择器

CSS选择器

作者头像
赤蓝紫
发布于 2023-01-02 05:16:13
发布于 2023-01-02 05:16:13
1.2K00
代码可运行
举报
文章被收录于专栏:clzclz
运行总次数:0
代码可运行

CSS 选择器

1. 标签选择器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div></div>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
div {
  width: 100px;
  height: 100px;
  background-color: pink;
}

2. ID 选择器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div id="box"></div>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#box {
  width: 100px;
  height: 100px;
  background-color: pink;
}

3. 类选择器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="box"></div>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.box {
  width: 100px;
  height: 100px;
  background-color: pink;
}

4. 通配符选择器*

匹配任何标签。页面标签越多,效率越低

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<h3>Hello</h3>
<span>World</span>
<div>!</div>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* {
  color: red;
}

5. 后代选择器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="father">
  Father
  <div>
    Son
    <div>孙子</div>
  </div>
</div>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.father div {
  color: red;
}

6. 子元素选择器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="father">
  Father
  <div>
    Son1
    <div>孙子</div>
  </div>
</div>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
div {
  color: blue;
}

.father > div {
  color: red;
}

7. 交集选择器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<h3>h3</h3>
<div class="test">.test</div>
<h3 class="test">h3.test</h3>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
h3.test {
  color: red;
}

8. 并集选择器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<h3>h3</h3>
<div class="box">box</div>
<span>span</span>
<h2>h2</h2>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
h3,
.box,
span {
  color: red;
}

9. 属性选择器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<a href="javascript:;" title="aa hh" class="a b">aa</a>
<a href="javascript:;" class="b a c">bb</a>
<a href="javascript:;" title class="a">cc</a>
<a href="jsvascript:;" title="ac" class="a-test">ac</a>
<a href="jsvascript:;" title="ca">ca</a>

[attr]

选择存在 attr 属性的元素, attr 属性没有值也会选中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a[title] {
  /** 选择存在title属性的<a>元素, title属性没有值也会选中**/
  color: red;
}

[attr=value]

选择存在 attr 属性且属性值为 value 的元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a[title="aa"] {
  /** 选择存在title属性且属性值为aa的<a>元素**/
  color: red;
}

[attr*=value]

选择存在 attr 属性且属性值中包含 value 值的元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a[title*="a"] {
  /** 选择存在title属性且属性值中有a的<a>元素**/
  color: red;
}

[attr^=value]

选择存在 attr 属性且属性值中以 value 值开头的元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a[title^="a"] {
  /** 选择存在title属性且属性值以a为开头的<a>元素**/
  color: red;
}

[attr$=value]

选择存在 attr 属性且属性值中以 value 值结尾的元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a[title$="a"] {
  /** 选择存在title属性且属性值以a为结尾的<a>元素**/
  color: red;
}

[attr~=value]

选择存在 attr 属性,且该属性是一个以空格作为分隔的值列表,其中至少有一个值为 value 的元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a[class~="a"] {
  /** 选择存在class属性,且属性值是以空格作为分隔的值一系列值,其中至少有一个属性值是a**/
  color: red;
}

[attr|=value]

选择存在 attr 属性,且属性值为“value”或是以“value-”为前缀的元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a[class|="a"] {
  /** 选择存在class属性,且属性值为“a”或是以“a-”为前缀的元素**/
  color: red;
}

10. 伪类选择器

伪类:同一个元素,有不同的状态,有不同的样式

可分为两种。

静态伪类:只能用于超链接的样式

  • :link:超链接点击之前
  • :visited:超链接被访问之后
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<a href="http://www.xxx.com">xxx</a>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a:link {
  color: red;
}

a:visited {
  color: pink;
}

动态伪类所有标签都使用的样式

  • :hover:鼠标悬停在标签上的时候
  • :active:鼠标点击标签,但是还没松手的时候
  • :focus:标签获得焦点时的样式
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<input type="text" value="获得焦点变色(:focus)" />
<p>悬停变色(:hover)</p>
<div class="box">按住变色(:active)</div>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
input:focus {
  color: red;
}

p:hover {
  color: blue;
}

.box:active {
  color: purple;
}

超链接的四个状态

  • :link
  • :visited
  • :hover
  • ` :active

css 中,超链接的四个状态必须按固定的顺序写: :link -> :visited -> :hover -> :active,否则可能会失效

按顺序一切正常

<a href="http://www.com">www</a>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a:link {
  color: red;
}

a:visited {
  color: blue;
}

a:hover {
  color: purple;
}

a:active {
  color: pink;
}

:active 换到最前面去:按住链接时,不会变粉色了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a:active {
  color: pink;
}

a:link {
  color: red;
}

a:visited {
  color: blue;
}

a:hover {
  color: purple;
}

原因:

css 样式是由权重的,上面的权重都相同,所以 a:hover 的样式会覆盖掉前面的 a:active 的样式,因为链接被激活时,鼠标也是悬停在链接上方的,所以效果是什么样,就看谁没有被覆盖了。

知道原理后,就可能会提出,这样的话,就没有必要一定要按照顺序了,只需要提高权重就行了。如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a:active {
  color: pink !important;
}

a:link {
  color: red;
}

a:visited {
  color: blue;
}

a:hover {
  color: purple;
}

虽然这样子确实可以,但是按照代码规范就可以避免的问题,为什么要绕弯路呢?这样做以后也可能会引发出大问题。

11. 相邻兄弟选择器

相邻兄弟选择器 (+) 介于两个选择器之间,当第二个元素紧跟在第一个元素之后,并且两个元素都是属于同一个父元素的子元素,则第二个元素将被选中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div>
  <p></p>
  <h2>相邻兄弟选择器</h2>
  <p>1</p>
  <p>2</p>
</div>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
h2 + p {
  color: red;
}

12. 通用兄弟选择器

a~b:a 和 b 同级,选择 a 元素之后所有同级的 b 元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div>
  <p></p>
  <h2>通用兄弟选择器</h2>
  <p>1</p>
  <p>2</p>
</div>

<p>不同级</p>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
h2 ~ p {
  color: red;
}

13. :nth-child() 选择器

:nth-child()这个伪类选择器会先找到当前元素的兄弟元素,然后按位置先后顺序从 1 开始排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Myself</title>
    <style>
      p:nth-child(2) {
        color: red;
        /* 先把p的兄弟元素找出来,排序,因为h2也是p的兄弟元素,所以h2的序号是1,所以p-1会变红 */
      }

      /* ele:nth-child()选择器是用来选择符合条件的ele元素的,所以p:nth-child(1)不会选择到任何元素,因为没有序号为1的p元素 */
    </style>
  </head>

  <body>
    <h2>h2-1</h2>
    <p>p-1</p>
    <p>p-2</p>
    <p>p-3</p>
    <p>p-4</p>
    <p>p-5</p>
    <p>p-6</p>
    <p>p-7</p>
    <p>p-8</p>
  </body>
</html>

其他用法:

如果:nth-child()括号中不是数字而是表达式,如 2n + 1,n 是从零开始整数,所以会选择序号为 1, 3, 5, … , 2n+1 的元素。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
p:nth-child(2n + 1)  /* 表示选中序号为奇数的p元素,这里的n是从零开始的 */
p:nth-child(2n)  /* 表示选中序号为偶数数的p元素 */

p:nth-child(odd)	/* 表示选中序号为奇数的p元素 */
p:nth-child(even)	/* 表示选中序号为偶数的p元素 */

p:nth-child(n + 3)	/* 表示选中序号大于等于3的p元素 */
p:nth-child(-n + 3)	/* 表示选中序号小于等于3的p元素 */

:nth-last-child()和:nth-child()用法类似,不同的是它从结尾开始排序。

14. :nth-of-type()选择器

用法和:nth-child()选择器类似。

不同的是::nth-of-type()选择器是把要选择的元素按先后顺序排序。如下面的例子,p:nth-of-type(2)会先把所有的 p 标签排序,而不是把 p 标签的兄弟元素进行排序,所以变红的就是 p-2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Myself</title>
    <style>
      p:nth-of-type(2) {
        color: red;
      }
    </style>
  </head>

  <body>
    <h2>h2-1</h2>
    <p>p-1</p>
    <p>p-2</p>
    <p>p-3</p>
    <p>p-4</p>
    <p>p-5</p>
    <p>p-6</p>
    <p>p-7</p>
    <p>p-8</p>
  </body>
</html>

15. :first-child 选择器

和:nth-child(1)用法一样

16. :first-of-type 选择器

和:nth-of-type(1)用法一样

参考链接:

MDN Web Docs (mozilla.org)

CSS 选择器:伪类(图文详解) - 千古壹号 - 博客园 (cnblogs.com)

CSS 的四种基本选择器和四种高级选择器Jack-CSDN 博客高级选择器

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CSS基础之伪类选择器的总结
在这篇博客中,我会结合具体例子来分析伪类选择器(可能概念性不是很强,但是好用 ~ )
xinxin-l
2022/03/29
7060
CSS基础之伪类选择器的总结
css选择器
下面是一张取自w3cschool的css选择器表 链接地址:http://www.w3school.com.cn/cssref/css_selectors.asp 选择器 例子 例子描述 CSS .class .intro 选择 class="intro" 的所有元素。 1 #id #firstname 选择 id="firstname" 的所有元素。 1 * * 选择所有元素。 2 element p 选择所有 <p> 元素。 1 element,element div,p 选择
lonelydawn
2018/02/09
1.1K0
深入解析 CSS 选择器
CSS 选择器对 HTML 页面中的元素实现一对一,一对多或者多对一的控制,从而给指定元素添加样式。同时还要考虑一个元素被赋予多个样式时如何生效的问题,这个就和选择器优先级相关了。
政采云前端团队
2021/04/23
7370
深入解析 CSS 选择器
CSS选择器大全
通配符选择器 通配符选择器可代表给所有的标签添加样式   *{   margin:0px;   Padding:0px;   } class选择器 适合class属性值的选择器   .classSelector{   background-color:cyan;   } id选择器 适合id属性值的选择器   #idSelector{   background-color:red;   } 标签选择器 单一的标签选择器   span{   background-color:gold;   display:b
yechaoa
2022/06/10
3090
CSS选择器
像一串英文字母aaa会看做一行,浏览器认为中文可以随意换行,英文单词或者连字符可以换行,如果是连续的字母没有意义,不会换行,可以用下面的进行换行
Y编程者
2024/08/10
1790
CSS选择器
学习《CSS选择器Level-4》不完全版
选择器是CSS的核心组件。本文依据W3C的Selectors Level 4规范,概括总结了Level1-Level4中绝大多数的选择器,并做了简单的语法说明及示例演示。希望对程序员有所助益。
毛瑞
2019/04/10
9970
学习《CSS选择器Level-4》不完全版
全栈之前端 | 2.CSS3基础知识之选择器学习
在上一章节,作者针对CSS选择器做了一个简单介绍有那些选择器, 本章将表中的选择器进行一一实践展示。
全栈工程师修炼指南
2023/10/31
2580
全栈之前端 | 2.CSS3基础知识之选择器学习
前端学习(15)~css3学习(九):选择器详解
CSS3在CSS2基础上,增强或新增了许多特性, 弥补了CSS2的众多不足之处,使得Web开发变得更为高效和便捷。
Vincent-yuan
2020/03/19
5320
CSS选择器
在模块定义不太稳定的阶段,浏览器会采用厂商前缀实现某个特性。它允许早起采纳者试用浏览器实现的新属性。
奋飛
2019/08/15
1.5K0
【面试题解】前端人必须掌握的13种CSS选择器
有时也叫做 类型选择器 或者是 元素选择器,因为它在文档中选择的是 HTML 标签/元素。
一尾流莺
2022/12/10
6820
【面试题解】前端人必须掌握的13种CSS选择器
CSS高级选择器
07.31自我总结 CSS高级选择器 一.伪类选择器 对于之前的类选择器的补充类再定义一个别名 举例 <div class='a a-1'>123</div> 其中a为类,a-1为伪类,伪类也是一种类,他们之间用宫格隔开 我们选择该标签的时候可以.a.a-1,也有.a,也可以.a-1 常用的两个伪类选择器 伪类选择器都是用:连接的 类名:nth-child(N):先确定位置,再筛选选择器 在同一结构下都是相同选择器时使用 类名:nth-of-type(N):先确定选择器,在匹配位置 在同一结构下不全是相
小小咸鱼YwY
2019/09/11
8360
CSS选择器详解
最近在做一些面试的工作,我经常会问的一个问题就是:CSS中有哪些选择器。我往往得到的答案就是id选择器啊、class选择器啊,再追问下去就没了,这让我很是意外! 看来这基础的东西,大家都说很重要,可真正能静下心来去看的并不多,更别说在项目中灵活使用了! 元素选择器 通配选择器 * { sRules } 选定文档所有的元素 /** 设置所有元素为红色 **/ * {   color: red; } <div>我是div</div> <p>我是p</p> 类型选择器 E { sRules } 选定指定的文
laixiangran
2018/04/11
2.9K0
CSS选择器知识点整理
1、class 和 id 的使用场景? id:指定标签的唯一标识。根据提供的唯一id号,快速获取标签对象。如:document.getElementById(id)。id属性的值,在当前的page页面
小胖
2018/06/27
1.1K0
CSS选择器笔记
这几天拿出来看了一下,发现很多都忘记了。所以,我决定把它们贴在这里,方便以后查看。这对其他朋友应该也是有用的,毕竟选择器是制作网页效果的第一步。
ruanyf
2018/09/10
5360
《CSS选择器世界》读书笔记
CSS选择器可分为4类:选择器(如body{})、选择符(如相邻兄弟关系选择符+)、伪类(如:hover)和伪元素(如::before)。
kai666666
2024/07/11
1130
《CSS选择器世界》读书笔记
CSS选择器如此之多,你了解多少?
css选择器非常之多,常见的如class选择器,id选择器,标签选择器等等。每个的用法都有所区别,虽然很多都能到达同样的效果,但还是有一些更优的选择。
Javanx
2019/09/04
4910
css3选择器总结[通俗易懂]
优先级:离标签越近的选择器优先级越高,所以相同权重的样式后者才生效;内联样式表>头部样式表>导入样式表。
全栈程序员站长
2022/09/14
3140
CSS3选择器介绍及用法总结[通俗易懂]
CSS3新增了很多强大的选择器 它可以让我们少写一些js事件脚本 我们先来看看各个版本的选择器有哪些 注: ele代表element元素 attr代表attribute属性,val代表value属性值 :xxx都属于伪类选择器,::xxx都属于伪元素选择器 有名字的选择器我尽量细分了 #CCS1选择器#
全栈程序员站长
2022/09/14
1.5K0
CSS3选择器介绍及用法总结[通俗易懂]
零基础学前端开发之CSS3深入选择器
如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器(。
张哥编程
2024/12/19
840
零基础学前端开发之CSS3深入选择器
CSS快速入门(一)
目录 CSS快速入门 简介 语法结构 如何注释 引入方式 选择器 简介 选择器列表 选择器的优先级 基本选择器 标签选择器 类选择器 id选择器 通用选择器(不重要) 组合选择器 后代选择器 儿子选择器 相邻选择器 弟弟选择器 属性选择器 语法 示例 分组与嵌套 伪类选择器 语法 示例 标准伪类索引 选择器参考表 网站分享 CSS快速入门 简介 层叠样式表 — 也就是CSS — 是你在HTML之后应该学习的第二门技术。HTML用于定义内容的结构和语义,CSS用于设计风格和布局。比如,您可以使用CSS来
HammerZe
2022/03/24
9720
CSS快速入门(一)
相关推荐
CSS基础之伪类选择器的总结
更多 >
LV.1
这个人很懒,什么都没有留下~
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验