【从零开始学习CSS | 第一篇】选择器介绍

news2024/11/24 16:21:47

目录

前言:

选择器介绍:

各类选择器:

 总结:


前言:

        本文以及后续几篇文章我们将会集中介绍CSS中的常见选择器,选择器的出现可以让我们实现对具体的元素标签进行定制,因此我们要掌握好各类选择器的使用。

选择器介绍:

        在CSS(层叠样式表)中,选择器是一种用于选择 HTML 元素以应用特定样式的模式或规则。选择器通过匹配 HTML 元素的不同属性、关系或状态来确定要应用样式的目标元素。

        CSS选择器的作用是根据选择器的匹配规则,选择出目标元素,并对其应用指定的样式。选择器可以根据元素的标签名、类名、ID、属性、状态等进行选择。

各类选择器:

1.元素选择器:

        元素选择器(Element Selector)是CSS中最基本和最常见的选择器。它使用HTML元素的标签名作为选择器,用于选择匹配标签名的所有元素。

        元素选择器的语法非常简单,只需在CSS中使用标签名作为选择器即可。例如,要选择所有的段落元素,可以使用`p`作为选择器。

以下是几个常见的元素选择器示例:

        1. 标签选择器:使用HTML标签名作为选择器,选择匹配标签名的所有元素。例如,`p`选择所有的段落元素,`h1`选择所有的一级标题元素。

p {
  background-color: yellow;
}

        2. 通配符选择器:使用`*`作为选择器,匹配所有的元素。例如,`*`选择所有的元素。        

* {
  background-color: yellow;
}

        3. 类型选择器:使用元素的特定类型作为选择器,选择匹配指定类型的元素。例如,`input`选择所有的输入框元素,`a`选择所有的锚点元素。

input {
  background-color: yellow;
}

        元素选择器非常灵活,可以用于选择单个元素或多个匹配的元素,并针对其应用相应的样式。可以通过组合元素选择器和其他选择器来实现更具体和精确的选择。

        需要注意的是,元素选择器会选择所有匹配的元素,因此在使用时要确保选择器的准确性和误用的风险。

2.类选择器:

        类选择器(Class Selector)是CSS中一种常用的选择器,用于选择具有相同类名的元素。它以点(.)开头,后面跟着类名。

类选择器的语法如下:

.classname {
  /* CSS属性和值 */
}

        其中,点(.)表示类选择器,后面紧跟着类名(可以是任何有效的CSS类名)。在HTML中,当一个元素的class属性值与类选择器匹配时,该元素就会应用类选择器中定义的样式。

        以下是一个具体的示例,假设我们有一些HTML元素使用了相同的类名`highlight`,我们可以通过类选择器来为它们设置样式:

.highlight {
  background-color: yellow;
  color: red;
}

        上述代码将选择所有类名为`highlight`的元素,并设置它们的背景颜色为黄色,文本颜色为红色。

        需要注意的是,类选择器可以重复使用,一个元素可以拥有多个类名。这样可以更灵活地为元素应用不同的样式。例如:

<div class="highlight bold">这是一个示例文本</div>

        上述代码中的`div`元素同时具有`highlight`和`bold`两个类名,可以分别通过`.highlight`和`.bold`类选择器来为其设置样式。

3.ID选择器

        ID选择器(ID Selector)是CSS中一种常用的选择器,用于通过元素的唯一标识符选择特定的元素。它以井号(#)开头,后面跟着ID名称。

ID选择器的语法如下:

#idname {
  /* CSS属性和值 */
}

        其中,井号(#)表示ID选择器,后面紧跟着ID名称(可以是任何有效的CSS ID名称)。在HTML中,当一个元素的id属性值与ID选择器匹配时,该元素就会应用ID选择器中定义的样式。

        需要注意的是,ID在整个HTML文档中应该是唯一的,即每个元素只能有一个ID,并且ID不能以数字开头。因为ID具有唯一性,所以使用ID选择器可以精确地选择页面上的特定元素。

以下是一个具体的示例,假设我们有一个具有唯一ID的`<div>`元素:

<div id="mydiv">这是一个示例文本</div>

我们可以使用ID选择器来为其设置样式:

#mydiv {
  background-color: yellow;
  color: red;
}

        上述代码将选择具有ID为`mydiv`的`<div>`元素,并设置其背景颜色为黄色,文本颜色为红色。

        需要注意的是:ID选择器具有更高的优先级,如果同时使用类选择器和ID选择器来选择相同的元素,ID选择器的样式将覆盖类选择器的样式。因此,应谨慎使用ID选择器,以确保样式的准确应用。

4.交集选择器:

        交集选择器(Intersection Selector)是CSS中一种选择器,用于选择同时具有多个类名的元素。它使用类选择器的语法,并将多个类名连在一起,中间没有任何符号。

交集选择器的语法如下:

.class1.class2 {
  /* CSS属性和值 */
}

        `.class1`和`.class2`表示类选择器,通过这种组合的方式,选择具有同时包含类名`.class1`和`.class2`的元素。这样可以在不修改HTML结构的情况下,针对特定的元素应用样式。

以下是一个具体的示例,假设我们有一个HTML中的`<div>`元素,同时具有类名`.highlight`和`.bold`:

<div class="highlight bold">这是一个示例文本</div>

我们可以使用交集选择器来为它设置样式:

.highlight.bold {
  font-weight: bold;
  color: red;
}

上述代码将选择同时具有`.highlight`和`.bold`类名的`<div>`元素,并设置其字体加粗和字体颜色为红色。

        需要注意的是,交集选择器要求元素同时具有所有选择器中指定的类名,只有在两个类名同时存在时才会应用样式。如果两个类名分别位于不同的元素上,则不会匹配。这种方式有助于更加精确地选择元素,并为其应用特定的样式。

5.并集选择器:

        并集选择器(Union Selector)是CSS中一种选择器,用于同时选择多个元素或选择多个类名或ID的元素。它使用逗号(,)将多个选择器或类名/ID名连接在一起。

并集选择器的语法如下:

selector1, selector2 {
  /* CSS属性和值 */
}

        `selector1`和`selector2`表示选择器,通过逗号分隔,将多个选择器组合在一起。这样可以同时选择多个元素,并为它们应用相同的样式。

以下是几个具体的示例:

1. 并集选择器选择多个元素:

h1, h2, h3 {
  color: blue;
  font-weight: bold;
}

        上述代码将选择页面上的所有`<h1>`、`<h2>`和`<h3>`元素,并设置它们的字体颜色为蓝色、字体加粗。

2. 并集选择器选择多个类名:

.highlight, .bold {
  background-color: yellow;
  color: red;
}

        上述代码将选择所有具有`.highlight`类名和所有具有`.bold`类名的元素,并设置它们的背景颜色为黄色,文本颜色为红色。

3. 并集选择器选择多个ID:

#mydiv, #mysection {
  border: 1px solid black;
  padding: 10px;
}

        上述代码将选择具有ID为`mydiv`和具有ID为`mysection`的元素,并设置它们的边框为1px实线黑色,内边距为10px。

        需要注意的是,并集选择器可以组合不同类型的选择器,如标签选择器、类选择器、ID选择器等,以便同时选择不同类型的元素并应用相同的样式。使用并集选择器可以减少代码重复,并为多个元素一次性应用相同的样式。

6.后代选择器:

        后代选择器(Descendant Selector)是CSS中一种选择器,用于选择元素的后代元素,即在某个元素内部的子孙元素。它使用空格()将两个选择器连接在一起。

后代选择器的语法如下:

selector1 selector2 {
  /* CSS属性和值 */
}

        `selector1`和`selector2`表示选择器,通过空格将它们连接在一起。选择器1选择了父元素(祖先元素),而选择器2选择了后代元素(子孙元素)。这样可以根据元素的层级关系来选择并应用样式。

以下是一个具体的例子,我们有一个HTML结构:

<div class="container">
  <h1>标题</h1>
  <p>这是一个段落</p>
</div>

我们可以使用后代选择器来选择`<div>`元素内部的`<h1>`元素并设置样式:

.container h1 {
  color: blue;
}

上述代码将选择具有`.container`类名的`<div>`元素内部的`<h1>`元素,并将其文字颜色设置为蓝色。

        需要注意的是,后代选择器会匹配所有符合条件的后代元素,无论它们的层级有多深。选择器2可以是任何有效的CSS选择器,可以是标签选择器、类选择器、ID选择器等。

        后代选择器的优势在于它可以非常灵活地选择元素的特定后代,而不受层级的限制。通过合理运用后代选择器,可以准确地选择并应用样式于所需的元素。

7.子代选择器:

        子代选择器(Child Selector)是CSS中一种选择器,用于选择元素的直接子元素(子节点),即在某个父元素下的直接子元素。它使用大于号(>)将两个选择器连接在一起。

子代选择器的语法如下:

selector1 > selector2 {
  /* CSS属性和值 */
}

        `selector1`和`selector2`表示选择器,通过大于号连接在一起。选择器1选择了父元素,而选择器2选择了父元素的直接子元素。这样可以选择并应用样式于父元素的直接子元素,而不会选择孙子元素及更深层级的后代元素。

以下是一个具体的例子,我们有一个HTML结构:

<ul>
  <li>列表项1</li>
  <li>列表项2</li>
  <li>列表项3</li>
</ul>

我们可以使用子代选择器来选择`<ul>`元素下直接的`<li>`元素并设置样式:

ul > li {
  color: red;
}

上述代码将选择`<ul>`元素下直接的`<li>`元素,并将它们的文字颜色设置为红色。

        需要注意的是,子代选择器只选择父元素的直接子元素,不包括更深层级的后代元素。选择器2可以是任何有效的CSS选择器,可以是标签选择器、类选择器、ID选择器等。

        子代选择器在一些特定的布局需求下非常有用,可以在层级结构中精确选择特定的子元素,并为其应用样式。同时,子代选择器的使用还能够提高CSS选择器的性能,因为它的范围被限制在了直接子元素上。

7.兄弟选择器:

兄弟选择器(Sibling Selector)是CSS中一种选择器,用于选择元素的兄弟元素,即与某个元素拥有相同父元素的其他元素。它使用加号(+)将两个选择器连接在一起。

兄弟选择器的语法如下:

selector1 + selector2 {
  /* CSS属性和值 */
}

        其中,`selector1`和`selector2`表示选择器,通过加号连接在一起。选择器1选择了某个元素,而选择器2选择了与选择器1拥有相同父元素的下一个兄弟元素。这样可以选择并应用样式于兄弟元素。

以下是一个具体的例子,我们有一个HTML结构:

<ul>
  <li>列表项1</li>
  <li>列表项2</li>
  <li>列表项3</li>
</ul>

我们可以使用兄弟选择器来选择`<ul>`元素下第一个`<li>`元素的兄弟元素并设置样式:

ul li:first-child + li {
  color: blue;
}

上述代码将选择`<ul>`元素下第一个`<li>`元素的兄弟元素(第二个和第三个`<li>`元素),并将它们的文字颜色设置为蓝色。

        需要注意的是,兄弟选择器只会匹配在相同父元素下的下一个兄弟元素,不会匹配更远的兄弟元素。选择器2可以是任何有效的CSS选择器,例如标签选择器、类选择器、ID选择器等。

        兄弟选择器在一些特定的布局需求下非常有用,可以选择特定元素的下一个兄弟元素并为其应用样式。通过使用兄弟选择器,可以在不使用额外的类名或ID的情况下,精确选择并应用样式于特定的兄弟元素。

8.属性选择器:

属性选择器(Attribute Selector)是CSS中一种用于选择具有指定属性的元素的选择器。属性选择器允许根据元素的属性及其属性值来选择并应用样式。

属性选择器有以下三种常见的语法形式:

1. 存在和值属性选择器:

  •    `[attribute]`:选择具有指定属性的元素。
  •    `[attribute=value]`:选择属性值与指定值完全匹配的元素。

2. 部分值属性选择器:

  •    `[attribute^=value]`:选择属性值以指定值开头的元素。
  •    `[attribute$=value]`:选择属性值以指定值结尾的元素。
  •    `[attribute*=value]`:选择属性值包含指定值的元素。

3. 精确值和多值属性选择器:

  •    `[attribute|=value]`:选择属性值与指定值完全匹配或以指定值及连字符开头的元素。
  •    `[attribute~=value]`:选择属性值中包含指定值作为一个单词(空格分隔)的元素。
  •    `[attribute*=value]`:选择属性值与指定值完全匹配或以指定值及空格开头的元素。

以下是一些具体的例子,说明如何使用属性选择器:

/* 选择所有有href属性的元素 */
[href] {
  color: blue;
}

/* 选择class属性值为"button"的元素 */
[class="button"] {
  background-color: yellow;
}

/* 选择src属性值以".jpg"结尾的元素 */
[src$=".jpg"] {
  border: 1px solid black;
}

/* 选择class属性值包含"active"的元素 */
[class*="active"] {
  font-weight: bold;
}

        使用属性选择器,可以根据元素的属性及其属性值来选择元素,从而实现对元素的样式控制。属性选择器提供了一种灵活的方式来选择元素,使得样式可以根据元素的属性动态变化或特定条件下应用。

 总结:

        本文我们介绍一些基础的选择器,但这并不是全部的选择器,受限于篇幅原因,在下文我们将介绍伪类选择器,希望本篇文章可以对各位有所帮助。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/747150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LiveGBS流媒体平台GB/T28181功能-如何将海康大华宇视华为摄像头视频流集中存储云端录像分布式录像存储

LiveGBS如何将海康大华宇视华为摄像头视频流集中存储云端录像分布式录像存储 1、云端录像存储2、手动配置录像2.1、按需录像2.2、一直录像 3、录像计划3.1、录像计划入口3.2、新增录像计划3.3、编辑录像计划3.4、关联通道 4、查看云端录像4.1、查看录像4.1.1、时间轴模式4.1.2、…

解决Ubuntu 虚拟机没有网络图标(无法联网问题)

问题&#xff1a; 我们打开Ubuntu虚拟机的时候&#xff0c;发现没有网络图标&#xff0c;这就使得联网无从下手&#xff0c;该怎么解决呢&#xff1f; 第一步&#xff1a;点击编辑虚拟机 第二步&#xff1a;点击虚拟网络编辑器 第三步&#xff0c;还原默认设置&#xff1a; 第四…

简单爬虫项目练习

爬虫项目练习 前言任务基本爬虫框架URL管理器Html 下载器HTML 解析器数据存储器爬虫调度器效果分析 前言 自学&#xff0c;参考书籍为 Python爬虫开发与项目实战 &#xff0c;具体参考了该书的第六章。过程中出现两个问题&#xff1a; 在 Pycharm 上实现时发现有些库名更改及…

界面控件DevExpress WPF数据编辑器组件,让数据处理更灵活!(一)

界面控件DevExpress WPF编辑器库可以帮助用户提供直观的用户体验&#xff0c;具有无与伦比的运行时选项和灵活性。WPF数据编辑器提供了全面的掩码和数据验证支持&#xff0c;可以独立使用&#xff0c;也可以作为容器控件(如DevExpress WPF Grid和WPF TreeList)中的单元格编辑器…

2023/7/12总结

最近踩的坑&#xff08;也不算坑&#xff0c;也算自己没学扎实&#xff09;&#xff1a; bug1 在css布局当中&#xff0c;flex布局display&#xff1a;flex 必须在父级身上&#xff0c;才能起作用。 bug2 引用bootstrap的时候&#xff0c;会需要样式覆盖的问题&#xff0c…

景联文科技助力医疗AI大模型:数据标注与专业医学资源的重要性

随着通用人工智能&#xff08;AI&#xff09;与生成式人工智能&#xff08;AIGC&#xff09;的兴起&#xff0c;人工智能对一些产业的颠覆性影响开始显著加速。我们正在进入一个全新的、属于人工智能的时代。 近日&#xff0c;谷歌对外发布谷歌医疗版ChatGPT已在多家诊所内测试…

数据结构---手撕图解单链表---phead的多种传参方式对比和辅助理解

文章目录 为什么要引入链表&#xff1f;单链表单链表的定义和原理单链表的头插 对于指针的深层次理解链表的尾插封装malloc函数 尾删头删查找链表中元素的插入在某节点前插入在某节点后插入 链表中元素的删除删除pos位置的值删除pos元素之后的值 链表的销毁关于链表传参问题如何…

用VScode运行vue框架时,报无法运行的错误

报错内容 问题出在了版本上面&#xff0c;从reason可以了解到是由于不支持的原因 然后上面报错的几乎都属于node_modules包内的&#xff0c;因此我们可以判断&#xff0c;是node.js版本的问题导致的&#xff08;尤其是你从网上拷贝比较旧的项目的时候&#xff0c;可能需要对依赖…

Go参考TcMalloc内存分配

我发现搞懂 Go 语言内存对象分配&#xff0c;真的没有那么简单。为什么要搞懂 Go 语言的内存分配呢&#xff0c;吃饱了撑的呢&#xff01;我计划涉猎多些博客&#xff0c;能弥补这块的知识缺失。但也可能中途就放弃了… 下图是截取自 《Go语言变编程入门和实战技巧》的这本书中…

企业选择中端CRM系统应看中哪四方面?

中端市场做得更好的CRM系统是哪家&#xff1f;有咨询公司针对企业用户进行了调研&#xff0c;评估得出——在中端市场&#xff0c;CRM操作简单、开箱即用、学习难度低&#xff0c;加快了实施进度&#xff0c;降低使用成本。 CRM系统适合中端市场的四方面&#xff1a; 1、性价比…

【Python+selenium】生成测试报告

批量执行完用例后&#xff0c;生成的测试报告是文本形式的&#xff0c;不够直观&#xff0c;为了更好的展示测试报告&#xff0c;最好是生成HTML格式的。 unittest里面是不能生成html格式报告的&#xff0c;需要导入一个第三方的模块&#xff1a;HTMLTestRunner 一、导入HTMLT…

探索TikTok本土MCN,怎么入驻呢?

探索TikTok本土MCN&#xff1a;崛起的新媒体力量 引言&#xff1a; 随着社交媒体的快速发展&#xff0c;TikTok作为一款全球热门的短视频应用&#xff0c;吸引了数以亿计的用户。在这个平台上&#xff0c;用户可以通过创作有趣、创新的短视频内容来吸引关注和粉丝。而在TikTo…

J. 二进制与、平方和

Problem - J - Codeforces 思路&#xff1a;因为与操作是按位进行的&#xff0c;我们可以考虑拆开每一位&#xff0c;并且我们发现了一个性质&#xff0c;如果x的某一位是1&#xff0c;那么x对这一位是无影响的&#xff0c;因为任何数与1都是它本身&#xff0c;所以对于x的二进…

【逻辑回归实例】

逻辑回归&#xff1a;从理论到实践 在本文中&#xff0c;我们将介绍一种被广泛用于二分类问题的机器学习模型——逻辑回归。我们将通过一个实例&#xff0c;深入解析如何在 Python 环境中实现逻辑回归。 源数据下载链接 1. 什么是逻辑回归&#xff1f; 逻辑回归是一种用于解…

一次零基础靶机渗透细节全程记录

一、打靶总流程 1.确定目标&#xff1a; 在本靶场中&#xff0c;确定目标就是使用nmap进行ip扫描&#xff0c;确定ip即为目标&#xff0c;只是针对此靶场而言。其他实战中确定目标的方式包括nmap进行扫描&#xff0c;但不局限于这个nmap。 2.信息收集&#xff1a; 比如平常挖…

园区预付费远程抄表方案

园区预付费远程抄表方案是一种能够实现园区内电表数据远程采集、实时监控和预付费管理的方案。该方案解决了传统手动抄表方式的不便和不准确问题&#xff0c;同时避免了上门收费的安全隐患和成本问题。下面将从方案组成、工作原理、优点等方面进行详细介绍。 一、方案组成 园区…

P1095 [NOIP2007 普及组] 守望者的逃离

总的来说就是能闪则闪&#xff0c;闪烁在能闪时一定比跑的快&#xff1b;分批进行&#xff0c;判断哪个更快&#xff1b; 直接上代码吧&#xff0c;里面有注释&#xff0c; #include <iostream>using namespace std;const int N 3e5 5; int M, S, T, blue[N], dp[N];…

selenium自动化测试的显示等待

目录 等待条件 条件类的实现原理 WebDriverWait是如何进行条件判断的 selenium里都有哪些条件 然后就是自定义了 总结&#xff1a; 在进行UI自动化测试的时候&#xff0c;我们为了保持用例的稳定性&#xff0c;往往要设置显示等待&#xff0c;显示等待就是说明确的要等到某…

Java中的IO流详解

目录 友情提醒第一章、File类和IO技术概述1.1&#xff09;File类和IO技术的作用1.2&#xff09;创建File类对象1.3&#xff09;File类中的方法1.4&#xff09;文件过滤器&#xff1a;FileFileter 第二章、IO流2.1&#xff09;IO流的分类2.2&#xff09;字节输入流&#xff1a;I…

【Matlab】智能优化算法_非洲秃鹫优化算法AVOA

【Matlab】智能优化算法_非洲秃鹫优化算法AVOA 1.背景介绍2.数学模型3.文件结构4.算法流程图5.伪代码6.详细代码及注释6.1 AVOA.m6.2 boundaryCheck.m6.3 exploitation.m6.4 exploration.m6.5 initialization.m6.6 levyFlight.m6.7 main.m6.8 ObjectiveFunction.m6.9 random_se…