每个开发人员都应该知道的10个CSS选择器

2023-11-01

对于任何网站而言, 要在用户上产生良好印象是什么? …

是的…它是任何网站的用户界面。每个开发人员都知道为用户创建美观的设计以便与任何网站进行交互非常重要。如果你不熟悉CSS及其选择器, 那么在最短的时间内巧妙地对网页进行样式设置并不是一件容易的事。的CSS选择器针对HTML文档中的指定元素, 并帮助开发人员将样式应用于网页。你可能了解一些基本的CSS选择器, 但要比基本知识多一些, 可以更快地实现目标。使用正确的CSS选择器可最大程度地减少代码量, 使其更具可读性, 并使CSS将来更易于维护。

有各种各样的CSS选择器可用。让我们讨论一些重要的事情, 以简化你在前端开发中的工作。

 

1.元素或组选择器

这是在CSS中使用的最基本的选择器之一。元素选择器允许你选择所有具有相同指定元素名称的元素并为其指定样式。如果有多个具有相同样式定义的元素, 则可以将所有元素分组并将样式应用于所有元素。这样, 你就可以最小化代码, 因为你不必为每个元素都使用类。

范例1:此处, 页面上的所有段落都将右对齐, 文字颜色为黄色

p {
  text-align: right;
  color: red;
}

范例2:现在, 看下面的CSS代码…

h2 {
 text-align: center;
 color: yellow;
}
h3 {
 text-align: center;
 color: yellow;
}
p 
 text-align: center;
 color: yellow;
}

你可以使用组选择器将上述代码最小化, 并编写如下相同的代码:

h2, h3, p {
 text-align: center;
 color: yellow;
}

 

2. #id选择器

id选择器是CSS中另一个功能最强大的通用选择器。使用#符号后加上ID名称, 可以按ID定位, 并将样式应用于具有选定ID的所有指定元素。使用此选择器听起来很不错, 因为它很简单, 但是请记住, id对于整个网页应该是唯一的。这意味着你不允许为多个元素分配ID选择器。如果你不分配唯一ID, 则在处理JavaScript中的特定元素时会遇到问题。另外, 你的代码将不会被W3C验证, 并且你将面临跨不同浏览器的兼容性问题。因此, 与其创建许多#id的use类或其他任何样式逻辑来代替, 否则以后很难维护CSS。

例子:

#box{
width : 250px;
height: 250px;
background : yellow;
}

 

3. .class选择器

类选择器是开发人员使用的最有用的通用选择器。你可以使用句点(。)和类名来定义类选择器。它为具有指定类属性的所有元素提供样式。它与id选择器相似, 但唯一的区别是, 类选择器使你可以定位页面中的多个元素。你还可以在HTML元素上使用多个类(以空格分隔)。

范例1:

.center{
text-align: center;
color: yellow;
}

范例2:在以下示例中, 仅会影响类别为" center"的p个元素。

p.center {
 text-align: center;
 color: yellow;
}

 

4.属性选择器

使用属性选择器, 你可以通过给定属性的名称或值选择所有元素, 然后对它们应用样式。

范例1:以下是HTML行的示例, 该行具有" rel"属性, 其值为" newfriend"

<h3 id="title" class="friend" rel="newfriend">David Walsh</h3>

让我们看看如何在上一行中将属性选择器用于" rel"属性。

h3[rel="newfriend"] {
  color: yellow;
}

开发人员经常在代码中为"复选框"元素使用此选择器。阅读下面给出的示例。

范例2:

input[type="checkbox"] {
     color: purple;
}

它也经常用于代码中的定位标记。阅读下面给出的示例。

范例3: 

a[title] {
  color: red;
}

组合器:这些 用于通过使用选择器之间的关系将样式应用于html元素。组合器使你可以混合简单的选择器并在它们之间应用逻辑。让我们讨论CSS中的四个不同的组合器选择器。

  • 后代选择器
  • 子选择器
  • 相邻兄弟选择器
  • 通用兄弟选择器

 

5.后代选择器

后代选择器仅将样式应用于指定元素的后代。当你只需要为某些特定元素应用样式时, 此选择器非常有用。例如, 如果你只需要定位" h2"(而不是所有" h2"标记), 而不是定位所有" h2"标记, 该怎么办?在这些情况下, 你可以使用后代选择器。

范例1:

div h2 {
 background-color: green;
}

范例2:你也可以建立一个链并使用后代选择器。

ol li a {
 background-color: green;
}

范例3:在下面的示例中, 你可以将其与类选择器混合使用。

.box a{
color :green;
}

 

6.子选择器

子选择器允许你选择所有属于指定元素的子元素。

范例1:

div > h1 {
 background-color: green;
}

子选择器和子代选择器之间的区别在于后者将仅选择直接子代。

范例2:

CSS:

span {
 background-color: white;
}

div > span {
 background-color: yellow;
}

HTML:

<div>
 <span>Span #1, in the div.
   <span>Span #2, in the span that's in the div.</span>
 </span>
</div>
<span>Span #3, not in the div at all.</span>

结果如下:

范例3:你有一个" ul", 其中包含一些项目, 这些项目中有一个新的" ol"项目, 你可能只想为较高层次的列表项选择某种样式, 而不为嵌套列表的项选择某种样式。

CSS: 

ul > li {
   border-top: 5px solid red;
}

HTML:

<ul>
   <li>Unordered item</li>
   <li>Unordered item
       <ol>
           <li>Item 1</li>
           <li>Item 2</li>
       </ol>
   </li>
</ul>

结果如下:

 

7.相邻和通用同级选择器

邻表示"立即关注"。当你要选择紧跟在指定元素之后的元素(相邻的兄弟姐妹)时, 使用此选择器。换句话说, 它选择在层次结构相同级别上紧挨另一个元素的元素。

例子:在下面的示例中, 选择直接在" div"元素之后的p元素

CSS:

div + p {
 background-color: red;
}

HTML:

<div>
 <p>Paragraph 1 in the div.</p>
 <p>Paragraph 2 in the div.</p>
</div>

<p>Paragraph 3. Not in a div.</p>
<p>Paragraph 4. Not in a div.</p>

结果如下:

通用兄弟选择器(〜)不如相邻的兄弟选择器严格。它允许你选择作为指定元素的同级的所有元素, 即使它们不是直接相邻。

例子:下面的示例选择了所有属于" div"元素同级的" p"元素

CSS:

div ~ p {
 background-color: red;
}

HTML:

<p>Paragraph 1.</p>

<div>
 <p>Paragraph 2.</p>
</div>

<p>Paragraph 3.</p>
<span>lsbin</span>
<p>Paragraph 4.</p>

结果如下: 

 

8.星号选择器*

它也被称为通用选择器(*), 它选择文档中的所有内容并将样式应用于它们。默认情况下, 你的浏览器已经为元素定义了样式, 当你想重置浏览器的默认样式时, 可以使用星形选择器。例如, 你可以为网页的整个元素定义自己的样式, 而不是使用浏览器的默认样式(例如边距, 填充, 文本对齐或字体大小)。

范例1:

* {
text-align: center;
color: green;
margin: 0;
padding: 0;
font-size: 30px;
border: 0;
}

范例2:选择<div>元素内的所有元素, 并将其背景色设置为红色。

div * {
   background-color: red;
}

你是否注意到, 当你使用其他选择器(例如" class", " element"或" id")时, 它们已经暗示了星形选择器?

h1 {
...
}
is similar to 
*h1 {
...
}

通常建议不要在代码中使用*选择器, 或者仅将其用于测试目的, 因为它会给浏览器增加不必要的负担。

 

9.伪类和伪元素

如果要基于指定元素的状态设置元素样式, 则可以使用伪类(:) 为了那个原因。例如, 当用户将鼠标悬停在元素上时, 或者当元素获得焦点时, 用户访问或悬停链接时, 都可以在元素上应用样式。因此, 此选择器对于基于元素状态应用样式很有用。让我们看一下语法和示例。

语法如下:

selector:pseudo-class {
 property:value;
}

范例1:阅读以下代码, 当用户的鼠标指针悬停在按钮上方时, 更改按钮的颜色

button:hover {
 color: green;
}

范例2:

a:link {
 color: red;
}
/* visited link */
a:visited {
 color: green;
}

范例3:

input[type=radio]:checked {
 border: 2px solid green;
}

伪元素(::)允许你将样式应用于所选元素的特定部分或片段。例如, 设置元素的第一个字符或行的样式。

语法如下:

selector::pseudo-element {
 property:value;
}

范例1::: first-line可用于更改段落第一行的字体。

p::first-line {
 color: green;
 font-size: 1.2em;
 text-transform: uppercase;
}

范例2:伪元素也可以与CSS类结合使用。阅读下面给出的示例

p.intro::first-letter {
 color: red;
 font-size: 1.2em;
 font-weight: bold;
}

范例3:伪元素也可以用来插入 元素内容之前或之后的内容。阅读下面给出的示例, 该示例在每个" h1"元素的内容之前插入一个图像。

h1::before {
 content: url(abc.gif);
}

 

10.类型和第n个孩子

考虑一个有四个无序列表的情况。如果你只想在ul的第三项上应用CSS, 并且没有唯一的ID可以使用, 则可以使用nth-of-type(n)。基本上:nth-​​of-type选择器允许你选择作为指定父元素的指定类型的第n个子元素的每个元素。 n可以是任何数字, 关键字或公式, 它们将指定元素在一组同级兄弟中的位置。如果说起来听起来仍然很复杂, 那就让我们看一下这个例子。

范例1:在下面给出的示例中, 只有第三个" li"会受到:n型字体。

CSS:

li:nth-of-type(3) {
 color: red;
}

HTML:

<ul>
<li>First item.</li>
<li>Second item.</li>
<li>Third item.</li>
<li>Fourth item.</li>
</ul>

结果如下:

语法如下:

:nth-of-type(number) {
 css declarations;
}

:nth-​​child(n)选择器匹配作为父元素的第n个子元素(无论类型如何)的每个元素。 n可以是数字, 关键字或公式, 它们将指定元素在一组同级兄弟中的位置。

范例1:

CSS:

p:nth-child(3) {
 background: yellow;
}

HTML:

<p>The first paragraph.</p>
<p>The second paragraph.</p>
<p>The third paragraph.</p>
<p>The fourth paragraph.</p>

结果如下: 

范例2:

p:nth-child(2n) {
 background: yellow;
}

范例3:你也可以将多个nth-child链接在一起, 以具有相同样式的不同元素。

div:nth-of-type(4) p:nth-of-child(3) {
 color: red;
}

更多前端开发相关内容请参考:lsbin - IT开发技术https://www.lsbin.com/

查看以下更多CSS相关的内容:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每个开发人员都应该知道的10个CSS选择器 的相关文章

  • Javascript CORS 图像/画布操作

    我正在尝试从另一个已配置为允许 CORS 的域检索图像 并操纵像素 然后我想显示结果并能够操纵结果 我可以在我请求的图像上使用 getImageData 和 toDataURL 所以我知道服务器部分可以工作 但是 当我尝试将图像的 src
  • PHP、MySQL 验证故障且搜索不起作用?

    我创建了一个小的注册粘性表格 一切工作正常 但如果我输入任何错误的值 例如姓名中的数字 年龄中的字母甚至错误的电子邮件格式 那么数据仍然保存在数据库中 我无法找出验证问题 另外一个是搜索选项 每当我在搜索框中输入任何名字或姓氏时 它都应该显
  • 设置三个输入数字的最大值

    我有三个输入数字
  • 滚动条宽度:细在 Firefox 中不起作用

    我刚刚在 Firefox 67 中实现了新的 css 滚动条颜色和滚动条宽度 滚动条宽度不起作用 无论我将其设置为自动 细化还是无 它都会显示相同的宽度 我想要它薄 但它不薄 我是这样实现的 root scrollbar color rgb
  • 如何在传单地图上显示热图

    我想在我的传单地图上显示热图 我使用了 heatmap jshttps github com pa7 heatmap js https github com pa7 heatmap js但它最终只是显示 未捕获的类型错误 无法分配给只读属性
  • css bootstrap 下拉菜单在 IE 中看起来不同

    我正在使用CSS引导程序3 2 0 http getbootstrap com css 然而 当在 IE 中查看该网站时 菜单选项周围有一个黑色边框 而且下拉菜单按钮看起来也有所不同 如果您查看该网站http getbootstrap co
  • mat-table 自动调整列宽以适应更大的内容

    我有一个垫表 我想自动调整列宽 任何人都将与最长的列内容一样长
  • 如何转义 onClick 处理程序内 JavaScript 代码中的字符串?

    也许我只是想得太难了 但我在弄清楚链接的 onClick 处理程序内的某些 JavaScript 代码中的字符串上使用什么转义时遇到了问题 例子 a href Select a The and 是发生模板替换的地方 我的问题是项目名称可以包
  • 过滤数据表中的行

    我目前的 JQuery 插件 DataTables 工作正常 并且我在页面顶部插入了一个按钮来进一步过滤列表 我还使用了 DataTables 内置的搜索栏 我希望按钮向下过滤表格 并只显示包含特定值的行 下面是我一直在做的事情 但似乎没有
  • 将带有 rowspan 和 colspan 的 XHTML 表转换为 LaTeX

    我一直在寻找将 HTML 表格转换为 LaTeX 的合适解决方案 我发现以下问题与我的要求相似 XML 表到 LaTeX https stackoverflow com questions 27021926 xml table to lat
  • 汇总异常以保留模块

    我使用一个名为的汇总插件rollup plugin lit css转变 css文件转换成 javascript 模块 该插件非常简单 它本质上只是附加export default到文件 我的汇总配置使用preserveModules and
  • Google Maps API - 调整大小会生成空白区域

    我正在研究一个看起来非常简单的功能 但却引起了一些头痛 我使用 GIS 并将其与 Google 地图集成 其中一位客户要求能够打开一个仅显示地图的单独弹出窗口 打开窗口不是问题 但当我尝试扩展包含地图的 IFrame 的宽度时 为了适应窗口
  • 如何从 Instagram 的 media_preview 原始数据重新创建预览?

    如果您从 Instagram 的 API 获取 JSON 数据 您会发现media previewkey 其值是一些 Base64 编码的数据 它看起来确实像一些非常小的预览二进制数据 也许是压缩的 Take 这个帖子 https www
  • Javascript - HTML Canvas 上的 Gecko 边框半径自适应(CSS border-radius)

    我试图弄清楚如何将 border radius css 属性的行为重现到 HTML 画布中 所以我已经在 J avascript 中做了一些事情 以便使用特定的半径 对于每个角 来计算给定形状的正确边界 如果需要的话 这是上一个问题 Gec
  • Javascript - 通过键获取特定 JSON 数组元素内的属性值

    我有一个像这样的 JSON 结构 map key1 valueA1 key2 valueA2 key3 valueA3 key1 valueB1 key2 valueB2 key3 valueB3 key1 valueC1 key2 val
  • 多个引导模式的滚动问题

    我有一个带有大量信息的模态页面 因此您需要滚动 该模式包含指向第二个模式的链接 When I 打开模态 1 单击链接打开模式 2 模式 1 保持在后台 然后关闭模式 2 以便我回到模式 1 modal 1 失去滚动 仍然有一个滚动条 但它不
  • 即使切换它时,hasClass 也始终返回 false

    我有以下代码
  • 为什么变量 1 += 变量 2 比变量 1 = 变量 1 + 变量 2 快得多?

    我继承了一些 Python 代码 用于创建巨大的表 最多 19 列宽 5000 行 花了九秒用于在屏幕上绘制表格 我注意到每一行都是使用以下代码添加的 sTable sTable n GetRow where sTable是一个字符串 我将
  • 如何将国家/地区代码与电话号码分开?

    我的数据库中有很多电话号码 例如 1 123 456 7890 我要做的是将国家 地区拨号代码 在本例中为美国 加拿大的 1 与电话号码分开 我尝试创建所有国家 地区的 JSON 列表 并在加载页面时将电话号码和国家 地区代码分开 它工作正
  • CSS 链接图像带有下划线(“a”显示设置为阻止)

    我有一个菜单 我希望每个单独的项目中文本周围的所有空间都能将用户带到指定的页面 我在网上查了一下 发现最好的解决方案是将 a 显示设置为阻止 如下 a display block height 100 text decoration und

随机推荐

  • python三维曲面图投影_matplotlib:在2dp上投影三维曲面

    有与 Axes3 相当的吗DSubplot plot 表面 在2D里 我试图在matplotlib中绘制网格在XY平面上的投影 因此不是在 3d 模式下 在import numpy as np import matplotlib pyplo
  • 计算机考研专业课考c语言的大学,【择校必看】十三所计算机专业课只考数据结构的985院校!...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 敲黑板 本文涉及到的学校计算机专业考研只考数据结构 其中部分院校同时也会考算法 C语言等相关内容 但是 相对其他几门 无疑在专业课的复习上大大降低了难度 如果各位同学目前的专业课复习并不理想 也
  • 微信小程序-解决scroll-view抖动

    微信小程序scroll view抖动 原因 产品需要点击换一换 列表置顶并刷新 所以需要动态绑定scroll view里面的scrollTop属性 scrollTop属性用法需要保存 scroll时的值 如果在 scroll时直接复制给sc
  • 01内存对齐之结构体偏移量

    01内存对齐之结构体偏移量 前提概念 结构体偏移量 所谓偏移量 就是我们每个结构体成员的首地址而已 1 求结构体成员偏移量的两中办法 1 简单求结构体成员偏移量 注意 求偏移量时 必须将地址转成int整数才能求偏移量 不能直接地址相减 否则
  • Easyexcel导出带下拉框选项excel模板(解决下拉框超50个的问题)

    1 为了避免excel下拉框选项过多会导致内容不显示 或者生成的时候报错 String literals in formulas can t be bigger than 255 characters ASCII easyexcel 将下拉
  • MobaXterm下载提示输入Master密码,如何使用ResetMasterPassword工具恢复MobaXterm和设置MobaXterm主密码

    MobaXterm忘记主密码 如何恢复和设置主密码 点此下载ResetMasterPassword MobaXterm 20 0汉化版下载 MobaXterm是一款非常好用的远程管理软件 支持SSH FTP 串口 VNC X server等
  • 基础算法题——异或和之和(位运算、组合数)

    异或和之和 题目链接 解题思路 解题方案 暴力枚举 时间复杂度 O n3 超时 位操作 组合数 解铃还须系铃人 对于这种与 或 异或的位操作 一般也是通过位操作来解答 总结规律 题目要求在 n 个正整数中枚举 3 个数进行位操作 若要确定
  • Spring Boot v2.4.4源码解析(十)依赖注入原理下 —— 依赖解析

    从 Spring Boot v2 4 4源码解析 八 依赖注入原理上 由一道面试题引起的思考 Autowired和 Resource的区别 可以看出 解析待注入字段或参数主要由 org springframework beans facto
  • windows与linux字符集转换

    linux下不能显示windows下的汉字 Windows和LINUX中缺省使用的字符集不同 Windows下工具可以识别LINUX中使用的UTF8字符集 而LINUX下一般工具不会自动转换Windows下的GBK字符集 如果确实需要显示
  • Mysql数据备份及数据恢复

    数据备份概述 根据数据备份的方式 分为逻辑备份和物理备份 物理备份 物理备份就是备份数据文件了 比较形象点就是cp下数据文件 但真正备份的时候自然不是的cp这么简单 逻辑备份 将数据导出至文本文件中 mysqldump是采用SQL级别的备份
  • IDEA配置Scala,使用IDEA创建第一个Scala项目

    1 首先安装IDEA IDEA的官网 https www jetbrains com idea download section mac 选择你对应的系统 版本选择社区版即可 如果有需要的可以选择Ultimate版 2 安装后 打开IDEA
  • java常用类及其方法使用StringBuffer

    基本介绍 1 StringBuffer类是对String类的增强 其代表了可变字符序列 可以对字符串的内容进行增删 2 很多方法和String是相同的 但是StringBuffer是可变长度的 3 StringBuffer是一个容器 4 类
  • stata做计量入门常用代码一览!

    现在越来越多人有写论文的需求啦 经管领域的论文中 实证研究已成为必备操作 有了下面的代码 直接上手跑数据 一 分组回归 实证中 常常要分行业分年度 分省份分年度等分组回归 保存出回归出来的某些参数 statsby就是一个有用的命令 命令语句
  • MySQL基础——多表查询练习题

    文章目录 1 查询员工的姓名 年龄 部门信息 隐式内连接 2 查询年龄小于30岁的员工的姓名 年龄 职位 部门信息 显示内连接 3 查询拥有员工的部门id 部门名称 4 查询所有年龄大于40岁的员工 及其归属的部门名称 如果没有分配部门 也
  • 人工智能ai算法_AI算法比您想象的要脆弱得多

    人工智能ai算法 In William Gibson s 2010 novel Zero History a character preparing to go in a high stakes raid wears an oddly pa
  • window像mac一样使用快捷键(AutoHotkey、SharpKeys和PowerToys)

    自己有win和mac两台笔记本 每天都需要在两台电脑切换进行开发 快捷键的差异就让人很难受 个人喜好mac快捷键 常用的几个快捷键分布比较合理 所以网上找来了解决方案供大家参考 我想作为一名 Mac User 使用 Win 首先感到不适应的
  • ####好好好#####时序数据库介绍和使用

    1 基础 1 1 时序数据的定义 什么是时间序列数据 Time Series Data TSD 以下简称时序 从定义上来说 就是一串按时间维度索引的数据 用描述性的语言来解释什么是时序数据 简单的说 就是这类数据描述了某个被测量的主体在一个
  • webpack3 CommonsChunkPlugin插件分离三方库(jQuery.js/vue.js等)和公共模块 分别打包

    需求 使用webpack进行打包时 我们不想自己写的js文件与第三方的js库一起打包成一个庞大的文件 而是想要第三方插件库单独打包一个js 我们自己写的js独立打包 优点 1 分割js文件避免单独一个js文件太大影响用户使用体验 2 通常来
  • fastdfs特点

    FastDFS是一个开源的轻量级分布式文件系统 它对文件进行管理 功能包括 文件存储 文件同步 文件访问 文件上传 文件下载 等 解决了大容量存储和负载均衡的问题 特别适合以文件为载体的在线服务 如相册网站 视频网站等等 FastDFS为互
  • 每个开发人员都应该知道的10个CSS选择器

    对于任何网站而言 要在用户上产生良好印象是什么 是的 它是任何网站的用户界面 每个开发人员都知道为用户创建美观的设计以便与任何网站进行交互非常重要 如果你不熟悉CSS及其选择器 那么在最短的时间内巧妙地对网页进行样式设置并不是一件容易的事