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. java 面向对象(十三):面向对象的特征二:继承性 (二) 方法的重写

    1.什么是方法的重写(override 或 overwrite)?子类继承父类以后,可以对父类中同名同参数的方法,进行覆盖操作. 2. 应用:重写以后,当创建子类对象以后,通过子类对象调用子父类中的同 ...

  2. Python之爬虫(二十一) Scrapy爬取所有知乎用户信息(下)

    在上一篇文章中主要写了关于爬虫过程的分析,下面是代码的实现,完整代码在:https://github.com/pythonsite/spider items中的代码主要是我们要爬取的字段的定义 cla ...

  3. C#/VB.NET 在Word中添加条码、二维码

    本文介绍如何通过C# 和VB.NET代码实现在Word文档中添加条码和二维码.代码中将分为在Word正文段落中.页眉页脚中等情况来添加. 使用工具:Free Spire.Office for .NET ...

  4. redis pipelined 示例

    redis 常用的数据类型 有序集合(sort set).无序集合 (set),hashMap redis pipelined 示例 List<Object> list = jedisTe ...

  5. DPDK之什么是imissed、ierrors、rx_nombuf

    DPDK之什么是imissed.ierrors.rx_nombuf 在采用DPDK进行网络抓包时常常会通过rte_eth_stats_get函数获取当前网卡的丢包状态,首先看一下该函数的声明: // ...

  6. 解决element上传功能清除单个文件的问题

    今天,在使用 element 实现一个上传文件的功能. 接下来,要对上传的文件列表,实现删除单文件的功能. 看了 element 开发文档,发现 on-remove 没有特别的详细的说明,刚开始使用 ...

  7. 关于调用三方平台接口与推送接口的总结<二>(2020.7.27)

    前言:本篇博客是接着上篇总结写的,想了解怎么对接第三方平台接口的同学可以看我上一篇博客,地址是  https://www.cnblogs.com/alanturingson/p/13377500.ht ...

  8. 扯扯Java中的锁

    前言 又过去了一个周末,最近陆陆续续的看了<并发编程的艺术>一书,对锁有不少感悟,这次就聊聊Java中的锁事.本文纯粹是漫谈,想到哪说到哪,但准确性肯定会保证,倘若有不正确之处,还请交流指 ...

  9. SpringCloud Bus消息总线简介

    简介: SpringCloud Bus配合SpringCloud Config使用可以实现配置的动态刷新 SpringCloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了 ...

  10. 微服务迁移记(五):WEB层搭建(2)-SpringSecurity集成

    一.redis搭建 二.WEB层主要依赖包 三.FeignClient通用接口 以上三项,参考<微服务迁移记(五):WEB层搭建(1)> 接下来,集成SpringSecruity,实现用户 ...