行内块元素出现间隙的问题

在设置子级元素的display为inline-block时出现了一个问题:原本想作到父盒子的高度由子盒子撑开,结果发现父盒子的高度比子盒子高了4px,设置display为block时就没有出现这个问题。wordpress

 <style>
        .dv {
            background-color: pink;
            height: auto;
            width: 500px;
        }
        .son1 {
            width: 200px;
            height: 200px;
            background-color: #22ff52;
            display: inline-block;
        }
    </style>
<div class="dv">
    <div class="son1"></div>
</div>

效果:字体

出现该问题的本质缘由是:内联元素的默认垂直对齐方式是和基线对齐,并非和底部对齐。即默认vertical-align属性值为baseline。spa

吐槽一句:这个属性值对块级元素没有用致使不多使用!默认和基线对齐也是由于英文的缘由吧。。。code

在出现内联元素的地方就有可能出现多出空隙的问题,好比说在div内部放入一个img标签,也会出现这种状况!blog

解决办法:1.浮动(可能致使父元素塌陷的问题,注意父级元素清除浮动)文档

     2.转化为块级元素table

     3.定位(使用定位时脱离文档流,注意父元素塌陷,定位彻底脱离父元素,清除浮动没用) class

以上几种方法是比较暴力的解决办法,不少时候咱们不想定位、浮动,更是不想转化为块级元素,这时候就要从本质上解决问题。方法

实际上形成空隙的缘由是由于内联元素的默认vertical-align:baseline以及父级元素默认的行高问题im

参考http://www.zhangxinxu.com/wordpress/?p=4925

 

对应解决办法:1.修改父级元素:line-height:0;会致使内部文本咋样就不说了吧

       2.修改父级元素:font-size:0; 会致使内部文本咋样就不说了吧

       3.修改内联元素:vertical-align:根据需求能够改成middle、top、bottom、text-bottom等值,这种方式解决空隙问题比较好

top 把元素的顶端与行中最高元素的顶端对齐
middle 把此元素放置在父元素的中部。
bottom 把元素的底端与行中最低的元素的顶端对齐。
text-bottom 把元素的底端与父元素字体的底端对齐。
相关文章
相关标签/搜索