3.层叠

稍微复杂的样式表中都可能存在两条甚至多条规则同时选择一个元素的情况。CSS通过一种叫作层叠(cascade)的机制来处理这种冲突。

层叠机制的原理是为规则赋予不同的重要程度。最重要的是作者样式表,即由网站开发者所写的样式。其次是用户样式表,用户可以通过浏览器的设置选项,为网页应用自己的样式。排在最后的是浏览器(或用户代码)的默认样式表,它们一般都会被作者样式表覆盖掉。

CSS允许用户使用!important覆盖任何规则。

层叠机制的重要性级别从高到低:

  • 标注为!important的用户样式
  • 标注为!important的作者样式
  • 作者样式
  • 用户样式
  • 浏览器的默认样式

在此基础上,规则再按选择符的特殊性排序。特殊性高的选择符会覆盖特殊性低的选择符。如果两条规则的特殊性相等,则后定义的规则优先。

4.特殊性

为了量化规则的特殊性,每种选择符都对应着一个数值。

一个规则的特殊性就表示为其每个选择符的累加数值。

特殊性由高到低:

  • 行内样式
  • ID选择符的数目
  • 类(class)选择符、伪类选择符及属性选择符的数目
  • 类型(type)选择符和伪元素选择符的数目

如果两条规则拥有相等的特殊性,则优先应用后定义的规则,也就是层叠机制

理解特殊性是写好CSS的关键,而控制特殊性规则是大型网站开发中最难处理的问题。利用特殊性,可以先为公用元素设置默认样式,然后在更特殊的元素上覆盖这些样式。

我们应该简化选择符、降低特殊性。

5.继承

任何直接应用给元素的样式都会覆盖继承的样式,因为继承的样式没有任何特殊性。

继承是很有用的机制,有了它就可以避免给一个元素的所有后代重复应用相同的样式。

6.为文档应用样式

6.1 link与style元素

把样式放在style元素中。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
body {
color: black;
}
</style>
</head>
<body>
<p>A general intro</p>
</body>
</html>

为了让样式表能在多个页面中重用,通常最好把它保存到一个外部文件中。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style> </style>
<link href="base.css" rel="stylesheet"> <!-- 外部文件 -->
</head>
<body>
<p>A general intro</p>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style>
@import url("base.css"); /* 使用@import加载外部文件 */
</style>
</head>
<body>
<p>A general intro</p>
</body>
</html>

如果为某个元素应用样式时,有两个或更多特殊性相等的规则互相竞争,则后声明的样式胜出。

6.2 性能

选择以什么方式把CSS加载到页面中,决定了浏览器显示页面的速度。

1.减少HTTP请求

2.压缩和缓存内容

3.不让浏览器渲染阻塞JavaScript

如果你在HTML文档的<head>元素中加入了<script>元素,浏览器必须先把它链接的脚本下载下来,然后再向用户显示网页内容。换句话说,这种情况下HTMLCSS解析完全被下载以及执行脚本阻断了,也就是所谓的“渲染阻塞”。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style> </style>
</head>
<body>
<!-- 最后加载JavaScript以避免渲染阻塞 -->
<script src="core.js"></script>
</body>
</html>

参考资料:

  • 《精通CSS》— [英] 安迪·巴德、[瑞典] 埃米尔·比约克隆德

CSS基础知识(下)的更多相关文章

  1. 前端开发:css基础知识之盒模型以及浮动布局。

    前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西?  为什么这个浮动没有效果?  这个问题楼主已经回答了n遍.今天则是把 ...

  2. CSS基础知识之float

    前段时间写过一篇CSS基础知识之position,当时对float的理解不太准确,被慕课网多名读者指出(原文已修正,如有误导实在抱歉).现对float进行更深入的学习,在此把学习心得分享给大家. 浮动 ...

  3. (转)第一天 XHTML CSS基础知识 文章出处:标准之路(http://www.aa25.cn/div_css/902.shtml)

    欢迎大家学习<十天学会web标准>,也就是我们常说的DIV+CSS.不过这里的DIV+CSS是一种错误的叫法,建议大家还是称之为web标准. 学习本系列教程需有一定html和css基础,也 ...

  4. CSS基础知识之position

    最近在慕课网学习了 网页布局基础 和 固定层效果 ,都是由声音甜美的 婧享人生 老师所录制,视频详细讲解了CSS中position的用法,在此把学习笔记分享给大家. CSS定位机制 标准文档流(Nor ...

  5. 【CSS】 CSS基础知识 属性和选择

    css基础知识 html的基本标签都是千篇一律的,为了能够个性化外观,就需要进行样式的调整,而css就是专门用来维护,管理样式的一种格式.在html中定义css有三种方法 1. 为标签添加style属 ...

  6. CSS基础知识01

    一.CSS基础知识介绍 1.css是cascading style sheet层叠式样式表的简写 2.css小用法 加粗:font-weight:bold;             正常用:norma ...

  7. 〖前端开发〗HTML/CSS基础知识学习笔记

    经过一天的学习,把慕课网的HTML/CSS基础知识学完了,笔记整理: 1. 文件结构: HTML文件的固定结构: <html> <head>...</head> & ...

  8. Web学习篇之---css基础知识(一)

    css基础知识(一) 1.css样式: 载入css样式有下面四种: 1).外部样式 2).内部样式 3).行内样式 4).导入样式 <link href="layout.css&quo ...

  9. DIV+CSS专题:第一天 XHTML CSS基础知识

    欢迎大家学习<十天学会web标准>,也就是我们常说的DIV+CSS.不过这里的DIV+CSS是一种错误的叫法,建议大家还是称之为web标准.   学习本系列教程需有一定html和css基础 ...

  10. HTML+CSS基础知识(2)选择器的使用、盒子模型的讲解、列表的使用

    文章目录 1.CSS基础知识 2.css样式 2.1.代码: 2.2 测试结果 3.CSS的语法 3.1 代码 4.块元素和行内元素 4.1 代码 4.2 测试结果 5.常用的选择器 5.1 代码块 ...

随机推荐

  1. redis(二十三):Redis 集群(proxy 型)二

    redis的确是一个非常高效的缓存服务器,但是单台redis服务器的内存管理能力有限,如果一味的加大内存的话会导致redis服务器的性能下降,所以就必须要搭建redis集群来提供服务.在redis官方 ...

  2. How to change the text color in the terminal

    You can open the file ~/.bashrc and then choose the force_color_prompt=yes otherwise, you can change ...

  3. POJ 1063 Flip and Shift 最详细的解题报告

    题目来源:Flip and Shift 题目大意:一个椭圆形的环形容器中有黑色和白色两种盘子,问你是否可以将黑色的盘子连续的放在一起.你可以有以下两种操作: 1.顺时针旋转所有的盘子 2.顺时针旋转3 ...

  4. [Cordova]Cordova6.x自定义插件之Andorid

    1.继承了CordovaPlugin的Java Class 需要重写execute方法,如下: 2.在res/xml/config.xml中关联上述java class 3.在assets/www/p ...

  5. day3:强制类型转换&自动类型转换&变量缓存机制

    1.Number的强制类型转换(int,float,bool,complex) 1.int 强制转换成整形 float可以转化成int bool可以转化成int str(形如"123&quo ...

  6. Go的100天之旅-常量

    常量 简介 道可道,非常道.这里常道指的永恒不变的道理,常有不变的意思.顾名思义和变量相比,常量在声明之后就不可改变,它的值是在编译期间就确定的. 下面简单的声明一个常量: const p int = ...

  7. 定时器三----js定时器

    方法一:        var t;        //初始化定时器    $(function(){        init_fun_timer1();            });         ...

  8. OSCP Learning Notes - WebApp Exploitation(5)

    Remote File Inclusion[RFI] Prepare: Download the DVWA from the following website and deploy it on yo ...

  9. Centos7安装ftp服务

    本文介绍的ftp是可以使用匿名用户登录,且默认路径是根路径,私人使用非常方便,公开使用具有一定的风险,不安全. # .安装 yum install -y vsftpd # .配置 vim /etc/v ...

  10. 设计模式:Adapter模式

    目的:复用代码和兼容以前的代码 思想:提供一个中间层,做兼容 方法:“继承”的方式,“委托”的方式 继承关系图: 委托方式 继承方式 例子: //原来的打印 class Print { public: ...