神奇的缝隙(CSS图片篇)

大家知道这张图片

下面为什么总是有个缝隙吗

代码很简单啊

就一张图片

然后一个 div

div仅仅设置了一个大小

和一个背景颜色

那这个问题使我想到了

之前遇到的另一个问题

就是两张图片中间有个缝隙

那这个中间的缝隙呢

当时就是这样解决的

把中间的空格都删掉,大家看就没有了

但是呢我们仔细看

我们会发现

他这个上下的缝隙和

左右的缝隙差不多(大小)

我们把它加一个 font-size 试一下

大家看上下也变大了

那我们把

div和 img 之间的空格都删掉呢

大家看!也是不起作用

但是我们可以断定

他一定是跟文字有关系

我们在中间加几个文字大家看

图片和文字是基线对齐的

所以他导致了下面会有一条缝隙

那下面的这点缝隙是留给一些

比如说像“g”这样的字母

那基线是哪条线呢

其实这就有点像我们那个

4线格

这是第一条线就是 top

这是中间那条线middle

这是基线

然后呢下边这是bottom

也就是说:正好对应了

我们那个 vertical-align 的四个属性

那图片默认 display 是 inline 属性

所以呢他默认也是基线对齐的

那我们来改一下这个 vertical-align

img

vertical-align: top

大家看,它顶部对齐

bottom

底部对齐

贝斯兰极限对齐

所以呢即使我们没有文字

大家看

(或者)如果你不设置baseline的话

他也是下面有条缝的 (因为vertical-align默认为baseline)

解决方法

很容易我们就给加一个 top

或者 bottom

都可以甚至我们把它浮动

起来也是可以解决的

再或者我们不让他用inline了

我们让他 display 等于 block

他也是可以解决的

好!了解了这个呢我们再来看一个 bug

这是一个小伙伴发来 demo

大家看这个图片

和下面的 dnv 之间也总是有个缝隙

产生这个缝隙的原因

就是因为

这个以 img 默认是

display 等inline的

所以呢他会采用基线对齐

我们可以验证一下

我们在这里

给这个 li 加一个背景颜色先

我们用 #3e3e3e

然后呢我们把它的宽度改小一点 (为了后面能有空间 写文字)

40px 吧

好接下来呢我们在图片后面写个文字

比如说 h

大家看!它是基线对齐的

g

看到了吗

所以呢我们解决这个问题很容易

(我先把它恢复回来)

我们就把img加一个

display 等于 block

大家看!或者

我们

给img加一个 vertical-align

等于 top

也是可以解决的

再或者我们让他浮动起来

float 等于 left 或者 right 都行

最后更新于