CSS基础:4种简单选择器的详解

你好,我是云桃桃。

一个希望帮助更多朋友快速入门 WEB 前端的程序媛。大专生,2年时间从1800到月入过万,工作5年买房。 分享成长心得。

261篇原创内容-公众号

后台回复“前端工具”可获取开发工具,持续更新中

后台回复“前端基础题”可得到前端基础100题汇总,持续更新中

今天,我们来聊一下 CSS 选择器。

CSS 选择器是一种机制,用于定位和选择 HTML 文档中要应用样式的元素。可以将其类比为钥匙,选择器是开启样式应用之门的钥匙,可以精确地选择需要样式化的元素。

CSS 基础选择器有以下 5 种:

  • 简单选择器:针对元素类型、类名、ID 等进行选择。

  • 组合选择器:通过元素之间的关系进行选择,如后代选择器、子元素选择器等。

  • 属性选择器:根据元素的属性值进行选择。

  • 伪类选择器:根据元素的状态或位置进行选择,如:hover、:visit 等。

  • 伪元素选择器:向文档中添加虚拟元素并选择它们,如::before、::after 等。

本次,咱们只说第一个:简单选择器这 1 个分类,其他分类随着深入学习再聊。

简单选择器有 4 个,我们一起来看一看吧。

一、id 选择器

id 选择器以#符号开头,后面跟着元素的 id 属性值。例如,要选择 id 为"header"的元素,可以写成"#header"。

代码如下:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>CSS Id Selector Example</title><style>/* CSS样式 */#header {background-color: #333;color: #fff;padding: 10px;text-align: center;}</style></head><body><div id="header"><h1>Welcome to My Website</h1></div><div><h1>我没有被选中</h1></div></body>
</html>

图片

id 选择器的重要性在于它可以唯一标识页面中的某个元素。什么是唯一标识呢?唯一标识某元素意味着在整个 HTML 文档中,该元素具有独一无二的标识符,即 id 属性的值在文档中是唯一的,确保该样式的精准应用。

这样,即使页面中存在多个相同类型的元素,我们也可以准确地为目标元素添加样式,而不会影响其他元素的外观。

同时,id 选择器需要注意以下事项

  • 不能包含空格:ID 中不能包含空格,因为空格在 CSS 中是选择器的分隔符,会导致选择器解析错误。

  • 不能包含特殊字符:ID 中最好不要包含特殊字符和空格,建议使用字母、数字、连字符(-)和下划线(_)组合。

  • 语义化:ID 应该用于唯一标识页面中的一个元素,不应该用于样式控制或者组合选择器,更应该遵循语义化的原则,这个后续我们深入学习就会明白了。现在知道有这个规则就可以。

二、类(class)选择器

类选择器允许我们为多个元素定义相同的样式,并且在样式复用中发挥着重要作用。通过为元素添加相同的类名称,我们可以轻松地将样式应用于多个元素,从而提高了代码的复用性和维护性。

下面是一个简单的代码案例,演示了如何使用 class 选择器为多个元素添加相同的样式:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>CSS Class选择器示例</title><style>/* 定义class选择器 */.highlight {color: red;font-weight: bold;}</style></head><body><!-- 使用class选择器应用样式 --><p class="highlight">这是一个示例段落。</p><p class="">这是另一个示例段落。</p><p class="highlight">这是第三个示例段落。</p></body>
</html>

图片

在上面的代码中,我们定义了一个名为.highlight的 class 选择器,并为其指定了红色文本和粗体字体样式。然后,在 HTML 文档中的多个段落元素中,我们使用了相同的 class 名称,以便将相同的样式应用于这些段落。这样,所有具有.highlight类的段落都会呈现相同的样式,从而实现了样式的复用和统一管理。

同时,class 选择器需要注意以下事项

  • 命名规范:Class 应该采用有意义的命名,符合语义化和命名规范,推荐使用连字符(-)分隔单词。

  • 不能以数字开头:Class 不能以数字开头,因为 CSS 中类名不能以数字开头,可以使用字母、连字符(-)和下划线(_)开头,建议是字母开头,其他 2 者开头没有实际意义。

  • 避免过度修饰:Class 名称应该简洁明了,避免过度修饰和冗长的命名,提高代码的可读性和维护性。

三、* 选择器

* 选择器是 CSS 中的通配选择器,它可以匹配 HTML 或 XML 文档中的所有元素。

其作用是用于向所有元素应用相同的样式规则,无论元素的类型、结构或位置如何,都会被这个通配符选择器选中并应用相应的样式。通配选择器在某些情况下很有用,例如需要对整个页面或大部分元素应用相同样式时,可以使用通配选择器简化样式表的编写。

比如,我们整个页面/项目的字体普遍是 12 像素大小,字体普遍都是宋体,字体颜色普遍是#666,行高 24 像素,那这时候,就可以在 CSS 的头部用这个选择器。如图。

图片

但同时也要注意,过度使用通配选择器可能会导致样式规则的冲突和性能问题,因此在网页其他部分应谨慎使用。

四、分组选择器

分组选择器是指将多个选择器组合在一起,用逗号分隔,以同时选中这些选择器所匹配的所有元素,并为它们应用相同的样式规则。它的作用是简化样式表的书写,同时可以为不同类型的元素统一设置样式。

举个 HTML 案例,假设有以下四种标签需要设置相同的样式:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Group Selector Example with Class</title><style>/* 分组选择器 */h1,p,a,.highlight {color: green; /* 设置文字是绿色 */}/* 定义highlight类的样式 */.highlight {background-color: yellow; /* 设置背景颜色为黄色 */}</style></head><body><h1>This is a heading</h1><p>This is a paragraph.</p><a href="#" class="highlight">This is a highlighted link</a><ul><li>List item 1</li><li class="highlight">List item 2</li></ul><h3 class="highlight">这是高亮的h3</h3><h4>我没有被选中</h4></body>
</html>

图片

在这个案例中,除了分组选择器 h1, p ,a 外,还新增了 .highlight 类选择器,并为具有该类的元素设置了背景颜色为黄色。这样就可以为带有 .highlight 类的元素设置不同于其他元素的样式。

最后

来再次总结一下这 4 个选择器。

  1. id 选择器

优点:具有唯一性,能够精确选择特定元素。

应用场景:适用于需要特定样式的元素,如页面顶部导航栏、页脚等。

  1. class 选择器

优点:适用于多个元素共享同一样式的情况,可以在不改变 HTML 结构的情况下重用样式。

应用场景:常用于定义可重复使用的样式,如按钮样式、卡片样式等。比如,淘宝这块商品的样子,虽然商品不一样,但外观宽高字体什么的其实是一样的,这就用class。

图片

  1. 通配符* 选择器

优点:选择所有元素,可以作为全局样式的基础,但一般不推荐使用。

应用场景:适用于全局重置样式或者设置基础样式。

  1. 分组选择器

优点:能够同时选择多个不同类型的元素,减少重复代码。

应用场景:适用于同时给多个元素应用相同样式的情况。

总体来说,这些选择器在 CSS 中发挥着重要的作用,能够帮助开发者实现不同层次和需求的样式控制。但在使用时需要注意选择器的优先级和层叠顺序,避免样式冲突和覆盖问题,保持样式代码的可维护性和可读性。

那随着我们写页面的越来越多,对这些的应用会越来越熟练。

ok。本文完。

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

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

相关文章

MySQL客户端安装并配置免密登录

最近在写脚本时需要向MySQL数据库中存储数据&#xff0c;且脚本运行的服务器与MySQL服务器不是同一台服务器&#xff0c;而且需要保证MySQL密码的安全性&#xff0c;不能在脚本中暴露&#xff0c;所以就需要在服务器上安装MySQL客户端&#xff0c;并配置免密登录。 一、虚拟机…

Git安装教程(图文安装)

Git Bash是git(版本管理器)中提供的一个命令行工具&#xff0c;外观类似于Windows系统内置的cmd命令行工具。 可以将Git Bash看作是一个终端模拟器&#xff0c;它提供了类似于Linux和Unix系统下Bash Shell环境的功能。通过Git Bash&#xff0c;用户可以在Windows系统中运行基于…

Vue项目登录页实现获取短信验证码的功能

之前我们写过不需要调后端接口就获取验证码的方法,具体看《无需后端接口,用原生js轻松实现验证码》这个文章。现在我们管理后台有个需求,就是登录页面需要获取验证码,用户可以输入验证码后进行登录。效果如下,当我点击获取验证码后能获取短信验证码: 这里在用户点击获取…

Linux 线程:线程同步、生产者消费者模型

目录 一、死锁 二、条件变量实现线程同步 1、为什么需要线程同步 2、条件变量、同步、竞态条件 3、条件变量函数&#xff1a;初始化 销毁 等待 唤醒 4、实现简单的多线程程序 不唤醒则一直等待 实现线程同步 三、生产者消费者 1、借助超市模型理解 2、优点 四、基于…

数字乡村创新实践探索:科技赋能农业现代化与乡村治理体系现代化同步推进

随着信息技术的飞速发展&#xff0c;数字乡村作为乡村振兴的重要战略方向&#xff0c;正日益成为推动农业现代化和乡村治理体系现代化的关键力量。科技赋能下的数字乡村&#xff0c;不仅提高了农业生产的效率和品质&#xff0c;也为乡村治理带来了新的机遇和挑战。本文旨在探讨…

Linux 环境下 Redis基础配置及开机自启

Linux 环境下 Redis基础配置及开机自启 linux环境安装redis<redis-6.0.5.tar.gz> 1-redis基本安装配置 解压 获取到tar包后&#xff0c;解压到相关目录&#xff0c;一般是将redis目录放在usr/local/redis目录下&#xff0c;可以使用-C指定到解压下目录 tar -zvxf re…

Java数据结构栈

栈&#xff08;Stack&#xff09; 概念 栈是一种先进后出的数据结构。 栈的使用 import java.util.Stack; public class Test {public static void main(String[] args) {Stack<Integer> s new Stack();s.push(1);s.push(2);s.push(3);s.push(4);System.out.println(s…

3. python练习题3-自由落体

3. python练习题3-自由落体 【目录】 文章目录 3. python练习题3-自由落体1. 目标任务2. 解题思路3. 知识回顾-%占位符格式化处理3.1 概述3.2 占位符的多种用法3.3 格式化操作符辅助指令3.4 将整数和浮点数格式化为字符串 4. 解题思路4.1 球第1次下落4.2 球第2次下落 5. 最终代…

day60 动态规划part17

这两题看了自己写的笔记还不懂的话&#xff0c;看看这个up的思路就行&#xff1a; https://space.bilibili.com/111062940/search/video?keyword%E5%9B%9E%E6%96%87 647. 回文子串 中等 提示 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目。 回…

学习【RabbitMQ入门】这一篇就够了

目录 1. RabbitMQ入门1-1. 同步调用1-2. 异步调用1-3. MQ技术选型1-4. RabbitMQ介绍消息模式 1-5. SpringAMQPBasic QueueWork QueueFanout ExchangeDirect ExchangeTopic Exchange消息转换器 1. RabbitMQ入门 1-1. 同步调用 优势&#xff1a; 时效性强&#xff0c;等待到结…

Windows 2008虚拟机安装、安装VM Tools、快照和链接克隆、添加硬盘修改格式为GPT

一、安装vmware workstation软件 VMware workstation的安装介质&#xff0c;获取路径&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1AUAw_--yjZAUPbsR7StOJQ 提取码&#xff1a;umz1 所在目录&#xff1a;\vmware\VMware workstation 15.1.0 1.找到百度网盘中vmwa…

Mysql的基本命令

1 服务相关命令 命令描述systemctl status mysql查看MySQL服务的状态systemctl stop mysql停止MySQL服务systemctl start mysql启动MySQL服务systemctl restart mysql重启MySQL服务ps -ef | grep mysql查看mysql的进程mysql -uroot -hlocalhost -p123456登录MySQLhelp显示MySQ…

8.list容器的使用

文章目录 list容器1.构造函数代码工程运行结果 2.赋值和交换代码工程运行结果 3.大小操作代码工程运行结果 4.插入和删除代码工程运行结果 5.数据存取工程代码运行结果 6.反转和排序代码工程运行结果 list容器 1.构造函数 /*1.默认构造-无参构造*/ /*2.通过区间的方式进行构造…

java-网络编程socket-聊天室-03

完整版代码 java -聊天室的代码: 用于存放聊天室的项目的代码和思路导图https://gitee.com/to-uphold-justice-for-others/java---code-for-chat-rooms.git 多线程并发问题 多线程的并发问题主要出现在当一个程序涉及多个线程同时运行时&#xff0c;这些线程可能会同时访问共…

Java:接口应用(Clonable 接口和深拷贝)

目录 1.引例2.Object中clone方法的实现3.Cloneable接口讲解4.深拷贝和浅拷贝4.1浅拷贝4.2深拷贝 1.引例 Java 中内置了一些很有用的接口, Clonable 就是其中之一. Object 类中存在一个 clone 方法, 调用这个方法可以创建一个对象的 “拷贝”. 但是要想合法调用 clone 方法。必…

精密电阻阻值表和电容容值表

前面2张是电阻阻值表&#xff08;E-96/0603/1%&#xff09; 常见贴片电容的容值表

解决windows下Qt Creator显示界面过大的问题

&#x1f40c;博主主页&#xff1a;&#x1f40c;​倔强的大蜗牛&#x1f40c;​ &#x1f4da;专栏分类&#xff1a;QT❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 问题描述 解决方法 1、右击此电脑--->属性 2、点击高级系统设置--->点击环境变量 3、 找到系…

【美团笔试题汇总】2023-08-26-美团春秋招笔试题-三语言题解(CPP/Python/Java)

&#x1f36d; 大家好这里是KK爱Coding &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新小米近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f…

想要安装ssh?

SSH&#xff08;Secure Shell&#xff09;是一种加密的网络协议&#xff0c;用于在不安全的网络上安全地进行远程登录和执行命令。它通过加密通信和身份验证机制&#xff0c;确保用户和系统之间的通信是安全的。 SSH协议的主要功能包括&#xff1a; 加密通信&#xff1a;SSH使…

虚良SEO-蜘蛛池的作用与工作原理

蜘蛛池是一种SEO优化工具&#xff0c;其主要作用是吸引搜索引擎蜘蛛到特定网站进行爬行和索引&#xff0c;从而提高网站的可见性和排名。下面分别介绍蜘蛛池的作用和工作原理。 蜘蛛池的作用&#xff1a; 提高网站收录&#xff1a; 当一个网站新发布时&#xff0c;或者长时间…