盒模型、文档流

时间:2022-10-27 05:36:17

盒模型

一、盒子中的区域

一个盒子中主要的属性就5个:width、height、padding、border、margin。

width是“宽度”的意思,CSS中width指的是内容的宽度,而不是盒子的宽度。

height是“高度”的意思,CSS中height指的是内容的高度,而不是盒子的高度

padding是“内边距”的意思

border是“边框”

margin是“外边距”

 

二、认识padding

背景色会填充到padding中去,padding区域有背景颜色,background-color将填充所有boder以内的区域。

Padding有两种写法,一种小属性写法,另一种是综合性写法,综合写法时要用空格隔开。顺序是上右下左

在写padding时,要用小属性层叠大属性

例如:padding: 20px;

padding-left: 30px;

三、border

border就是边框。边框有三要素:粗细、线型、颜色。

颜色如果不写,默认是黑色。粗细和线型不写显示不出来边框。(颜色、线型缺一不可)

Border属性能够被拆开,有两大拆开方式:

1)按3要素拆开

border-width:10px;    → 边框宽度

border-style:solid;     → 线型

border-color:red;      → 颜色。

等价于:border:10px solid red;

2)按方向拆:

按方向:border-top、border-right、border-bottom、border-left

按方向还能再拆一层,就是把每个方向的按每个要素拆开。如:

border-top-width:10px; 

 

 

标准文档流

1)空白折行折叠现象

当后面的空间不足以放下本身空间时,会自动换行

2)文档流按照底部对齐,高矮不齐;

 

一、块级元素和行内元素

标签根据文档流分为块级元素、行内元素。

1) 块级元素

● 霸占一行,不能与其他任何元素并列

● 能接受宽、高

● 如果不设置宽度,那么宽度将默认变为父亲的100%。

2) 行内元素

● 与其他行内元素并排

● 不能设置宽、高。默认的宽度,就是文字的宽度。

根据显示内容分为:文本级、容器级。

文本级:p、span、a、b、i、u、em

容器级:div、h系列、li、dt、dd

所有的文本级标签,都是行内元素,除了p,p是个文本级,但是是个块级元素。

所有的容器级标签都是块级元素。

 

二、块级元素和行内元素互换

通过display相互转换

display:inline转换成行内元素。

● 此时这个div不能设置宽度、高度;

● 此时这个div可以和别人并排了

display:block转换成块级元素。

● 此时这个元素能够设置宽度、高度

● 此时这个元素必须霸占一行了,别人无法和他并排

● 如果不设置宽度,将撑满父亲

 

 

脱离标准文档流

css中一共有三种手段,使一个元素脱离标准文档流:

1) 浮动

2) 绝对定位

3) 固定定位

一、浮动

1)浮动会使元素脱离标准文档流,不受标准文档流束缚。

2)浮动元素会相互贴靠

3)浮动元素有字围效果

注意:字围只能是汉字才有的效果,英文字符数字不行!

虽然div有浮动,可以挡住p标签但是挡不住p里的内容

强调:要有浮动都浮动。

4)浮动元素会收缩

收缩:一个浮动的元素,如果没有设置width,那么将自动收缩为文字的宽度(这点非常像行内元素)。

 

二、浮动的清除

清除浮动的方法:

1)给浮动的元素的祖先元素加高度

如果一个元素要浮动,那么它的祖先元素一定要有高度。

只要浮动在一个有高度的盒子中,那么这个浮动就不会影响后面的浮动元素。所以就是清除浮动带来的影响了。

给前面一个浮动过的元素的祖元素加高度,清除浮动对后面的影像。

2)clear:both

clear就是清除,both指的是左浮动、右浮动都要清除。意思就是:清除别人对我的影响。

注意:这种方法有bug,加上clear:both后margin会失效。

3)隔墙法

在两个浮动的中间插一个div分隔开来并清除浮动clear:both。

内墙法:把div块插在浮动元素的后面,也就是浮动元素父元素里面。

“内墙法”:  浏览器渲染机制 内墙div 设置属性  clear: both即可给父亲设置高度

注意:脱标的元素是不能把父元素撑出高度的!表现出的高是假象。

两个p都浮动,所以div不能被撑出高。而在家里添加一个内墙,就能够让div被儿子撑出高度。

 

4)溢出清除浮动:overflow:hidden

overflow       当层的内容超出层所能容纳的范围时:

                     visible     层的 大小 内容会显示出来

                     hidden      隐藏超出层大小的内容

                     scroll      不管内容是否超出层的范围 都添加滚动条

                     auto        只在内容超出层的范围时才显示滚动条

一个父亲不能被自己浮动的儿子,撑出高度。但是,只要给父亲加上overflow:hidden; 那么,父亲就能被儿子撑出高了。这是一个偏方。

开发时,隔墙法和溢出隐藏都可以。