块级元素与行内元素的区别以及BFC布局的简略解释

工作中其实常常用到一些span标签和div标签来进行内容的显示,但波及到文本标签的换行,总得多花那么一两分钟多写一下,明天就专门来瞅一瞅。

依照标签的分类能够分为块级元素和行内元素

什么是块级元素?

独占其父元素的整个程度空间,垂直空间等于其内容高度的元素称之为块级元素。

咱们罕用的div、h、p等标签都属于块级元素

能够看到,对于一个一般的div标签而言,其外部元素是能够超出其限定高度进行显示,有与外界内容重叠的状况

<!DOCTYPE html>
<html lang="en">

<head>  <meta charset="UTF-8">  <title>Title</title></head><body>  <div>    <div id="content" class="container">    contentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontentcontent        </div>    <div class="div2">div2</div>    <div class="div3">      div3    </div>    <div class="div4">      div4    </div>  </div></body><style>  #content {    color: blueviolet;    word-wrap: break-word;    width: 500px;    height: 60px;  }  .div3 {    float: left;  }</style></html>

就上述代码而言能够看到#content中的内容会跟div2中的内容重叠,同时也能够看到div2是间接换行,紧贴着其父元素的左侧往下排列,这就是一般文档流的排列规定。

当然如果下面的代码没有写word-wrap属性,文本内容会向右延长,超出其边界。

而对于行内元素而言,如果行内有空间,他们会在行内从左往右排列,否则的话会换下一行显示

<div id="content" class="container">  <span>    contentcontentcontent  </span>  <span>    contentcontentcontent  </span>  <span>    contentcontentcontent  </span></div>

像下面的代码,content会主动换行,div的左侧有内容,右侧则间接留白,有趣味的手动练习一下

当然,如果行内元素你没给他设置word-wrap属性的话,文本内容也会在同一行内往右延长,不会主动换行的。

也就是说对于文档流(Normal flow/失常流)而言块级元素将款级元素自从上往下、行内元素在每行中从左往右,从上往下的顺序排列。因为一般的块级元素外面的内容很容易与里面的内容重叠产生影响,所以咱们还须要应用BFC盒子模型来防止一些布局问题

看下W3C上对BFC的定义

浮动元素和相对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创立新的BFC(块级格局上下文)。

ok,看了跟没看一样,齐全不晓得所以然。用艰深的话来讲,BFC就是一个容器,这个容器内寄存任何内容都不会影响到内部容器。当然,他并不是像咱们说的标签的那种,而是一种特色,具备了某些属性,就不会影响到内部标签的属性。

如何触发成为一个BFC盒模型的条件还是挺简略的

1:float的值不为null2:overflow的值不为visible3:display的值为table-cell,table-caption,inline-block4:position的值不为static,relative

咱们利用BFC也能够做很多事件,最简略的就是在下面的#content款式中加一个overflow:auto来防止其与div2中的内容重叠。

此外还能够用于布局、革除浮动(在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种状况下,容器的高度不能主动伸长以适应内容的高度,使得内容溢出到容器里面而影响(甚至毁坏)布局的景象。这个景象叫浮动溢出,为了避免这个景象的呈现而进行的CSS解决,就叫CSS革除浮动。)、避免margin重叠等场景