CSS的三大特征&标签的显示模式

CSS的三大特征

1.1 CSS层叠性

概念:是指CSS样式的层叠。这种特性只针对出现样式冲突的情况,遵循就近原则显示样式。

比如:如果一个属性通过两个相同选择器设置到同一个元素上,那么这个时候一个属性就会将另一个属性层叠掉。

简单来讲就是:长江后浪推前浪,只显后浪无前浪。

1.2 CSS继承性

概念:子标签会继承父标签的某些样式,想要设置一个可继承的属性,只需将它应用于父元素即可(子承父业)。

优点:恰当地使用继承可以简化代码,降低CSS样式的复杂性。

           比如有很多子级孩子都需要某个样式,可以给父级指定一个,这些孩子继承过来就好了。

           一般用于对文本、字体、颜色等属性可以使用。text-,font-,line-这些元素开头的可以继承,以及color属性

简单来讲就是:龙生龙,凤生凤,老鼠的儿子会打洞。

1.3 CSS优先级

概念:定义CSS样式时,经常出现两个或更多规则应用在同一元素上,此时,

  • 选择器相同,则执行层叠性

  • 选择器不同,就会出现优先级的问题

优先级(权重)计算:

1.3.1 权重计算公式

标签选择器 计算权重公式

值从左到右,左面的最大,一级大于一级。

数位之间没有进制,级别之间不可超越

关于CSS权重,我们需要一套计算公式来去计算,这个就是 CSS Specificity(特殊性)

div {color: pink!important; }







继承或者 * 0,0,0,0
每个元素(标签选择器) 0,0,0,1
每个类,伪类 0,0,1,0
每个ID 0,1,0,0
每个行内样式 style="" 1,0,0,0
每个!important 重要的 ∞ 无穷大

1.3.2 权重叠加

经常用交集选择器,后代选择器等,是有多个基础选择器组合而成,那么此时,就会出现权重叠加

就是一个简单的加法计算

  • 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

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

CSS标签的显示模式

我们网页的标签非常多,在不同的地方会有不同的显示需求。标签的显示模式表示标签以什么方式进行显示。比如div 自己占一行, 比如span 一行可以放很多个。

2.1 块级元素(block-level)

块级元素的特点

  • 比较霸道,自己独占一行
  • 高度,宽度、外边距以及内边距都可以控制
  • 宽度默认是容器(父级宽度)的100%
  • 是一个容器及盒子,里面可以放行内或者块级元素

注意:

  • 只有文字才能组成段落 因此 p 里面不能放块级元素,特别是 p 不能放div
  • 同理还有这些标签h1,h2,h3,h4,h5,h6,dt,他们都是文字类块级标签,里面不能放其他块级元素。
  • 即文字类块级标签里不能再放其他块级元素

2.2 行内元素(inline-level)

行内元素的特点:

  • 相邻行内元素在一行上,一行可以显示多个
  • 高、宽直接设置是无效的
  • 默认宽度就是它本身内容的宽度
  • 行内元素只能容纳文本或则其他行内元素。

注意:

  • 链接里面不能再放链接。
  • 特殊情况a里面可以放块级元素,但是给a转换一下块级模式最安全。

2.3 行内块元素(inline-block)

行内块元素的特点:

  • 和相邻行内元素(行内块)在一行上,但是之间会有空白缝隙。一行可以显示多个
  • 默认宽度就是它本身内容的宽度。
  • 高度,行高、外边距以及内边距都可以控制。

2.4 三种模式总结区别

元素模式 元素排列 设置样式 默认宽度 包含
块级元素 一行只能放一个块级元素 可以设置宽度高度 容器的100% 容器级可以包含任何标签
行内元素 一行可以放多个行内元素 不可以直接设置宽度高度 它本身内容的宽度 容纳文本或则其他行内元素
行内块元素 一行放多个行内块元素 可以设置宽度和高度 它本身内容的宽度  

2.5 标签显示模式转换 display

  • 块转行内:display:inline;

  • 行内转块:display:block;

  • 块、行内元素转换为行内块: display: inline-block;

posted @ 2021-07-08 10:43  两口猪头肉OVO  阅读(156)  评论(0编辑  收藏  举报