百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

看这一篇就够了!CSS选择器超详细汇总

myzbx 2025-01-17 12:23 17 浏览

CSS是前端重要的组成部分,它能帮助我们通过选择器给标签添加各种样式效果。大家可能工作中最常用的选择器都是id、class以及标签选择器,但是当面对一些复杂的项目场景时,仅仅用这几个基础选择器去操作就会很麻烦。为了在开发中更加得心应手,本文我们就来看看CSS中的选择器都有哪些以及如何去灵活运用。

一、初级选择器

1.1 基础选择器

通配符(*)选择器

语法:*{属性:属性值;}

说明:*表示页面中所有的元素(标签),我们常用来重置样式。

实例:

*{

margin: 0;

padding: 0;

}

标签(元素)选择器

语法:标签名{属性:属性值;}

说明:标签选择器就是使用结构中元素名称直接作为选择符。

实例:

div{

width: 100px;

height: 100px;

}

类(class)选择器

语法:.class名{属性:属性值;}

说明:当我们使用类选择器时,需要先为相应的元素添加class属性。他的属性值就是我们要使用类名。

实例:

<h1 class="title">标题1</h1>

<h2 class="title">标题2</h2>

.title {

color: red;

}

注意:类名要尽量使用英文表示,不能使用数字或中文命名,并且尽量起一些有意义的名字,让别人能一眼看出来这个类名的作用。

类名可以有多个,多个类名之间要使用空格隔开。我们可以把一些标签元素相同的样式放到一个类调用,从而节省CSS代码,例如版心可以写统一样式。

id选择器

语法:#id名{属性:属性值;}

说明:id选择器是使用元素身上的id属性作为选择符。所以想要使用id选择器,需要先为元素上定义id属性。

实例:

<div id="box"></div>

定义好id之后就可使用#box给对应的div上添加:

#box {

width: 100px;

height: 100px;

background-color: pink;

}

注意:起id名时不能用关键字(所有标签和属性都是关键字),并且一个id名称只能对应文档中一个具体的元素对象,因为id的特殊性,只能代表页面中某一个唯一的元素对象,就好比我们的身份证号,一个人只能对应一个唯一的id。

1.2 结构选择器

后代(包含)选择器

语法:选择器1(父) 选择器2(子){属性:属性值;}

说明:选择器1和选择器2中间用空格隔开,表示选择选择器1中包含选择器2的所有后代元素。

实例:

<div class="box">

<h2>标题1</h2>

<p>段落1</p>

<p>段落2</p>

</div>

.box p {

color: red;

}

子代选择器

语法:选择器1>选择器2{属性:属性值;}

说明:用来选择紧挨着选择器1(父元素)的第一层符合选择器2的子元素。

实例:

<div class="box">

<h2>标题1</h2>

<div>

<h2>标题2</h2>

</div>

</div>

.box > h2 {

color: red;

}

全部兄弟选择器

语法:选择器1~选择器2{属性:属性值;}

说明:选择当前元素所有符合条件的兄弟元素。

实例:

<div class="box">

<h2>标题1</h2>

<p>段落</p>

<h2>标题2</h2>

<h2>标题3</h2>

</div>

p ~ h2 {

color: red;

}

注意:只能选中当前元素后面的元素。

相邻兄弟选择器

语法:选择器1+选择器2{属性:属性值;}

说明:选中当前元素紧挨着的后面的兄弟元素。

实例:上面的案例修改成:

p + h2 {

color: red;

}

注意:只能选中当前元素后面的元素,如果没有紧挨着当前元素就不会产生效果。

并集(群组)选择器

语法:选择器1,选择器2{属性:属性值;}

说明:用于对多个标签定义同样的样式,选择器之间用逗号分隔。

实例:这里我们依然用上述的结构:

p,

h2 {

color: red;

}

交集选择器

语法:选择器1选择器2{属性:属性值;}

说明:用于选择同时符合选择器1和选择器2条件的元素。

实例:

<h2 class="title">标题1</h2>

<h2>标题2</h2>

h2.title {

color: red;

}

二、属性选择器

属性选择器是通过元素的属性以及属性值来选择对应元素的,属性名我们可以自己定义。

属性的或运算

语法:选择器[属性名]{属性:属性值;}

说明:只要选择器元素中有当前属性就会被选中。

实例:

<h2 class="title" name>标题1</h2>

<h2>标题2</h2>

.title[name] {

color: red;

}

属性的与运算

语法:选择器[属性1][属性2]{属性:属性值;}

说明:选择同时包含属性1和属性2的元素。

实例:

<h2 class="title" name>标题1</h2>

<h2 name>标题2</h2>

h2[name][class] {

color: red;

}

属性值的筛选

语法:选择器[属性名='要求']{属性:属性值;}

说明:选择对应的属性值符合要求的元素。

实例:

<h2 class="title" name>标题1</h2>

<h2 class="title2" name>标题2</h2>

h2[class='title'] {

color: red;

}

前缀筛选^

语法:选择器[属性名^='要求']{属性:属性值;}

说明:选择属性值以当前要求开头的元素。

实例:

<h2 class="title">标题1</h2>

<h2 class="title2">标题2</h2>

<h2 class="stitle">标题3</h2>

h2[class^='tit'] {

color: red;

}

后缀筛选$

语法:选择器[属性名$='要求']{属性:属性值;}

说明:选择属性值以当前要求结尾的元素。

实例:这里我们使用上述的结构:

h2[class$='tle'] {

color: red;

}

包含限定*

语法:选择器[属性名*='要求']{属性:属性值;}

说明:选择属性值包含当前要求的元素。

实例:这里我们使用上述的结构:

h2[class*='title'] {

color: red;

}

包含限定~

语法:选择器[属性名~='要求']{属性:属性值;}

说明:选择属性值包含一个给定要求词(单独存在)的元素。

实例:

<h2 class="title">标题1</h2>

<h2 class="xx title xx">标题2</h2>

<h2 class="stitle">标题3</h2>

h2[class~='title'] {

color: red;

}

包含限定|

语法:选择器[属性名|='要求']{属性:属性值;}

说明:选择属性值只有给定要求或者是以给定要求开头后面用“-”拼接其他字符串的元素。

实例:

<h2 class="title">标题1</h2>

<h2 class="title-xx">标题2</h2>

<h2 class="title.xx">标题3</h2>

<h2 class="xx-title">标题4</h2>

h2[class|='title'] {

color: red;

}

三、伪类选择器:

CSS伪类选择器用于像某些元素添加特殊效果,比如第一个元素、某个元素的子元素、鼠标滑过的元素。

3.1 动态伪类选择器

动态伪类选择器在日常工作中主要用于超链接标签。

说明:前4个超链接伪类选择器联合使用时,就注意他们的顺序,a:hover必须在a:link和a:visited之后,a:active必须在a:hover之后。错误的顺序有时会使超链接的样式失效。

a:link{color:red;} /* 未访问的链接状态 */

a:visited{color:green;} /* 已访问的链接状态 */

a:hover{color:blue;} /*鼠标滑过链接状态*/

a:active{color:yellow;} /*鼠标按下去时状态*/

3.2 结构伪类选择器

结构伪类指利用页面的布局结构选择响应的元素。

注意:结构伪类选择器中,子元素的序号是从1开始的,所以,当参数n的计算结果为0 时,将不选择任何元素。

3.3 其他伪类选择器

四、伪元素选择器::

伪元素选择器可以帮助我们利用CSS创建新的标签元素(伪元素),从而达到简化结构的目的。

注意:利用before和after创建的元素属于行内元素,而这个元素我们不能在结构中看到,所以称它为伪元素。

五、选择器权重

在CSS中我们用四位数字表示选择器的权重,方便我们去判断样式的优先级。

当权重相同时,样式遵循就近原则,CSS中哪个选择器最后定义,就执行哪个选择器的样式。

!important代表权重最高(最终的样式)。

background-color:skyblue!important;

所以最终样式的优先级应该为:

!important>行内样式>id选择器>class选择器=伪类选择器=属性选择器>标签选择器=伪元素选择器>通配符选择器>继承样式。

总结

以上就是为大家总结的CSS选择器的种类及功能。总的来说,碰到各种各样的工作场景,我们需要灵活运用这些选择器,并且当选择器样式冲突时,我们就得及时发现并且完成权重的解析从而解决问题。解析规则大致如下:

  • 当不同选择器的样式设置有冲突时,高权重选择器的样式会覆盖低权重选择器的样式。
  • 相同权重的选择器,样式遵循就近原则。哪个选择器样式最后定义,就会采用哪个样式。
  • 需要注意,CSS具有继承性,即子标签会继承父标签的某些样式。但是继承样式没有权重。所以在嵌套结构中,不管父元素样式的权重多大,在子元素定义的样式都会覆盖继承来的样式。

相关推荐

一键生成高颜值图表!让你的文字瞬间有画面感,职场人必备!

哈喽,打工人们!忙碌的周中,大熊又来给你们带来一个超实用的效率神器啦!这次的宝藏网站绝对是那种用过就离不开的"真香"型产品!假设你明天就要做重要汇报,可面对一大堆密密麻麻的文字材料,你...

批量将 Word 转换为 PDF/Excel/Txt/图片等多种格式

Word文档是我们工作中经常会打交道的一种文档格式,我们也经常会有需要对Word文档进行格式转换的需求,比如将Word格式转换为PDF、将Word文档转换为Excel、将Word...

绝了!一键用AI生成高颜值动态PPT(附详细步骤+Prompt)

大家好,我是一名酷爱研究AI的产品经理,最近我有个新发现:那些花了你3天做出来的PPT,现在用AI可以1小时搞定!而且颜值还高!为什么AI做PPT比传统方式效率高10倍?我用一张图就能告诉你:AI生成...

ztext - 简单几行代码创建酷炫3D特效文字的开源JS库

把网页上的文字变成酷炫的3D风格,还能制作旋转动效,有了ztext.js,只需要几行代码。ztext能做什么ztext.js是一个能把常规的平面文字变成3D样式的前端开源代码库,让开发者...

文字内插入小图片,也太可爱了吧(文字中怎么插图片)

图文排版H5手机版秀米有小伙伴留言问添加图片的时候可不可以把图片添加到文字之间比如下面这句话中的小贴纸图片后面可以接着输入文字其实吧这就是咱们的『文字内插入小图片』功能嘛可以用来在文字内加个表情包又...

Linux环境下C++代码性能分析方法(linux怎么写c++代码)

技术背景在开发C++应用程序时,找出代码中运行缓慢的部分是进行性能优化的关键。在Linux系统上,有多种工具和方法可用于对C++代码进行性能分析,每种方法都有其特点和适用场景。实现步骤手动中断调试法在...

SVG互动图文,让你的文章更有趣!教你4种简单易学的黑科技玩法!

如果你是一个公众号创作者,那么你一定想知道如何让你的文章更加吸引人,更加有趣,更加有创意。你可能已经尝试过各种图文排版技巧,但是你是否知道,有一种黑科技可以让你的文章变得更加酷炫,更加互动,更加爆款?...

Videoscribe怎么实现实心中文汉字的手绘制作

很多朋友在制作手绘视频的时候,不知道怎么输入实心的中文汉字,之前我们已经给大家分享了怎么输入汉字的方法,但是有一点遗憾的是输出的汉字是空心的手绘展示,在视觉上并不是非常的美观。经过大家不断的探索,终于...

一款用于将文本转化成图表的现代化脚本语言

大家好,又见面了,我是GitHub精选君!今天要给大家推荐一个GitHub开源项目terrastruct/d2,该项目在GitHub有超过10.3kStar,用一句话介绍该项目就是:...

探秘 Web 水印技术(制作水印网站)

作者:fransli,腾讯PCG前端开发工程师Web水印技术在信息安全和版权保护等领域有着广泛的应用,对防止信息泄露或知识产品被侵犯有重要意义。水印根据可见性可分为可见水印和不可见水印(盲水印)...

不忍心卸载的五款神仙工具(不忍心卸载的五款神仙工具是什么)

001.效率工具uTools-装机必备的生产力工具集uTools是一款非常强大的可以装下几乎所有效率工具的电脑生产力工具集,目前拥有Windows、Mac和Linux三个版本。软件界面...

「SVG」飞花令!这份最高检工作报告“超有料”

原标题:【SVG】飞花令!这份最高检工作报告“超有料”栏目主编:秦红文字编辑:沈佳灵来源:作者:最高人民检察院...

svg|2025政府工作报告,有没有你关心的数据?

··<setattributeName="visibility"begin="click+0s"dur="1ms"fill="freeze"restart="never"to="hi...

videoscribe只能输入英文,如何输入中文文本?

videoscribe只能输入英文,如何输入中文文本?打开VideoScribe软件,打开要添加中文字体的位置。打开Photoshop并在文件中创建一个新的透明背景图层。注意:必须是透明背景层。...

五个流行的SVG在线编辑器(svg编辑工具)

随着响应网络的发展,越来越多的高质量的SVG在线编辑器被公众所熟知。SVG矢量图形也越来越受欢迎,以便在任何设备上呈现图像,甚至一些易于使用的SVG在线编辑器,可以替代PS,本文总结了五种流行的SVG...