奶奶都能看懂的 CSS 选择器基础语法常用属性优先级

标题都是奶奶都能看懂了,那么我们肯定从最基础的开始讲。之所以这么自信是因为能踩的坑全帮你们踩过了……

开始之前,先来首诗感受一下,具体啥意思你看完本文就懂了。

点类井号逗为或,类多号单连为且。

id 优先类在后,类型选择在末尾。

代码优先难解决,拿出鼠标数一数。

如若个数全相等,末尾样式最优先。

外联选择需谨慎,勿忘行内价最高。

CSS 基础

如果你 html 不会我也没办法……你网站都没内容还加啥 CSS 美化我也是服气。

简而言之,CSS 就是给你的 html 元素加点样式。要解决这个问题,要分三步走:

  1. 对哪个元素应用样式?(CSS 选择器)
  2. 应用什么样式?(属性)
  3. 想要怎么样的样式?(属性的值)

听不懂括号里的不要紧,下面我们先来点实在的,CSS 写在哪里。

三种用 CSS 的方法

  • (常用)外联样式(就是单独开个 style.css,好处是多个 html 可以复用同一个 CSS)
<head><link rel="stylesheet" href="style.css">
</head>
<!--rel,即relationship,表示html与href中文件的关联,这里是样式表 (stylesheet)-->
  • 内联样式(在 head 中添加 style 标签,里面写 CSS)
<head><style>...</style>
</head>
  • 行内样式(对单个元素应用样式)
<div style="color:black;background-color:green"></div>
<!-- 没有选择器,因为你不用选择。什么是选择器看看下面就知道了 -->

基础 CSS 选择器

还记得上面的 CSS 三步走不?第一步是要选择你想要加样式的 html 元素。这叫做 CSS 选择器。

下面的代码,要么写在 .css 文件里,要么在上方内联省略号里

选择器分为三种。选元素类型、选元素的类(Class),选元素的 id。

p{} 
.class1{}
.bad{}
#short-p{}

第一行,选中页面内所有的 p 元素。第二行,选择类为 class1 的元素。第三行,选择 id 为 myid 的元素。记住,点号选类,井号选 id。(死规则,别问)

我咋知道元素的类和 id 啊?也没人告诉我啊?

……因为这是你自己定义的。

比如,下面的 html 片段,设定了类和 id

<div><p class="bad class0" id="short-p">哼哼啊啊啊</p><p class="bad class1" id="long-p">哼哼啊啊啊啊啊啊</p>
</div>

注意到了吗?class 可以重复,id 则是唯一的。并且 class 一个元素可以有多个,用空格隔开。

假设我们在此处的 html 中添加了外联样式,那么上面的 CSS 分别会选中哪些呢?

p{} -->选中 哼哼啊啊啊 和 哼哼啊啊啊啊啊啊 两个 p 元素
.class1{} -->选中 哼哼啊啊啊啊啊啊
.bad{} --> 选中 哼哼啊啊啊 和 哼哼啊啊啊啊啊啊 两个元素
#short-p{} -->选中 哼哼啊啊啊

如果你要加多个条件,并且用 连接起来,你可以用半角英文逗号连接起来,比如:

.class1,
.class0{
}

会选中两个 p 元素(class0或class1)。

如果你要加 ,直接写一起即可:

.class0.bad{}

只有第一个 p 元素会被选中(只有它满足即是class0,又是bad)。

由于一个元素只能有一个 id,并且无法重复,所以不存在多个条件的问题。

口诀:点类井号逗为或,类多号单连为且。(点是类,井是 id,即元素的码,逗号表示用或连接;类可以有多个,id 唯一,连起来表示用且连接)

常用属性

选择完成之后,当然要对选择的元素设定属性。

注意到了吗?上面的选择器后面都有一对大括号。在其中设定属性。

比如:

.class0.bad{color: green;background-color: red;
}

每个属性与值之间用 : (冒号和空格)隔开,属性与属性之间使用分号隔开。

上面的代码中用了 color background-color 分别表示字体颜色、背景颜色。保存后打开你的 html 文件,哼哼啊啊啊变成了绿色,有红色背景。(奶奶都会的英语你别说看不懂

常用的其他 CSS 属性:

p,div,h1 /* 简单来说,有文字的都能用 */
{ font-size: 20px; /* 字体大小 */font-family: serif; /* 字体 */font-weight: 800; /* 字体的粗细,也可以用 bold 代替数字 */text-align: center; /* 文本对于父容器的位置 */
}
img /* 针对图片元素的设定 */
{width: 300px; /* 控制图片宽度 */height: auto;
}

一些要注意的要点如下:

  • 这些英文你奶奶都会,如果你不会,赶紧去查一下单词含义然后记下来
  • 字体可以设置多个,用 , 隔开。如果字体名称里有空格,需要用 "" 进行包裹。例如 "Times New Roman",serif。浏览器会自动从前开始向后选择(并不是所有浏览器都支持你设定的自定义字体),因此,最后一个最好设定所有浏览器都支持的字体。
  • 设定了长度和宽度中的任何一个,另外一个设为 auto(自动),即可自动按照比例缩放
  • 只看不练没啥用,你可以拿自己之前写过的 html 练练手,设计一个有色彩的界面出来

表示关系的选择器

在了解了常用属性之后,我们回到第一步,再来讲讲表示元素之间关系的选择器。

什么意思呢?

在 html 中,元素中可以包括其它元素,比如上面的:

<div><p class="bad class0" id="short-p">哼哼啊啊啊</p><p class="bad class1" id="long-p">哼哼啊啊啊啊啊啊</p>
</div>

就是 div 里面包含了 p。

那么,如果我们再加一点……

<div><p class="bad class0" id="short-p">哼哼啊啊啊</p><p class="bad class1" id="long-p">哼哼啊啊啊啊啊啊</p>
</div>
<p class="bad class0" id="short-p-1">哼哼啊啊啊</p>
<p class="bad class1" id="long-p-2">哼哼啊啊啊啊啊啊</p>

如果说,我只想选中在 div 里面的,包含 bad 类的 p,怎么办?

直接用 id,或者修改 html 加个新的类当然可行,但是你也可以这么写:

div .bad{color: green;
}

这会将上面两个 p 颜色改为绿色。它表示 选择所有类型为 div 的元素内,类名称为 bad 的元素。这叫做子代选择器,将父与子用空格隔开。当然,你也可以加多个空格,来表示更加复杂的结构,比如 父 子 子 子。你可以用类型、类选择器进行组合。

组合时,请注意,逗号会将含有空格的选择器视为整体,观察下面的两个代码片段:

div .class0,div .class1 {color: green; /* 设置了 div 里面的两个 p */
}div .class0,.class1 {color: green; /* 猜测一下,这个的结果是? */
}

再把 html 给你看一眼,不用往上翻了……(id 删了,你用不到)

<div><p class="bad class0">哼哼啊啊啊</p><p class="bad class1">哼哼啊啊啊啊啊啊</p>
</div>
<p class="bad class0">哼哼啊啊啊</p>
<p class="bad class1">哼哼啊啊啊啊啊啊</p>

是下图所示的结果,你猜对了吗?这条规则表示,选择所有(类型为 div 的元素内,类名称为 class0 的元素),或者(类名称为 class1 的元素)。所以第一、第二个 p,以及第四个类包含 class1 的元素选中了。

结果

CSS 优先级

最难的部分到了!

当你设置的属性发生冲突时,优先级高的会优先使用。

什么叫冲突?看看下面的片段:

p{color: green;
}
.class0{color: white;
}

那么,这个的颜色是?

<p class="bad class0">哼哼啊啊啊</p>

好的,我们现在就来解决优先级问题。

第一规则

先来第一条,这条优先级是最高的:

  • id > class > type (id 优先于类,类优先于类型)

在上面的例子里,class0 优先级高于 p(类型),所以文字为白色。

继承属性问题

在这里要注意,有个特例,就是继承属性问题。

当一条 CSS 直接指向一个元素时,其优先级高于继承的属性。

啥叫继承属性?比如上面的,div 里套了 p,如果我给 div 应用 color 为蓝色,那么 p 也会被自动设置为蓝色,它从它的父亲那里拿到了属性,叫继承。

看看这个:

div .class0{color: blue;
}
#id1{color: red;
}
<div id="id1"><p class="class0">哼哼啊啊啊</p>
</div>

这时,继承属性打破了第一规则。文字被设定为蓝色,因为相比于继承,有更直接的属性设定(即使继承使用的 id 选择器优先级较高)

第二规则

如果上面的仍然不能决定,那么第二条:

  • 选择器个数越多,那么优先级越高
  • 空格、*>等不增加优先级

比如说:

div .class0{color: blue;
}
.bad{color: red;
}

那么,这个的颜色是?

<div><p class="bad class0">哼哼啊啊啊</p>
</div>

没错,根据第二规则,是蓝色。

让我们改动一下……

div #id1{color: blue;
}
#id1{color: red;
}

那么,这个的颜色是?

<div><p id="id1">哼哼啊啊啊</p>
</div>

因为第一条规则选择器个数多,所以是蓝色。

第三规则

让我们再改动一下……

.class0,.class1{color: blue;
}
.bad{color: red;
}

那么,这个的颜色是?

<p class="bad class0">哼哼啊啊啊</p>

应该是蓝色对吧?

当然……不是!因为上面的使用逗号隔开的,所以你可以把它视作下面的代码(它们是等效的):

.class0{color: blue;
}
.class1{color: blue;
}
.bad{color: red;
}

所以优先级根本就相同。此时,第二条规则也无法判断优先级,是时候拿出第三条规则了。

  • 如果仍然无法判断优先级,那么 CSS 文件中,越靠后的优先级越高。

所以上面的颜色为红色。

视觉样式的叠加

不是,哥们,你写这种冲突有意义吗???

当然有意义!因为,你可以先写一个优先级低的选择器比如把你的背景全部设为黑色,然后把其中一部分用优先级高的选择器覆盖,形成多样的视觉样式。看看这个:

*{background-color: black;color: white;
}
.steps li{color: red;background-color: white;
}

加上 html:

<ol class="steps"><li>Code</li><li>Deploy</li>
</ol>

得到的效果:

优先级的覆盖

COOL~

第零规则

对了,其实还有一条规则,我愿意称之为 第0规则

  • 行内样式>其它任何样式

就是直接在 html 标签里设定,优先级最高。这条比较特殊,所以这里简单提一下,也没啥坑。

总结

还记得开头的小诗吗?我们回顾一下,现在你能看懂了吧?

点类井号逗为或,类多号单连为且。

id 优先类在后,类型选择在末尾。

代码优先难解决,拿出鼠标数一数。

如若个数全相等,末尾样式最优先。

外联选择需谨慎,勿忘行内价最高。

写在后面

好了,基础语法讲完了,是不是奶奶都能看懂???

下一篇来讲盒子模型,一样的,还是奶奶系列,追求极致的简单。

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

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

相关文章

本地部署大模型体验小记

本地部署大模型的工具工具 优缺点LM Studio 图形界面友好,支持API访问,参数配置灵活Ollama GPU优化不足,CPU占用率高Chatbox 易出现输入卡顿,交互体验待优化Ollama 和 Chatbox 需要配合使用。 综合看更推荐使用 LM Studio 。 自定义模型 LM Studio 和 Ollama 除了使用默认的…

oi-math 重修

OI 数学重修 注: 很多东西没来得及写例题和代码,以后遇到会补上 想了一下虽然还有很多没写完,但是这两天要开数学了,决定后面的分成一个一个博客写然后在这挂链接,所以发出来了。 主题是看着 oi-wiki 写的,但细节上尤其是证明部分不太一样,毕竟也不是什么教学性质的,权…

方差、标准差、变异系数举例

一、标准差,也称均方差,是方差的算术平方根,标准差能反映一个数据集的离散程度。平均数相同的两组数据,标准差未必相同。太绕了,上例子:1、先找出平均数。平均数是数据的平均值,把数据加起来然后除以数据个数就可以得到。2、再找出方差。方差是数据偏离平均数的程度。得…

中电金信:大咖漫话|如何营销AI赋能的远程银行

看过“从远程银行看AIGC”连载,今天将与各位漫话AI的营销“哲学”。祝各位事业蟠蟠,巳巳如意,我们开年再会!

miniconda配置及常用命令,windows系统环境变量设置

安装完miniconda后,如果cmd中输入"conda info"没有输出信息,说明需要手动配置环境变量。 (1)右键点击桌面上“此电脑”,点击“属性” (2)在弹出的页面里点击“高级系统设置”(3)点击“环境变量”(4)双击“系统变量”里面的"Path":(5)点击“新…

CPUID CPU-Z(CPU检测工具) v2.14.0 中文绿色版

软件介绍 CPU-Z是最权威的CPU处理器检测工具。它支持的CPU种类相当全面,软件的启动速度及检测速度也很快,能够准确的检测出CPU、主板、内存、显卡、SPD等相关信息,包含制造厂及处理器名称,核心构造及封装技术,内部外部频率,最大超频速度侦测,处理器相关可以使用的指令集…

Windows11本地部署DeepSeek加速

本文介绍了一个可以相比之下更快速的在本地部署DeepSeek的方法,除了在上一篇博客中介绍的从Github或者Github加速网站获取Ollama之外,还可以通过从国内的其他大模型文件平台下载模型文件,来加速本地模型的构建。技术背景 在上一篇文章中我们介绍了在Ubuntu Linux操作系统上部…

EverEdit扩展脚本:在当前文件目录下新建同类型文件(增强)

1 扩展脚本:在当前文件目录下新建同类型文件(增强) 1.1 应用场景之前使用JS写了一个EverEdit的脚本,用于在当前打开的文档目录下新建一个同类型的文件,比如,在进行python语言学习时,做完练习,需要再开一个文件写代码,原脚本的不足是,每次弹出提示输入文件名的输入框,输…

Deepseek R1 + LMStudio 本地部署(windows)

DeepSeek-R1本地部署配置要求 Github地址:https://github.com/deepseek-ai/DeepSeek-R1?tab=readme-ov-file模型规模最低 GPU 显存推荐 GPU 型号纯 CPU 内存需求适用场景1.5B 4GB RTX 3050 8GB 个人学习7B、8B 16GB RTX 4090 32GB 小型项目14B 24GB A5000 x2 64GB 专业应用32…

GO指南之练习答案

GO指南之练习答案 Go指南 练习:循环与函数 为了练习函数与循环,我们来实现一个平方根函数:给定一个数 x,我们需要找到一个数 z 使得 z 尽可能地接近 x。 计算机通常使用循环来计算 x 的平方根。从某个猜测的值 z 开始,我们可以根据 z 与 x 的近似度来改进 z,产生一个更好…

第三轮easy~hard题目

题目1代码 #include<iostream> #include<queue> #include<string> using namespace std; int main() {priority_queue<int> s;string str;int a;str="0";while(str!="end"){cin>>str;if(str=="insert"){cin>&g…