css inline-block div中的Inline元素

u0sqgete  于 2023-05-30  发布在  其他
关注(0)|答案(5)|浏览(116)

不能让我的头周围为什么<img><div style="display: inline-block">推动div从顶部下降?

HTML

<div id="wrapper">
        <div id="a1">
            <img src='...' alt=""/>
        </div>
        <div id="a2">
        </div>
        <div id="a3">
        </div>
        <div id="a4">
        </div>
        <div id="a5">
        </div>
        <div id="a6">
        </div>
        <div id="a7">
        </div>
        <div id="a8">
        </div>
</div>

CSS

div > div {
    background: red;
    height: 200px;
    width: 19%;
    text-align: center;
    margin: 0 5% 5% 0;
    display: inline-block;
}

img {
    height: 128px;
    width: 128px;
    display: /* "BLOCK" FIXES THE ISSUE */; 
}

编辑

img设置为display: block可修复此问题。但是谁能解释一下为什么没有display: block会有这样的行为呢?

8yoxcaq7

8yoxcaq71#

默认的vertical-align值是baseline,它可以是文本的底线或图像的底线(img元素是replaced elementinline* level),这会导致演示第一行的偏移。
为了解决这个问题,你可以将vertical-align设置为top,或者像你说的将img设置为display: block也可以。

xa9qqrwz

xa9qqrwz2#

img标签的行为就像一个inline和bock元素,基于这个答案:Is element block level or inline level?
这就是为什么你必须在一个带有inline-block的div中的img上显示block。

pinkon5k

pinkon5k3#

您可以通过添加float: leftvertical-align:top来解决此问题
https://jsfiddle.net/foxhh0av/

div > div {
	background: red;
	height: 200px;
	width: 19%;
	text-align: center;
	margin: 0 5% 5% 0;
	display: inline-block;
  float: left;
}

img {
	height: 128px;
	width: 128px;
	display: /* "BLOCK" FIXES THE ISSUE */; 
}
<div id="wrapper">
		<div id="a1">
			<img src='http://dfsm9194vna0o.cloudfront.net/1471693-0-Washingmachineforlaundry128.png' alt=""/>
		</div>
		<div id="a2">
		</div>
		<div id="a3">
		</div>
		<div id="a4">
		</div>

		<div id="a5">
		</div>
		<div id="a6">
		</div>
		<div id="a7">
		</div>
		<div id="a8">
		</div>
	
</div>
k10s72fa

k10s72fa4#

在你的css中修改一下:

img {
  height: 128px;
  width: 128px;
  display: block; 
}

应该能修好

brvekthn

brvekthn5#

您可以将vertical-align: top;设置为子div(div > div)。

相关问题