抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

本文最初于2017-07-29发表于博客园,并在GitHub上持续更新前端的系列文章。欢迎在GitHub上关注我,一起入门和进阶前端。

以下是正文。

本文重点

  • CSS的继承性
  • CSS的层叠性
    • 计算权重
    • 权重问题大总结
    • CSS样式表的冲突的总结
  • 权重问题深入
    • 同一个标签,携带了多个类名
    • !important标记

CSS的继承性

我们来看下面这样的代码,来引入继承性:

上方代码中,我们给div标签增加红色属性,却发现,div里的每一个子标签<p>也增加了红色属性。于是我们得到这样的结论:

有一些属性,当给自己设置的时候,自己的后代都继承上了,这个就是继承性。

继承性是从自己开始,直到最小的元素。

但是呢,如果再给上方的代码加一条属性:

上图中,我们给div加了一个border,但是发现只有div具备了border属性,而p标签却没有border属性。于是我们可以得出结论:

  • 关于文字样式的属性,都具有继承性。这些属性包括:color、 text-开头的、line-开头的、font-开头的。

  • 关于盒子、定位、布局的属性,都不能继承。

以后当我们谈到css有哪些特性的时候,我们要首先想到继承性。而且,要知道哪些属性具有继承性、哪些属性没有继承性。

CSS的层叠性

很多公司如果要笔试,那么一定会考层叠性。

层叠性:计算权重

层叠性:就是css处理冲突的能力。 所有的权重计算,没有任何兼容问题!

CSS像艺术家一样优雅,像工程师一样严谨。

我们来看一个例子,就知道什么叫层叠性了。

上图中,三种选择器同时给P标签增加颜色的属性,但是,文字最终显示的是蓝色,这个时候,就出现了层叠性的情况。

当多个选择器,选择上了某个元素的时候,要按照如下顺序统计权重:

id的数量,类的数量,标签的数量

因为对于相同方式的样式表,其选择器排序的优先级为:ID选择器 > 类选择器 > 标签选择器

针对上面这句话,我们接下来举一些复杂一点的例子。

层叠性举例

举例1:计算权重

如上图所示,统计各个选择器的数量,优先级高的胜出。文字的颜色为红色。

PS:不进位,实际上能进位(奇淫知识点:255个标签,等于1个类名)但是没有实战意义!

举例2:权重相同时

上图可以看到,第一个样式和第二个样式的权重相同。但第二个样式的书写顺序靠后,因此以第二个样式为准(就近原则)。

举例3:具有实战性的例子