请问div内部的img为什么不受div样式的束缚?

发布于 2022-09-12 22:16:42 字数 1788 浏览 16 评论 0

我在button按钮中添加了一个图标和文字,index代码如下

            <button className={styles.buttonstyle}>
                <div className={styles.imagewrapper}>
                    <img src={changeButton}/>
                </div>
                切换
            </button>

less代码如下:

.buttonstyle{
    color:#84b0d9;
    background-color:#ffffff;
    border-radius:13px;
    width:75px;
    height:25px;
    font-size:14px;
    border:0;
    outline:none;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
    cursor: pointer;
    display: flex;
    align-items: center;
}

.buttonstyle:hover{
    color:#1890ff;
}
.imagewrapper{
    width:14px;
    height:12px;
    margin-right:6px;
    display: table-cell;
    vertical-align: middle;
}

我用imagewrapper样式限制了img外层div的大小,但是这层div没能限制住img,图片还是非常大,如下图中文字下部的淡蓝色部分所示
image.png

于是给图片设置宽高,宽和高与imagewrapper宽高一样

            <button className={styles.buttonstyle}>
                <div className={styles.imagewrapper}>
                    <img src={changeButton} style={{width:'14px',height:'12px'}}/>
                </div>
                切换
            </button>

结果div的imagewrapper对应的区域如下图所示,是居中对齐的
image.png

但是img对应的区域却在偏下的位置
image.png

为什么img不在div的区域内呢?图片大小没有超过div,而且设置了div内部元素垂直居中。

虽然调整img的margin可以解决问题,但是我想知道这个问题的原因,请赐教

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

你的往事 2022-09-19 22:16:42

img 是行内替换元素,从排版的角度来看与行内块元素表现一致:其在行内的垂直位置受父元素的 vertical-alignline-height 约束,而且在各浏览器表现不一致,调margin也不能完全兼容。
可以让图片隐形,然后把图片链接作为其父元素的背景,居中contain
或者用字体图标。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文