20220720 HTML盒模型与文档流

190 阅读3分钟

盒模型

行内元素:

  • 有行高/外边距/内边距/边框
  • 但box-sizing没有用,因为他不能设置宽高

行内块元素:

  • 有宽高/行高/外边距/内边距/边框
  • box-sizing有用,因为他能设置宽高

修改元素

display:

  • table——以表格形式呈现,宽高默认被内容撑开,可以处理外重叠问题
  • block——使其他元素变成块元素
  • inline——使其他元素变成行内元素
  • inline-block——使其他元素变成行内块元素
  • flex——弹性布局
  • none——隐藏元素,在页面中不占位置

水平居中布局

  • 块元素:margin:0 auto——外边距上下为0,左右居中(这种方法只能给块元素设置)
  • 行内元素和行内块元素:text-align:center——字体居中(要给父元素设置)
  • 行内块元素并列时会出现3px的间隙问题,是由换行所造成的,间隙大小和父元素的字体大小有关。所以解决这个问题需要把父元素的字体设为0,记得设置完成后,给子元素重新设置字体大小,否则字体不会显示。

文档流:

文档流是文档最底层的排序

脱离文档流(文档流的上一层元素):

  • 脱离文档流后,会分为行内元素/块元素/行内块元素的排序(没有元素限制,大家都算一种元素)
  • 脱离文档流后,宽高会丢失

高度塌陷:

  • 脱离文档流后,会出现父元素高度塌陷的问题

解决高度塌陷问题:

  • 在父元素下面添加一个块元素,不设置高度,且添加清除浮动,但这种方法有一个缺点,会添加一个无用元素
  • 给父元素添加一个伪元素::before(最前)/::after(最后)的空白区域添加空内容——content,设置空白内容变为块元素block和table都可以,最后在添加清除浮动就可以了。

浮动

浮动布局——float:

  • left——左浮动
  • right——右浮动

清除浮动——clear:

  • left——清除左浮动
  • right——清除右浮动
  • both——清除影响最大的浮动

既想解决高度塌陷问题,又想解决外边距重叠问题时:

给父元素添加一个伪元素::before(最前)/::after(最后)的空白区域添加空内容——content,设置空白内容变为块元素table,最后在添加清除浮动就可以了。

开发规范

给所有需要解决高度塌陷问题和外边距重叠问题的元素,添加一个clearfix类,然后在clearfix中使用上面描述的方法即可

虎哥小知识

块元素不管设置多大多小的宽高他都是会独占一行

杀马特团长,你看你领的内几个贵物,还有你,人不人鬼不鬼滴,就你还要抓我嗷?在掘金论坛,别让我看到你,看到你头套必须给你拽掉,必须打你脸!