CSS声明冲突、重叠、继承、视觉格式化模型

本文详细介绍了CSS中的声明冲突解决机制,包括层叠原则和优先级计算。内容涵盖优先级的五个等级,特殊性的比较规则,以及源次序的影响。此外,还详细讨论了定位体系,如常规流、浮动、绝对定位、相对定位和固定定位等,以及如何清除浮动和理解包含块概念。通过对这些概念的深入理解,读者可以更好地掌握CSS布局技巧。
摘要由CSDN通过智能技术生成

声明冲突

属性相同值不同,这就是声明冲突

层叠

层叠是一种机制,用于解决CSS声明冲突

层叠的过程

  • 比较优先级

每个声明都有一个优先级,当声明发生冲突,优先级高的会被保留,反之淘汰。一个声明的优先级与它的来源和重要性有关

若属性值后跟上!important表示是一条重要声明,反之表示普通声明

优先级从高到低:

1.浏览器默认样式表中的声明

2.用户样式表中的普通声明

3作者样式表中的普通声明

4.作者样式表中的重要声明

5.用户样式表中的重要声明

  • 比较特殊性

在比较特殊性时,每一个冲突的声明会生成4个数字分组(a,b,c,d),以比较特殊性a越大,特殊性越高,若a相同,比较b,b越大,特殊性越高,以此类推

嵌入idclass元素
abcd
style1000
id0100
class、属性、伪类0010
元素、伪元素0001
通配符0000
!important最高最高最高最高

规则适用范围越大,特殊性越低,适用范围越小,特殊性越高

行内样式>ID选择器>类选择器>元素选择器>通配符选择器

!important>style>id>class>element>*

​ 特殊性从高到低

  • 比较源次序

继承

强制继承,也叫做显式继承,属性值加inherit

视觉格式化模型

包含块

  • 每个元素都有一个包含块,它是一个区域,即元素在页面中摆放的区域

  • 通常情况下元素的包含块是它的父元素的内容盒content-box

初始化包含块

包含块:初始化包含块(initial containing block)

初始化包含块是浏览器在渲染前自动生成的一块区域

你可以想象成整个网页区域都是初始化包含块,根元素就是摆放在里面的

定位体系概述

视觉格式化模型规定了三种定位体系

常规流(normal)

margin能取负数,padding不能取负数

常规流,又叫普通流、文档流、普通文档流

常规流是最常见的定位体系,所有元素默认状态下都是常规流定位

垂直方向上若两个外边距相邻,则折叠

垂直方向:水平方向上不会重叠

外边距相邻:两个外边距之间没有border、padding和content

合并:均为正数取最大,均为负数取最小,一正一负则相加

overflow:hidden BFC 让盒子里面的东西不要影响外头的布局 溢出隐藏

overflow:visible 默认值 溢出可见

overflow:scroll 溢出滚动

浮动(float)

当元素的float属性值为left或right时为浮动元素

特点:

  • 左浮动的盒子向上向左排列

  • 右浮动的盒子向上向右排列

  • 浮动盒子的顶边不得高于上一个盒子的顶边

  • 若剩余空间无法放下浮动的盒子,则该盒子向下移动,直到具备足够的空间能容纳盒子,然后再向左或向右移动

当常规流遇上浮动

  • 常规流盒子和浮动盒子混合摆放

  • 浮动盒子在摆放时要避开常规流盒子

    父元素::after{ 
    content:“”;
    display:block;
    clear:both;
    }

  • 常规流盒子在摆放时无视浮动盒子

清除浮动

第一个元素清除浮动,可以让该元素在摆放时,出现在浮动元素的下方

clear:不可继承,默认值 找回父元素的高,clear写给父元素的最后一个 常规流 子元素

取值:none 不清除浮动

left 清除左浮动,元素在左浮动的盒子下方摆放

right 清除右浮动,元素在右浮动的盒子下方摆放

在没有最后一个子元素可以通过这个办法清除浮动

 

定位

任何一个元素都必须属于其中某一种定位体系。不同的定位体系中,元素在包含块中的尺寸和位置都会有一些差异

绝对定位(absolute positioned)

脱离文档流 不再占据空间

相对于设置了定位属性的父元素偏移,若果没有设置定位属性,则相对于html偏移

.box1{
    width: 200px;
    height: 200px;
    position: absolute;
}

静态定位

不脱离文档流

.box1{
    width: 200px;
    height: 200px;
    background-color: aqua;
    margin-top: 20px;
    position: static;
}

相对定位

相对于自己原本的位置偏移 元素原本所占空间不变,不脱离文档流

.box1{position: relative;
    top: 50px;
    left: 50px;
}

更改堆叠顺序 z-index 默认值为0

.box1{
    position: absolute;
    z-index: 2;
}

固定定位

相对于浏览器窗口

.box1{
    width: 800px;
    height: 800px;
 background-color: aqua;
 position: fixed;
}

粘性定位

.box1{
    width: 800px;
    height: 800px;
 background-color: aqua;
 position: sticky;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值