display:inline和display:block, display:inline-block区别,清除浮动的方法
实现简单的div并排
inline:
使元素变成行内元素,拥有行内元素的特性,即可以与其他行内元素共享一行,不会独占一行. 不能更改元素的height,width的值,大小由内容撑开.
可以使用padding,margin的left和right产生边距效果,但是top和bottom就不行.
block:
使元素变成块级元素,独占一行,在不设置自己的宽度的情况下,块级元素会默认填满父级元素的宽度. 能够改变元素的height,width的值.
可以设置padding,margin的各个属性值,top,left,bottom,right都能够产生边距效果.
inline-block:
结合了inline与block的一些特点,结合了上述inline的第1个特点和block的第2,3个特点.用通俗的话讲,就是不独占一行的块级元素。
设置div的宽高,display:inline
<div style="position: relative; background-color: blue;height: 200px; ">
<div style="display: block; width: 50%; height: 30px; background-color: rebeccapurple; ">1</div>
<div style="display: block; width: 50%; height: 30px; background-color: red; ">2</div>
<div style="display: block; width: 50%; height: 30px; background-color: black; ">3</div>
<div style="display: block; width: 50%; height: 30px; background-color: gold; ">4</div>
</div>
若取消div的宽高,div大小由内容撑开
若取消内容则div将不会显示,因为div不设置宽高 是由子元素撑开的
并且在不设置自己的宽度的情况下,块级元素会默认填满父级元素的宽度.
<div style="position: relative; background-color: blue;height: 200px; ">
<div style="display: block; background-color: rebeccapurple; ">1</div>
<div style="display: block; background-color: red; "> 2<br>2</div>
<div style="display: block; background-color: black; ">3</div>
<div style="display: block; background-color: gold; ">4</div>
</div>
若改为display:inline
子元素的宽高则不会占满父元素
同样使用float也能达到相同的效果但会造成父元素高度塌陷。
父元素塌陷:在文档流中,父元素的高度是默认被子元素撑开的,子元素有多高,父元素就有多高。但是当子元素设置浮动后,子元素会完全脱离文档流,导致子元素无法撑起父元素的高度,造成父元素高度高度塌陷。
若不给父元素设置高度,使用display:inline
<div style="position: relative; background-color: blue; ">
<div style="display: inline-block; background-color: rebeccapurple; "> 1</div>
<div style="display: inline-block; background-color: red; "> 2</div>
<div style="display: inline-block; background-color: green; "> 3</div>
<div style="display: inline-block; background-color: gold; ">4 </div>
</div>
使用float造成父元素高度塌陷,则父元素的背景颜色没有了。
解决办法
让父元素也浮动
<div style="position: relative; background-color: blue; width: 900px; height: 500ox; float: left; ">
<div style="float: left; height: 200px; background-color: rebeccapurple; "> 1</div>
<div style="float: left; height: 200px; background-color: red; "> 2</div>
<div style="float: left; height: 200px; background-color: green; "> 3</div>
<div style="float: left; height: 200px; background-color: gold; ">4 </div>
<!-- <p style="clear: both;"></p> -->
</div>
缺点:影响整体页面布局,若父元素也有父元素呢,总不能一直浮动到body…