首页 web前端 html教程 CSS的独特性Specificity的示例代码分析

CSS的独特性Specificity的示例代码分析

Mar 29, 2017 pm 05:39 PM

CSS是一个陈述性语言,你可以为DOM中每个元素定义规则风格, 在这些定义中,一些规则会比在顺序上在后面的其他规则具有更高的优先权,比如inline内联就比其之前定义的规则更优先,比如如果我们有下面HTML和CSS代码:

<button class="button-warning">
登录后复制

其CSS是:

.button-warning {
background: red;
}


button, input[type=submit] {
background: gray;
}
登录后复制

因为.button-warning 在 button, input[type=submit]之前定义,按顺序关系猜测,它的background: red会被后者的background: gray覆盖,其实不是,它反而比后者更优先。

一些selector选择器会比其他更具有特殊性,比如#id选择器比.class选择器更高优先权。因为选择器之间有这种相比而言更具特殊性或优先权的现象,因此,如果我们不断任意用一个选择器高于另外一个选择器,那么就会陷入特殊性地狱,因为楼外有楼,山外有山,这样的代码难以维护。所以,在编写选择器时,我们需要问自己,这个选择器是能实现功能的中最低级别的?

下面是特殊性的层次,从高到低:

1.内联最高,内联是用在XHTML中的style内部,直接和XHTML元素挂钩,比如:

<h1 style="color: #fff;">
登录后复制

这个就是在h1元素中内联了style值为”color: #fff;“,这个内联是比其他包括在css文件中的h1定义更具有特殊性,优先权最高,尽管你在css文件中也定义了h1的style,但是因为有了这行的内联定义而失效。

2. 其次是选择器的ID,ID是HTML元素的唯一标识,使用#前缀,比如#p。

3.再次是选择器的类 属性伪类,包括以圆点为前缀的.classes [属性] 或伪类的:hover :focus

4.Html元素和伪元素 包括:before:after实例

如果一个元素综合了以上多个特殊性,那么计算特殊性的分数越高,优先权越高,如何计算特殊性?

首先从0分开始,内联增加1000分,ID增加100分,类和伪类加10分,元素和伪元素 加1分。

比如:

body #content .data img:hover
登录后复制

特殊性分数值计算如下:#content是ID,故加100分;.data是类,故加10分;而:hover是伪类故加10分,body是属于Html元素故加1分,而img也是Html元素故加1分,总分是122分。

比如:CSS定义如下:

a{ color:blue;}
p a{ color:green;}
p a.mycolor{ color:red;}
登录后复制

那么Html规则使用如下:

<p><a href="#" class="mycolor"></a></p>
登录后复制
<p><a href="#" class="mycolor"></a></p>

那么,最后哪个定义占据优先权,也就是字体到底是什么颜色?注意这里有一个.mycolor选择器类是分数最高,会加10分,因此这个字的颜色最后为红色。当然,如果没有.mycolor定义,比如:

<p><a href="#" ></a></p>
登录后复制

这时颜色是绿色,因为都是有两个普通html元素p和a,分数为2。

所以,这里有另外一个计算特殊性方法:

  1. 统计选择器中ID的数量,也就是#p之类数量

  2. 统计选择器中的.class类数量

  3. 统计html元素名称和伪元素数量

最后,按照三个顺序从高到低1条-2条-3条定义特殊性。

以上就是CSS的独特性Specificity的示例代码分析的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1666
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
vue中怎么用bootstrap vue中怎么用bootstrap Apr 07, 2025 pm 11:33 PM

在 Vue.js 中使用 Bootstrap 分为五个步骤:安装 Bootstrap。在 main.js 中导入 Bootstrap。直接在模板中使用 Bootstrap 组件。可选:自定义样式。可选:使用插件。

了解HTML,CSS和JavaScript:初学者指南 了解HTML,CSS和JavaScript:初学者指南 Apr 12, 2025 am 12:02 AM

WebDevelovermentReliesonHtml,CSS和JavaScript:1)HTMLStructuresContent,2)CSSStyleSIT和3)JavaScriptAddSstractivity,形成thebasisofmodernWebemodernWebExexperiences。

HTML,CSS和JavaScript的角色:核心职责 HTML,CSS和JavaScript的角色:核心职责 Apr 08, 2025 pm 07:05 PM

HTML定义网页结构,CSS负责样式和布局,JavaScript赋予动态交互。三者在网页开发中各司其职,共同构建丰富多彩的网站。

bootstrap怎么写分割线 bootstrap怎么写分割线 Apr 07, 2025 pm 03:12 PM

创建 Bootstrap 分割线有两种方法:使用 标签,可创建水平分割线。使用 CSS border 属性,可创建自定义样式的分割线。

bootstrap怎么插入图片 bootstrap怎么插入图片 Apr 07, 2025 pm 03:30 PM

在 Bootstrap 中插入图片有以下几种方法:直接插入图片,使用 HTML 的 img 标签。使用 Bootstrap 图像组件,可以提供响应式图片和更多样式。设置图片大小,使用 img-fluid 类可以使图片自适应。设置边框,使用 img-bordered 类。设置圆角,使用 img-rounded 类。设置阴影,使用 shadow 类。调整图片大小和位置,使用 CSS 样式。使用背景图片,使用 background-image CSS 属性。

bootstrap怎么设置框架 bootstrap怎么设置框架 Apr 07, 2025 pm 03:27 PM

要设置 Bootstrap 框架,需要按照以下步骤:1. 通过 CDN 引用 Bootstrap 文件;2. 下载文件并将其托管在自己的服务器上;3. 在 HTML 中包含 Bootstrap 文件;4. 根据需要编译 Sass/Less;5. 导入定制文件(可选)。设置完成后,即可使用 Bootstrap 的网格系统、组件和样式创建响应式网站和应用程序。

bootstrap怎么调整大小 bootstrap怎么调整大小 Apr 07, 2025 pm 03:18 PM

要调整 Bootstrap 中元素大小,可以使用尺寸类,具体包括:调整宽度:.col-、.w-、.mw-调整高度:.h-、.min-h-、.max-h-

bootstrap按钮怎么用 bootstrap按钮怎么用 Apr 07, 2025 pm 03:09 PM

如何使用 Bootstrap 按钮?引入 Bootstrap CSS创建按钮元素并添加 Bootstrap 按钮类添加按钮文本

See all articles