基础整理四:网页布局

200 阅读3分钟

1. 自然布局

即遵循元素自身的属性,块级元素从上到下显示,行内元素从左到右显示,宽度达到最大范围时自动折行(根本用不到,只有网络差加载不出样式的时候才能看到)

2. 浮动布局

通过浮动属性改变元素的布局方式,让元素在一行显示

  • float: left 左浮动:从浮动的第一个盒子开始,从左到右显示,宽度到达最大值时自动折行
  • float: right 右浮动:同上,但是是从右到左显示
  • float: inherit 继承父级元素的浮动方式
  • float: none 不浮动

元素浮动会脱离文档流,影响父级元素的高度,可以清除浮动,即清除浮动元素对其他元素的影响

清除浮动:

  1. 在最后一个浮动元素的后面写<p style='clear: both'></p>,即在一个空的块级元素里写clear:both
  2. 给父级元素加一个高度
  3. 给父级元素设置伪元素:div:after {content: ''; clear: both; display: block;} 注:文字,行内元素,行内块级元素会围绕浮动元素排列,没有浮动的块级元素会霸占浮动元素的位置;且浮动元素可以识别父级元素的宽度

3. 层布局:通过定位属性改变元素的布局方式,让元素有层级关系

  1. position: relative 相对定位:
  • 相对定位的参照物是元素本身原来的位置
  • 不会改变其他元素的位置
  • 不会改变自身元素的属性
  1. position: absolute 绝对定位
  • 没有参照物时,参照物是body
  • 以父级中设置了position: relative/absolute的元素为参照物,也可以用position: relative/absolute来设置参照物
  • 参照物不能是兄弟元素
  • 改变元素自身属性,脱离文档流
  1. position: fixed 固定定位
  • 参照物:可视窗口
  • 改变元素自身属性,脱离文档流
  1. z-index 设置层叠元素上下位置
  • 与position属性一起使用,如果两个元素都设置了position: absolute; top: 0; left: 0时,根据书写顺序决定,谁写在后面,谁就在上面显示
  • 定位元素没有设置z-index时,默认为0

4. 居中

  1. 单行文字,行内元素,input的垂直居中:设置行高即可,让line-height与height的值相同
  2. 水平居中:给块级元素设置text-align: center,让内容水平居中,给块级元素设置margin: 0 auto可以让元素水平居中
  3. vertical-align: middle:文字与图片居中对齐(文字没有被标签包裹)
  4. 绝对居中:
    • 用固定定位:设置position: fixed; top: 50%; left50%; 然后设置margin-top和margin-left为元素宽高的一半(负值)即可,如果元素未知宽高可以把margin替换成transform: translate(-50%,-50%)
    • 用display: flex; justify-content: center; align-items: center可以让内容绝对居中
    • 给元素设置:margin: auto; position: absolute; top: 0; left: 0; bottom: 0; right: 0;