大家都知道CSS的全称叫做“层叠样式表”,但估计很多人都不知道“层叠”二字的含义。其实,“层叠”指的就是样式的覆盖,当一个元素被运用上多种样式,并且出现重名的样式属性时,浏览器必须从中选择一个属性值,这个过程就叫“层叠”。样式覆盖(这种叫法更大众化些)遵循一定的规则,之前我对这个规则一直似懂非懂的,直到这几天看了”CSS: The Missing Manual”,才豁然开朗。下面是我的一些学习笔记。

首先需要明确的是,很多情况都会导致一个元素被运用上多种样式,样式覆盖的规则也需要根据不同的情况来定,具体规则如下。

规则一:由于继承而发生样式冲突时,最近祖先获胜。

CSS的继承机制使得元素可以从包含它的祖先元素中继承样式,考虑下面这种情况:

1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
<title>rule 1</title>
<style>
body {color:black;}
p {color:blue;}
</style>
</head>
<body>
    <p>welcome to <strong>gaodayue的网络日志</strong></p>
</body>
</html>

strong分别从body和p中继承了color属性,但是由于p在继承树上离strong更近,因此strong中的文字最终继承p的蓝色。

规则二:继承的样式和直接指定的样式冲突时,直接指定的样式获胜。

在上面的例子中,假如还指定了strong元素的样式,如:

1
strong {color:red;}

那么根据规则二,strong中的文字最终显示为红色。

规则三:直接指定的样式发生冲突时,样式权值高者获胜。

样式的权值取决于样式的选择器,权值定义如下表。

CSS选择器 权值
标签选择器 1
类选择器 10
ID选择器 100
内联样式 1000
伪元素(:first-child等) 1
伪类(:link等) 10

可以看到,内联样式的权值>>ID选择器>>类选择器>>标签选择器,除此以外,后代选择器的权值为每项权值之和,比如”#nav .current a”的权值为100 + 10 + 1 = 111。

规则四:样式权值相同时,后者获胜。

考虑下面这种情况

1
<p class="byline">Written by <a class="email" href="mailto:jean@cosmofarmer. com">Jean Graine de Pomme</a></p>
1
2
.byline a {color:red;}
p .email {color:blue;}

“.byline a”与”p .email”都直接指定了上面的a元素,且权值都为11,根据规则四,最终显示蓝色。

由于样式表可以是外部的,也可以是内部的,规则四提醒我们要注意外部样式表引入的顺序(及<link>元素的顺序),以及外部样式表与内部样式表的出现位置。一般来说,内部样式表出现在所有外部样式表的引入之后,一般是在</head>之前。

规则五:!important的样式属性不被覆盖。

!important可以看做是万不得已的时候,打破上述四个规则的”金手指”。如果你一定要采用某个样式属性,而不让它被覆盖的,可以在属性值后加上!important,以规则四的例子为例,”.byline a {color:red !important;}”可以强行使链接显示红色。大多数情况下都可以通过其他方式来控制样式的覆盖,不能滥用!important。

转载于:https://www.cnblogs.com/waruzhi/p/3824230.html

【转】CSS样式覆盖规则相关推荐

  1. [css] 说说你对CSS样式覆盖规则的理解

    [css] 说说你对CSS样式覆盖规则的理解 1.选择器的权重覆盖: 2.相同选择器的顺序覆盖: 3.行内样式>内联样式>外联样式 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很 ...

  2. CSS样式:覆盖规则

    规则一:由于继承而发生样式冲突时,最近祖先获胜. CSS的继承机制使得元素可以从包含它的祖先元素中继承样式,考虑下面这种情况: <html><head><title> ...

  3. css样式继承规则详解

    css样式继承规则详解 一.总结 一句话总结:继承而发生样式冲突时,最近祖先获胜(最近原则). 1.继承中哪些样式不会被继承? 多数边框类属性,比如象Padding(补白),Margin(边界),背景 ...

  4. css样式命名规则(仅供参考)

    今天在懒人图库网站(http://www.lanrentuku.com)看到了css样式命名规则,在这里记录一下,方便以后规范命名.      原文地址:http://www.lanrentuku.c ...

  5. css样式优先级规则总结

    CSS样式优先级规则共有4点 1)不同类型css选择器,优先级总是符合如下规则 内联样式 > ID 选择器 >伪类 > 属性选择器 > 类选择器 >元素(类型)选择器 & ...

  6. dw中css目标规则命名,css 常用样式命名规则

    大家在写css的时候,对一些html标签起一个合适的名字是个很头疼的事情,现在给大家分享项目中常用的名字供参考. 外套:wrap  --用于最外层 头部:header  --用于头部 主要内容:mai ...

  7. css样式表中的样式覆盖顺序(转)

    有时候在写CSS的过程中,某些限制总是不起作用,这就涉及了CSS样式覆盖的问题,如下 Css代码   #navigator { height: 100%; width: 200; position:  ...

  8. 强制改变css样式优先级

    1:!important作用是提高指定CSS样式规则的应用优先权.在CSS中,通过对某一样式声明! important ,可以更改默认的CSS样式优先级规则,使该条样式属性声明具有最高优先级,也就是相 ...

  9. html和css执行顺序,CSS样式的优先级执行顺序和覆盖规则

    好看的网站离不开css样式的布局和装饰,那么大量的css样式,它们的优先级执行顺序和覆盖规则是什么呢? CSS主要有三种引用方式:元素上的style.文件头上的style元素.外部样式文件.这三种优先 ...

最新文章

  1. Android自定义View实践 空气质量检测 pm2.5
  2. jqGrid格式化日期
  3. 七、功能性组件与事件逻辑(IVX 快速开发教程)
  4. all方法 手写promise_试题-手写实现一个 promise.all - 拿OFFER
  5. linux java mail 时间,Javamail在Windows上工作,而不是在Linux上
  6. 转:解决vs2015生成软件在XP中运行时提示“不是有效的WIN32应用程序”
  7. 用户画像的构建与使用2应用
  8. Server.MapPath 出现未将对象引用设置到对象的实例
  9. Sonya and Robots(set应用)
  10. BIOS报警声_文伟_新浪博客
  11. WMS仓库管理软件操作流程是怎样
  12. Git配置KDiff3
  13. 16 Three.js 游戏操作案例
  14. 博客做外链(可以发布外链的博客有哪些平台)
  15. 王彦霖艾佳妮婚纱大片,校园牵手漫步,女方秀心形婚戒
  16. requestAnimationFrame运动框架实现-果冻效果
  17. mysql 8安装方法_Mysql8.0.17安装教程【推荐】
  18. nginx另类复杂的架构
  19. 我的项目_唐诗可视化项目
  20. MATLAB deconvwnr(维纳滤波)应用

热门文章

  1. WPF之无法触发KeyDown或者KeyUp键盘事件
  2. Wayland 源码解析之代码结构
  3. 【原创】ABAP动态编程之功能实现
  4. [Android] Android学习手记(二)
  5. 主机无法连接虚拟机中的redis服务
  6. Ubuntu18.04更换为国内源
  7. php获取页面的可视内容高度,网页制作技巧:获取页面可视区域的高度_css
  8. 面试一口气说出Spring的声明式事务@Transactional注解的6种失效场景
  9. Git的smart Checkout\force checkout\Don‘t Checkout的区别
  10. linux的sed命令是什么,linux sed命令