一.继承

CSS中的祖先元素也会向后代传递一样东西:CSS属性的值。body元素是所有元素的祖先,所有标签都是它的后代,比如为body元素设置一种字体,那么文档中的所有元素,无论它在层次结构中多么靠下,都将继承这些样式。CSS中有很多属性都可以继承,其中相当一部分都与文本有关。

二.层叠

层叠,就是层叠样式表中的层叠,是一种样式在文档层次中逐层叠加的过程。目的是让浏览器面对某个标签特定属性的多个来源时,确定最终使用哪个值。

1.样式来源

  • 浏览器默认样式表:因为你还没有显示设置CSS属性,h1就会显示粗体,em显示斜休。
  • 用户样式表:查看网页的用户也可以提供样式表,尽管这样的用户不多见,这个选择对于视障用户很有用,可以通过用户样式表,强制浏览器加载的所有网页都以更大的字体显示。
  • 链接样式表
  • 嵌入样式
  • 行内样式

既然有这样多的样式来源,那么元素到底应该应用哪个样式中的属性设定呢,接下来就要了解层叠规则。

2.层叠规则

层叠规则1:找到应用给每个元素和属性的所有声明。

层叠规则2:按照顺序和权重排序。

浏览器依次检查5个来源,并设定匹配的属性。如果匹配的属性在下一个来源中也有定义,则更新该属性的值,如此循环,直到检查完全部5个来源为止。最终某个属性被设定成什么值,就用什么值来显示。

但是有一个另外,就是可以使用"!important"来声明权重,于是就算层叠的下一个来源设定了其他的属性值,最终也会使用应用了"!important"声明权重的样式。

此外应注意!important是不会被继承的。从下图可以了解到:span继承了p的color属性设定,但是行内样式显示覆盖掉了继承的样式

层叠规则3:按特指度排序。

特指度其实表示一条规则有多明确。

如果某个样式表中包含如下规则:

p{font-size:12px;}

p.largeText{font-size:16px;}

那么下面的段落

<p class="largeText">A bit of text</p>

将会显示16像素高的文本,因为第二条规则的选择符既包含标签名也包含类名,所以意义更明确,结果第二条规则会覆盖第一条规则中的同名属性。那么如何判别哪个声明特指度更高呢?

三.计算特指度

记分规则 I - C - E,

I代表ID,每个元素的ID是唯一的,所以它的辨识是最高的,比如我说一个身份证号,你肯定知道我在说谁。选择符中有一个ID,就在I的位置上加1.

C代表Class,代表类别。每个Html文档中,有许多元素的class属性会相同,所以辨识度次之。选择符中有一个类,就在C的位置上加1.

E代表Element,代表元素的种类,比如p、div等,比如我说div你在哪呢,没有人会知道我在说哪个div。选择符中有一个元素名,就在E的位置上加1.

在I项得分高的胜出,如果在I项的得分相同,则在C项得分高的胜出,如果在C项得分相同,则在E项得分高的胜出。如果最后I、C、E三项得分都相同,那么后声明的规则胜出。元素会应用辨识度最高的CSS属性声明。

下面通过几个例子来理解特指度。

p                                            0 - 0 - 1

p.largeText                              0 - 1 - 1

p#largeText                             1 - 0 - 1

body p#largeText                     1 - 0 - 2

body p#largeText ul.mylist        1 - 1 - 3

总结:

1.如果几个不同来源都为同一个标签的同一个属性定义了样式,行内样式胜过嵌入样式,嵌入样式胜过链接样式。在链接的样式表中,具有相同特指度的样式,后声明的胜过先声明的。

2.特指度更高的声明,无论它在哪里,都会胜出。

3.设定的样式胜过继承的样式,此时不用考虑特指度。

CSS设计指南之CSS三种机制:继承、层叠和特指的更多相关文章

  1. 《CSS 设计指南》学习笔记 一

    本篇文章是对这几天看完 Charles Wyke-Smit 的 <CSS 设计指南> 后的一些学习笔记与心得,笔者好像是大一的时候开始接触网页设计,由于并不是计算机专业的,所以所有都是自己 ...

  2. CSS围住浮动元素的三种方法

    浮动元素脱离了文档流,其父元素看不到它了,因而不会包围它.浮动会“扩散”到下一个清除浮动的元素处.这会引起不想要的页面布局效果. 清除浮动的方法有三种: 1.父元素overflow:hidden 2. ...

  3. CSS设计指南之浮动与清除

    原文:CSS设计指南之浮动与清除 浮动意思就是把元素从常规文档流中拿出来,浮动元素脱离了常规文档流之后,原来紧跟在其后的元素就会在空间允许的情况下,向上提升到与浮动元素平起平坐. 一.浮动 CSS设计 ...

  4. CSS 设计指南(第3版) 初读笔记

    第1章 HTML标记与文档结构 关于<title>标签:搜索引擎会给<title>标签中的文字内容赋予很高的权重.而且这些文字也会作为网页标题出现在搜索结果列表中. 无论你想了 ...

  5. CSS设计指南之理解盒子模型

    原文:CSS设计指南之理解盒子模型 一.理解盒模型 每一个元素都会在页面上生成一个盒子.因此,HTML页面实际上是由一堆盒子组成的.默认情况下,每个盒子的边框不可见,背景也是透明的,所以我们不能直接看 ...

  6. CSS设计指南之定位

    原文:CSS设计指南之定位 CSS布局的核心是position属性,对元素盒子应用这个属性,可以相对于它在常规文档流中的位置重新定位.position属性有4个值:static.relative.ab ...

  7. 【转】css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?

    摘要: css清除浮动float的三种方法总结,为什么清浮动?浮动会有那些影响?     一.抛一块问题砖(display: block)先看现象: 分析HTML代码结构: <div class ...

  8. CSS权威指南(第三版)

    CSS权威指南(第三版).pdf 网盘: https://545c.com/file/24657411-425141851   获取码:  276922

  9. CSS布局的三种机制

    浮动元素之间没有缝隙,这和行内块还是不一样的,有点区别的! 2) 浮动元素与兄弟盒子之间的关系 注意:解决浮动的四种办法,后三种都是针对浮动元素的父元素的.

随机推荐

  1. python三大器之while,if,for循环

    一.for循环(遍历循环) 在Python你可能要经常遍历列表的所有元素,对每个元素执行相同的操作;对于包含数字的列表,可能要对每个元素进行相同的计算;在网站中,可能需要显示文章中的每个标题等等.某一 ...

  2. c语言实现通讯录管理系统(c课程设计)

    工具:Visual C++6.0 说明: 本系统基于C语言实现班级通讯录管理系统,为大一时学习C语言刚入门所做的课程设计.功能包括增.删.查.改等,非常适合初学者练手.通讯录包括的个人信息有姓名.学号 ...

  3. python--re模块(正则表达式)

    RE是什么 正则 表达 式子 就是一些带有特殊含义的符号或者符号的组合 它的作用是对字符串进行过滤 在一堆字符串中找到你所关心的内容 你就需要告诉计算机你的过滤规则是什么样 通过什么方式来告诉计算机 ...

  4. Java基础——语法基础

    一.标识符 1.不能使用数字开头 2.不能使用关键字 (更多命名规范,参见基础加强随笔) 二.数据类型 主要分为四种: 整形: byte 1字节8位    范围 -128~127 short    2 ...

  5. C# 程序关闭托盘图标不会自动消失

    c#程序关闭托盘图标不会自动消失,进程的托盘图标却不能随着进程的结束而自动消失  必须将鼠标移到图标上面时才能消失?  请问如何才能做到图标随着进程的结束而自动消失呢(外部强行结束,如在任务管理器将其 ...

  6. springboot shiro没有注解解决方案

    颓废的悠然   springboot shiro开启注释 shiroconfiguration中增加 1 2 3 4 5 6 7 @Bean     public AuthorizationAttri ...

  7. L010 linux命令及基础手把手实战总结

    一转眼都快两周没更新了,最近实在太忙了,这两周的时间断断续续的把L010学完了,短短的15节课,确是把前10节的课程全部的运用一遍,从笔记到整理,再到重新理解,最后发布到微博,也确实提升了一些综合性能 ...

  8. swoole 相关

    安装虚拟机 VMware Workstation Pro 安装CentOS CentOS-7-x86_64-Minimal-1708.iso 安装FinalShell 教程地址 安装lnmp 教程地址 ...

  9. mysql数据库基本操作命令

    1.登录命令 mysql -u root -p "password" 2.列出所有数据库 show databases; 3.使用数据库 use db_name 4.列出数据库中所 ...

  10. Ping隧道

    1.研究原因: 校园内网的探索,校内电子图书馆资源的利用,认证校园网 2.目的: 内网服务器:在一台因防火墙等原因仅限icmp数据通过的 公网服务器 : 建立icmp 隧道链接,  并在公网服务器上进 ...