CSS基础——img元素与同级div元素存在间隙

背景:

在练习flex布局时无意间发现img元素与同级div元素之间存在间隙,网上虽然有解决方法,但是却不知道为什么这么做,在这里记录下我的观点。

原因

代码示例:

<header>
    <img class="profile-thumbnail" src="https://freecodecamp.s3.amazonaws.com/quincy-twitter-photo.jpg" alt="Quincy Larson's profile picture">

    <div class="profile-name">
        <h3>Quincy Larson</h3>
        <h4>@ossia</h4>
    </div>

    <div class="follow-btn">
        <button>Follow</button>
    </div>

</header>
body {
    font-family: Arial, sans-serif;
}

header {
    /*display: flex;*/
    background: bisque;
}

header .profile-thumbnail {
    width: 50px;
    height: 50px;
    border-radius: 4px;
    background: #477ca7;
    /*display: block;*/
}

header .profile-name {
    margin-left: 10px;
    background: #74638f;
}

header h3, header h4 {
    margin: 0;
}

header .follow-btn {
    margin: 0 0 0 auto;
    background: coral;
}

header .follow-btn button {
    border: 0;
    border-radius: 3px;
    padding: 5px;
}

在这里插入图片描述

可以看到头像与下面的名字之间存在间隙,原因是 img 元素的 display 属性默认是 inline-block 类型,即 img 可以使用 block 类型独有的 widthheight ,但是在布局时它却有 inline 的属性,多个 img 元素可以在一行。

通过观察html代码可以发现img与下面 相邻的div之间存在空格,即inline-block布局的元素在编辑器里不在同一行,存在换行符,因此这就是著名的inline-block“换行 符/空格间隙问题”。如果inline-block元素间有空格或是换行产生了间隙,那是正常的。

解决方法

  • 将img的display属性设置为block
    img {
    	display: block;
    }
    
  • 修改img的vertical-align属性:
    img{vertical-align:buttom;}
    img{vertical-align:middle;}
    img{vertical-align:top;}
    
  • 将父级element中的字体大小设为0,同级div中字体打下分别重新设置:
    div{font-size:0;}
    

参考

Is img element block level or inline level?
How do I remove the space between inline-block elements?
解决div和img之间的空隙

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值