CSS——CSS 三大特性(理论)

简介: CSS——CSS 三大特性(理论)

层叠 继承 优先级 是我们学习CSS 必须掌握的三个特性。


CSS特性


CSS层叠性


所谓层叠性是指多种CSS样式的叠加。


是浏览器处理冲突的一个能力,如果一个属性通过两个相同选择器设置到同一个元素上,那么这个时候一个属性就会将另一个属性层叠掉


比如先给某个标签指定了内部文字颜色为红色,接着又指定了颜色为蓝色,此时出现一个标签指定了相同样式不同值的情况,这就是样式冲突。


一般情况下,如果出现样式冲突,则会按照CSS书写的顺序,以最后的样式为准。


样式冲突,遵循的原则是就近原则。 那个样式离着结构近,就执行那个样式。


样式不冲突,不会层叠

我们老师教的CSS最后的执行口诀:  长江后浪推前浪,前浪死在沙滩上。


CSS继承性


所谓继承性是指书写CSS样式表时,子标签会继承父标签的某些样式,如文本颜色和字号。想要设置一个可继承的属性,只需将它应用于父元素即可。


简单的理解就是: 子承父业。


CSS最后的执行口诀:  龙生龙,凤生凤,老鼠生的孩子会打洞。


注意:


恰当地使用继承可以简化代码,降低CSS样式的复杂性。子元素可以继承父元素的样式(text-,font-,line-这些元素开头的都可以继承,以及color属性)


这里的继承是属性的继承,记住千万不要和权重的继承搞混,权重的继承为零不代表属性就不继承。切记切记。


CSS优先级


定义CSS样式时,经常出现两个或更多规则应用在同一元素上,这时就会出现优先级的问题。


在考虑权重时,初学者还需要注意一些特殊的情况,具体如下:


继承样式的权重为0。即在嵌套结构中,不管父元素样式的权重多大,被子元素继承时,他的权重都为0,也就是说子元素定义的样式会覆盖继承来的样式。


行内样式优先。应用style属性的元素,其行内样式的权重非常高,可以理解为远大于100。总之,他拥有比上面提高的选择器都大的优先级。


权重相同时,CSS遵循就近原则。也就是说靠近元素的样式具有最大的优先级,或者说排在最后的样式优先级最大。


CSS定义了一个!important命令,该命令被赋予最大的优先级。也就是说不管权重如何以及样式位置的远近,!important都具有最大优先级。但是!important应用时要慎重,不到万不得已尽量少用


CSS特殊性(Specificity)


关于CSS权重,我们需要一套计算公式来去计算,这个就是 CSS Specificity,我们称为CSS 特性或称非凡性,它是一个衡量CSS值优先级的一个标准 具体规范入如下:


specificity用一个四位的数 字串(CSS2是三位)来表示,更像四个级别,值从左到右,左面的最大,一级大于一级,数位之间没有进制,级别之间不可超越。


权重是可以叠加的


比如的例子:


div ul  li   ------>      0,0,0,3
.nav ul li   ------>      0,0,1,2
a:hover      -----—>      0,0,1,1
.nav a       ------>      0,0,1,1   
#nav p       ----->       0,1,0,1


注意:


数位之间没有进制 比如说: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0, 所以不会存在10个div能赶上一个类选择器的情况。


继承的 权重是 0,但是属性依然是会继承的,权重只是我们用来算数的。


总结优先级:


使用了 !important声明的规则。


内嵌在 HTML 元素的 style属性里面的声明。


使用了 ID 选择器的规则。


使用了类选择器、属性选择器、伪元素和伪类选择器的规则。


使用了元素选择器的规则。


只包含一个通用选择器的规则。


同一类选择器则遵循就近原则。


总结:


权重是优先级的算法,层叠是优先级的表现


权重计算案例


image.png

 <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
  #ya {  /*权重 0,1,0,0*/
    color: blue;
  }
  .yase {   /* 类选择器权重 高于 标签选择器   权重   0, 0, 1, 0*/
    color: green;
  }
  div { 
    /* 权重   0, 0, 0, 1*/
    /* 权重   0, 0, 0, 1*/
    color: red;
  }
  div { 
    /* 权重   0, 0, 0, 1*/
    /* 权重   0, 0, 0, 1*/
    color: hotpink!important;
  }
  *  {    0 0 0 0 
  }
  /**  0000
  div 0001
  .one 0010
  #two 0100
  行内 1000
  important ∞*/
  </style>
</head>
<body>
  <div class="yase" id="ya" style="color: orange">最后是粉色</div>
</body>
</html>


继承权重案例


 <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
  .father { /* 0010*/
    color: green!important;
  }
  p {   /*0001*/
    color: red;
  }
  div p {
    color: pink;
  }
  </style>
</head>
<body>
  <div class="father">
    <p>最后还是粉色 自己可以算一算</p>
  </div>
</body>
</html>
相关文章
|
3月前
|
前端开发 JavaScript 开发者
探索Web设计新纪元:CSS3的革新特性如何重塑我们的网页视觉体验?
【8月更文挑战第26天】随着Web技术的发展,CSS3为前端开发带来了众多激动人心的新特性,极大提升了网页设计的视觉效果与创意空间。本文通过对比CSS3与CSS2,详细介绍了CSS3在选择器增强、圆角阴影处理、渐变背景应用、转换动画实现、文字效果优化、媒体查询支持及多列布局方面的显著改进,展示了CSS3如何助力开发者打造更具吸引力和互动性的网页体验。
55 1
|
2月前
|
前端开发
【前端web入门第四天】02 CSS三大特性+背景图
本文详细介绍了CSS的三大特性:继承性、层叠性和优先级,并深入讲解了背景图的相关属性,包括背景属性、背景图的平铺方式、位置设定、缩放、固定以及复合属性。其中,继承性指子元素自动继承父元素的文字控制属性;层叠性指相同属性后定义覆盖前定义,不同属性可叠加;优先级涉及选择器权重,包括行内样式、ID选择器等。背景图部分则通过具体示例展示了如何设置背景图像的位置、大小及固定方式等。
259 91
|
11天前
|
前端开发
css特性
css特性 1.继承性:子级继承父级文字控制属性 ps:子级拥有自己的样式则不会继承父级。 2.层叠性:相同的属性后面覆盖前面,不同的属性叠加 3.优先级:选择器优先级高的样式生效 公式:通配符<标签<类<id<行内样式<!important(选中范围越大,优先级越低) 叠加计算规则:存在复合选择器时,从左向右依次比较个数,同一级个数多的优先级高,如果个数相同,则向后比较;!important权重最高;继承权重最低。
|
6月前
|
机器学习/深度学习 移动开发 前端开发
CSS3 新特性
CSS3 新特性
71 0
|
3月前
|
前端开发 JavaScript API
Vue 3 新特性:在 Composition API 中使用 CSS Modules
Vue 3 新特性:在 Composition API 中使用 CSS Modules
|
6月前
|
前端开发 JavaScript 开发者
CSS3作为CSS的最新版本,引入了许多强大的新特性和改进
【5月更文挑战第26天】CSS3作为CSS的最新版本,引入了许多强大的新特性和改进
63 2
|
5月前
|
前端开发
番外篇-CSS3新增特性
番外篇-CSS3新增特性
32 0
|
6月前
|
前端开发 UED
【专栏:CSS 进阶篇】CSS3 新特性:过渡、动画与变形
【4月更文挑战第30天】CSS3的过渡、动画和变形三大特性为网页设计注入活力,创造生动丰富的用户体验。过渡提供平滑效果,常用于按钮点击等;动画实现复杂动态效果,适用于滚动字幕等;变形允许元素几何变换,如旋转和缩放。实际应用包括动态导航菜单、图片轮播和加载动画。然而,需注意浏览器兼容性、性能优化和设计平衡。掌握这些特性,将为网页设计带来更多创新可能。
164 1
|
6月前
|
前端开发 JavaScript 开发者
【Web 前端】css3的新特性有哪些?
【4月更文挑战第22天】【Web 前端】css3的新特性有哪些?
|
6月前
|
前端开发 容器
CSS面试考点:隐藏元素、BFC、垂直居中、CSS3新特性
【4月更文挑战第2天】 CSS面试考点:隐藏元素、BFC、垂直居中、CSS3新特性
53 10