CSS三种布局模型

在网页中,元素有三种布局模型

  1. 文档流(Flow)
  2. 层模型(Layer)
  3. 浮动模型(Float)

 

1、文档流

特点:默认网页布局模型,块元素自上而下按顺序垂直分布(独占一行),行内元素从左到右水平分布显示。

 

2、层模型

特点:三种形式 1, 相对定位(position:relative) 2,绝对定位(position:absolute)3,固定定位(position:fixed)

 

3、浮动模型

特点:float设置不同浮动的效果(right,left)

 

深入了解:

相对定位

设置position:relative表示相对定位,没有脱离文档流。通过left,right,top,bottom属性确定元素在正常文档流中偏离的位置,相对于元素初始的位置移动,偏移前的位置保留不动。就算元素被偏移了,但是他仍然占据着他没有偏移的空间。

 

绝对定位

设置position:absolute表示绝对定位,脱离文档流。通过left,right,top,bottom属性相对于最近的一个具有定位的父级进行定位,如果没有则相对于文档定位。

 

固定定位

fixed表示固定定位,相对于视图定位,他不会随浏览器窗口的滚动条滚动而变化,不会受文档流的影响。

 

z-index

z-index属性适用于定位元素(position属性值为relative、absolute 或fixed,如果元素没有定位,对其设置z-index是无效的)为了表示三维立体的概念如显示元素的上下层的叠加顺序而引入了z-index属性来表示z轴的区别。z-index值较大的元素叠加在z-index值较小的上面。对于未指定此属性的定位对象,z-index值为正数第对象在其之上,而为负数的对象在下面。

 

浮动元素

浮动元素的定位还是基于文档流定位的,只是改变了文档流的显示,并没有脱离文档流。

所有产生了浮动流的元素块级元素都看不到他们。文本属性(inline)元素以及文本元素和产生了BFC的元素可以看得到浮动元素。

案例1:父级自适应包住子级(子级是浮动元素)


	
1
2
3
.wrapper{
	border: 1px solid black;
}

.content{
	float: left;
	background-color: orange;
	width: 100px;
	height: 100px;
}

父级是块元素看不到浮动元素。怎么拿父级包住浮动的子级?

方法一:(可以实现,但不推荐)手动加高度。

方法二:清除浮动流。

伪元素清除浮动

.wrapper::after{
	content:"";
	display:block;/*伪元素天生是行级元素,改成block才生效*/
	clear:both;
}

方法三:父级元素设置成BFC

.wrapper{
    /*不是紧紧包裹子元素,宽度很宽*/
	/*overflow: hidden;*/

	/*下面三种方法是紧紧包裹住子元素*/
	/*display: inline-block;*/
	/*float: left;*/
	/*position: absolute;*/
	border: 1px solid black;
}

凡是设置了position:absolute 或者float:left/right 打内部把元素转换成了inline-block。

 

案例2:实现报纸类布局。img设置float属性,实现文字环绕图片效果。

.img{
    float: left;
    margin-right: 10px;
}

 

你可能感兴趣的:(CSS)