块级元素与行内元素的区别以及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重叠等场景