CSS: 选择器与三大特性

标签选择器

标签选择器就是选择一些HTML的不同标签,由于它们的标签需求不同,所以CSS需要设置标签去选择它们,为满足它们的需求给予对应的属性

基础选择器

标签选择器

<!DOCTYPE html>
<head><title>HOME</title><style>p{color: brown;}</style>
</head>
<body><p>Hello,World</p>
</body>
</html>

这里的<style></style>里面的p{}就是标签选择器,它选择了<p></p>标签,将<p></p>标签内的文本颜色修改为红色 

演示结果

这里的Hello,World是红色的

 类选择器

类选择器的存在是为了差异化每个选择器标签,它的基本格式为

.类名{所需要的属性}

<div class="类名 类名 ...">文本</div>

基本代码

<!DOCTYPE html>
<head><title>HOME</title><style>.set{color: brown;}.size{font-size: 50px;}</style>
</head>
<body><p class="set size">Hello,World</p>
</body>
</html>

演示结果

这里<p></p>的文本添加了两个类型名,分别是更改颜色和大小的类选择器

id选择器 

id选择器和类选择器的使用方式是相同的,唯一的不同点在于id选择器只能引用一个类名,而类选择器可以引用多个类名

基本使用方式

#id{属性}

<div id="属性名">文本内容</div> 

代码演示

<!DOCTYPE html>
<head><title>HOME</title><style>#set{color: brown;font-size: 50px;}</style>
</head>
<body><div id="set">Hello,World</div>
</body>
</html>

演示结果

 

通配选择器 

通配选择器格式

*{属性}

通配选择器会对所有文本生效

演示代码

<!DOCTYPE html>
<head><title>HOME</title><style>*{color:aqua;font-size: 50px;}</style>
</head>
<body><div>Hello,World</div>
</body>
</html>

演示结果

CSS复合选择器

复合选择器是由基础选择器构成的,当我们的代码非常庞大时,复合选择器可以用来更准确的定位某个标签,将它的属性改写

后代选择器

后代选择器是由两个父子选择器构成的,当标签的class既满足父标签又满足子标签那么它的属性才会被后代选择器修改

基本结构

.father son{}

我们来演示一下

演示代码

<!DOCTYPE html>
<head><title>HOME</title><style>.father span{color: blueviolet;font-size: 50px;}</style>
</head>
<body><div class="father"><span>Ni Hao</span><p><span>Hello,World;</span></p></div>
</body>
</html>

演示结果

 我们可以得知当文本满足后代选择器的两个先后条件时,后代选择器的更改生效,只要满足子标签在父标签的内部即可

子选择器

子选择器需要子标签是父标签里面的第一个直接标签,也就是说子标签必须要是父标签的亲儿子标签,否则不生效

语法

父亲>儿子{}

演示代码

<!DOCTYPE html>
<head><title>HOME</title><style>div>span{color: blueviolet;font-size: 50px;}</style>
</head>
<body><div><span>Ni Hao</span><p><span>Hello,World;</span></p></div>
</body>
</html>

演示结果

我们可以看到,同样是<span></span>标签,但其中鄙视<div></div>标签的亲儿子标签不会被后代选择器选择 

并集选择器

并集选择器可以在同一行定义许多个其它的复合选择器或基础选择器

语法

元素1 元素2{} 

演示代码

<!DOCTYPE html>
<head><title>HOME</title><style>div,span,.father div{color: blueviolet;font-size: 50px;}</style>
</head>
<body><div>WeChat</div><span>Ni Hao</span><p>Hello,World;</p>
</body>
</html>

演示结果

我们可以发现这个并集选择器同时选择了<span></span>和<div></div>两个标签

当然我们也可以并上子选择器和后代选择器

演示代码

<!DOCTYPE html>
<head><title>HOME</title><style>.blue span,div>span{color: blueviolet;font-size: 50px;}</style>
</head>
<body><div><p class="blue"><span>P内的span文字标签</span><div>P内的div文字标签</div></p><span>div内的span文字标签</span></div>
</body>
</html>

 演示结果

我们可以看到并集选择器同时完成了子选择器和后代选择器的功能

伪类选择器 

用于给一些元素添加某种效果

链接伪类选择器

a:link,选择未被访问的链接

a:visited,选择已经被访问的链接

a:hover,选择鼠标悬停的链接

a:active,选择鼠标点击的链接

演示代码

<!DOCTYPE html>
<head><title>HOME</title><style>a{font-size: 50px;}a:link {color: rgb(165, 14, 14);}a:active {color: rgb(249, 5, 5);}a:hover {color: rgb(153, 0, 255);}a:visited {color: rgb(127, 253, 2);}</style>
</head>
<body><a href="https://www.bilibili.com/">bilibili</a>
</body>
</html>

演示结果

 当我们鼠标悬停时

这里由于浏览器的安全限制我们就先不演示其它的了 

:focus 伪类选择器

focus用于获取表单,focus通过获取表单得到修改表单的权限

我们来演示一下

演示代码

当我们点击这些表单的时候,这些表单便会因为选择器添加的属性而变色

CSS三大特性 

层叠性

当我们由两个相同的选择器时,那么就会发生命名冲突,那么命名冲突后,编译器会怎么选择属性呢

演示代码

<html>
<head><title>Document</title><style>p{color: brown;font-size: 50px;}p{color: blue;}</style>
</head>
<body><p>Hello,World</p>
</body>
</html>

演示结果

当由两个p选择器时,后面的选择器属性会覆盖前面的,没有被覆盖的属性会继承下来,比如颜色被覆盖,但是文本大小被继承下来

继承性 

在CSS中子进程会继承父进程的特性

演示代码

<html>
<head><title>Document</title><style>div{color: brown;font-size: 50px;}</style>
</head>
<body><div>your name   <p>Hello,World</p></div>
</body>
</html>

演示结果

这里的<p></p>标签继承了<div></div>标签的特性

优先级 

当一个元素被多个选择器选择会出现两种情况

选择器相同,执行层优先

选择器不同,执行优先级

选择器的优先级取决于,选择器的权重

选择器权重
从父级继承 / 通配符*0.0.0.0
标签选择器0.0.0.1
类选择器 / 伪类选择器0.0.1.0
id选择器0.1.0.0
行内样式style=""1.0.0.0
!important 修饰

代码演示

<html>
<head><title>Document</title><style>div{color: brown;font-size: 50px;}.father{color:black;}#son{color: blue;}</style>
</head>
<body><div class="father" id="son">Hello,World</div>
</body>
</html>

演示结果

因为id选择器权重最高,所以是蓝色

还有一个!important元素,当选择器加上它时,那么它的优先级就是最高

当有两个元素都加了!important时,那么就比较它们各自的优先级,如果它们时相同的选择器,那么就比它们那个在后面

代码演示

<html>
<head><title>Document</title><style>div{color: brown;font-size: 50px;}#son{color: blue !important;}.father{color:black !important;}</style>
</head>
<body><div class="father" id="son">Hello,World</div>
</body>
</html>

演示结果

 虽然father加了!important,但是son也加了,所以最后比较的就是son和father的优先级

 权重的叠加

当我们使用后代选择器或者子选择器时,便会发生权重的叠加

比如div span的权重叠加起来就是 0.0.0.1 + 0.0.0.1 = 0.0.0.2

div .father的权重                            0.0.0.1 + 0.0.1.0 =0.0.1.1

.father .son的权重                          0.0.1.0 + 0.0.1.0 =0.0.2.0

权重会在对应的位置叠加,但权重不会进位

代码演示

<html>
<head><title>Document</title><style>.FATHER span{color: brown;font-size: 50px;}div span{color: blue;font-size: 50px;}</style>
</head>
<body><div class="FATHER"><span>HELLO,WORLD</span></div>
</body>
</html>

演示结果

因为.FATHER + span的权重大于 div + span的权重,所以最后是.FATHER + span选择器生效

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

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

相关文章

鸿蒙跨平台开发教程之Uniapp布局基础

前两天的文章内容对uniapp开发鸿蒙应用做了一些详细的介绍&#xff0c;包括配置开发环境和项目结构目录解读&#xff0c;今天我们正式开始写代码。 入门新的开发语言往往从Hello World开始&#xff0c;Uniapp的初始化项目中已经写好了一个简单的demo&#xff0c;这里就不再赘述…

JavaSE核心知识点02面向对象编程02-08(异常处理)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 JavaSE核心知识点02面向对象编程02-08&#…

【JVM-GC调优】

一、预备知识 掌握GC相关的VM参数&#xff0c;会基本的空间调整掌握相关工具明白一点&#xff1a;调优跟应用、环境有关&#xff0c;没有放之四海而皆准的法则 二、调优领域 内存锁竞争cpu占用io 三、确定目标 【低延迟】&#xff1a;CMS、G1&#xff08;低延迟、高吞吐&a…

基于单片机的电子法频率计

一、电子计数法测频率原理 通过门控控制闸门开关&#xff0c;闸门时间T自己设定&#xff0c;计数器计数脉冲个数N&#xff08;也就是待测信号&#xff09;&#xff0c;N个脉冲的时间间隔为δt,倒数即为信号的频率f,由此 δtT/N fN/T——信号频率 根据公式&#xff0c;如果考虑…

【C/C++】跟我一起学_C++同步机制效率对比与优化策略

文章目录 C同步机制效率对比与优化策略1 效率对比2 核心同步机制详解与适用场景3 性能优化建议4 场景对比表5 总结 C同步机制效率对比与优化策略 多线程编程中&#xff0c;同步机制的选择直接影响程序性能与资源利用率。 主流同步方式: 互斥锁原子操作读写锁条件变量无锁数据…

判断两台设备是否在同一局域网内的具体方法

以下是判断两台设备是否在同一局域网内的具体方法&#xff1a; 1. 检查IP地址和子网掩码 操作步骤&#xff1a; Windows系统&#xff1a; 按 Win R 键&#xff0c;输入 cmd 并回车。输入 ipconfig&#xff0c;查看 IPv4 地址 和 子网掩码&#xff08;如 192.168.1.5/255.255.2…

在R语言中如何将列的名字改成别的

在 R 中&#xff0c;更改数据框&#xff08;data frame&#xff09;中列的名字可以通过多种方法实现。以下是几种常见的方法&#xff1a; 方法 1&#xff1a;使用 names() 函数 names() 函数可以获取或设置数据框的列名。 示例 假设我们有一个数据框 data&#xff1a; dat…

JUC并发编程(上)

一、JUC学习准备 核心知识点&#xff1a;进程、线程、并发&#xff08;共享模型、非共享模型&#xff09;、并行 预备知识&#xff1a; 基于JDK8,对函数式编程、lambda有一定了解 采用了slf4j打印日志 采用了lombok简化java bean编写 二、进程与线程 进程和线程概念 两者对比…

单地平面6层PCB设计实战:如何兼顾电源与信号完整性?

摘要&#xff1a;面对复杂系统&#xff08;SDRAM、WiFi、电机驱动等&#xff09;且仅有1层地平面的6层板设计挑战&#xff0c;本文从层叠规划、电源噪声抑制、高速信号处理等角度&#xff0c;总结可落地的设计技巧与避坑指南。 一、层叠设计&#xff1a;6层板如何“挤”出最优布…

spark:map 和 flatMap 的区别(Scala)

场景设定 假设有一个包含句子的 RDD&#xff1a; scala val rdd sc.parallelize(List("Hello World", "Hi Spark")) 目标是&#xff1a;将每个句子拆分成单词。 1. 用 map 的效果 代码示例 scala val resultMap rdd.map(sentence > sentence…

基于VSCode+PlatformIO环境的ESP8266的HX1838红外模块

以下是针对ESP8266开发板的红外遥控解码系统开发教程&#xff0c;基于VSCodePlatformIO环境编写 一、概述 本实验通过ESP8266开发板实现&#xff1a; 红外遥控信号解码自定义按键功能映射串口监控输出基础设备控制&#xff08;LED&#xff09; 硬件组成&#xff1a; NodeMC…

Kubernetes排错(十四):Pod状态异常排查手册

当你在凌晨三点收到告警&#xff0c;发现Pod在崩溃循环中挣扎时&#xff0c;如何快速定位问题&#xff1f;本文将为你梳理一套生产环境通用的Pod排错流程&#xff0c;并附上救火队员必备的实用命令清单&#xff01; 一、5分钟快速定位&#xff1a;四步锁定问题方向 步骤1&…

医院药品管理系统(准备工作)

准备工作 创建数据库表 搭建Springboot框架 创建工程 定位maven 其他准备工作 创建数据库表 建了九张表 搭建Springboot框架 创建工程 定位maven 把镜像改为国内的 其他准备工作 安装Lombok插件 额外添加依赖 如果添加依赖的过程中一直爆红&#xff0c;可以刷新…

SpringBoot异步处理@Async深度解析:从基础到高阶实战

一、异步编程基础概念 1.1 同步 vs 异步 特性同步异步执行方式顺序执行&#xff0c;阻塞调用非阻塞&#xff0c;调用后立即返回线程使用单线程完成所有任务多线程并行处理响应性较差&#xff0c;需等待前任务完成较好&#xff0c;可立即响应新请求复杂度简单直观较复杂&#…

简单的强化学习举例

1&#xff0c;定义奖励函数 首先&#xff0c;需要根据具体的任务需求来定义奖励函数。例如&#xff0c;对于机器人导航任务&#xff0c;可以根据机器人与目标点的距离来定义奖励函数&#xff1a; import numpy as npdef navigation_reward(robot_position, target_position):…

css背景相关

背景书写 background: url(src); // 注意&#xff1a;在写动态样式时&#xff0c;backgournd赋值格式错误&#xff0c;是不会在浏览器dom的style上显示的 // 但是可以创建不可见的img&#xff0c;预加载来提高性能背景也会加载图片资源 同img的src一样&#xff0c;background也…

opencascade.js stp vite 调试笔记

Hello, World! | Op enCascade.js cnpm install opencascade.js cnpm install vite-plugin-wasm --save-dev 当你不知道文件写哪的时候trae还是有点用的 ‘’‘ import { defineConfig } from vite; import wasm from vite-plugin-wasm; import rollupWasm from rollup/plug…

线程的一些事(2)

在java中&#xff0c;线程的终止&#xff0c;是一种“软性”操作&#xff0c;必须要对应的线程配合&#xff0c;才能把终止落实下去 然而&#xff0c;系统原生的api其实还提供了&#xff0c;强制终止线程的操作&#xff0c;无论线程执行到哪&#xff0c;都能强行把这个线程干掉…

BGP实验练习1

需求&#xff1a; 要求五台路由器的环回地址均可以相互访问 需求分析&#xff1a; 1.图中存在五个路由器 AR1、AR2、AR3、AR4、AR5&#xff0c;分属不同自治系统&#xff08;AS&#xff09;&#xff0c;AR1 在 AS 100&#xff0c;AR2 - AR4 在 AS 200&#xff0c;AR5 在 AS …

滑动窗口——将x减到0的最小操作数

题目&#xff1a; 这个题如果我们直接去思考方法是很困难的&#xff0c;因为我们不知道下一步是在数组的左还是右操作才能使其最小。正难则反&#xff0c;思考一下&#xff0c;无论是怎么样的&#xff0c;最终这个数组都会分成三个部分左中右&#xff0c;而左右的组合就是我们…