CSS布局
CSS布局
div标签
概念
本身是HTML4的标签,因其特殊性而一直作为CSS布局的核心标签。
特点
本身默认样式极少(只有默认块级元素这一项)- 没有太多默认属性
- 默认宽度为100%
总结
本身不具有太多默认的样式或属性,对CSS来说,可塑性极强,可以实现任何想要的效果。比如布局的一部分,或者模块之类的。
标准盒模型
概念
CSS会把所有标签都当成一个个的“盒子”,通过CSS所提供的相关属性能够实现任意标签的尺寸设置以及定位,由这些属性构成的体系就是盒模型。
属性
width:设置盒子的内容宽度height:设置盒子的内容高度border:设置盒子的边框padding:设置内边距,即内容和border的距离。四个内边距可统一设置也可分别设置。margin:设置外边距,即设置盒子和另一个挨着的盒子之间的距离。同样,四个外边距可统一设置也可分别设置。- 给父标签设置
overflow:hidden即可防止给紧挨块级父元素的子标签设置margin-top时带跑其父标签。
- 给父标签设置
需要注意的是,盒子的总宽高不只是width或height,还包括padding、border和margin。这些属性也不仅可以作用于盒子,也可以作用于盒子中的元素。
IE盒模型(怪异盒模型)
概念
和标准盒模型一样,使用一样的5个css属性来设置盒子的尺寸以及位置。
与标准盒模型的区别
IE盒模型的padding和border是计 算在width和height中的,盒子的总宽高是width或height和margin。
标准盒模型和IE盒模型的切换
在现代浏览器中,大多数标签都是默认用的标准盒模型,但仍可以用box-sizing 属性来切换,content-box为标准盒模型,border-box为IE盒模型。
需要注意的是,大部分元素都默认是content-box,但input、button元素默认border-box ,会导致尺寸问题。
CSS定位
概念
传统的盒模型不能处理固定的标签或者带有层叠效果的标签布局,借助CSS中的position属性能够实现标签处于任意的位置,并且可以实现标签的层叠效果,在div+CSS布局中,CSS定位起到一个辅助作用。
position属性
-
static:默认定位,表示标签按照页面默认的布局方式进行定位。 -
fixed:固定定位- 设置固定定位的标签会固定在屏幕上,不会随滚动条而滚动。
- 固定定位标签会被视为“不占空间”,即类似播放器固定在最上层。
- 固定定位的标签以
body作为位置参考,分别以top、left、right和bottom设置距离body标签上下左右的距离。
-
absolute:绝对定位-
与固定定位相比,绝对定位会随着页面滚动而滚动。
-
与固定定位相同,绝对定位标签会被视为“不占空间”,即类似播放器固定在最上层。
-
绝对定位的标签以
已定位父标签作为位置参考,分别以top、left、right和bottom设置距离已定位父标签上下左右的距离(已定位父标签指postion为非static的父级标签或祖先标签。如果没有已定位父标签则会直接参考body标签进行定位)。-
特殊用法
margin:auto; position:absolute; top:0; left:0; rigtht:0; bottom:0;- 对已设置宽高的标签可实现相对已定位的父标签垂直水平居中(相当于上下左右都在顶)。
- 对于未设置宽高的标签可实现平铺整个相对已定位父标签(相当于拉伸以实现四周距离为0)。
-
-
-
relative:相对定位- 与固定定位和绝对定位相比,相对定位标签仍会占据原来的空间,不会被视为“不占空间”,即设置了相对定位之后原页面布局不受影响。
- 移动后仍可以类似播放器固定在最上层一样覆盖其他元素。
- 分别以
top、left、right和bottom设置距离原来位置上下左右的距离。
改变定位标签的显示层级
z-index:用于控制定位标签的显示顺序,以数字为单位。默认级别为0,数字越大,层级越高,层级高的优先显示,可以设置为负数,但只对非static 的定位标签有效果,且子元素的显示层级受限于父元素的显示层级。
总结
- 固定定位:需要固定在页面的标签,代码建议放在