在Firefox中,只有我的视频缩略图在图像底部和边界之间神秘地显示了2-3个像素的空白(见下图)。

我在Firebug中尝试了我能想到的所有方法,但都没有成功。

我如何删除这个空白?


当前回答

.youtube-thumb img {display:block;} or .youtube-thumb img {float:left;}

其他回答

我设置了一个JSFiddle来测试这个问题的几个不同解决方案。基于的[模糊的]标准

1)最大限度的灵活性 2)没有奇怪的行为

这里公认的答案是

img { display: block; }

它被很多人推荐(比如在这篇优秀的文章中),实际上排名第四。

第一,第二和第三名都是在这三个解决方案之间摇摆不定:

1) @Dave Kok和@Hasan Gursoy给出的解决方案:

img { vertical-align: top; } /* or bottom */

优点:

所有显示值都在父节点和img节点上工作。 没有奇怪的行为;img的任何兄弟姐妹都落在你所期望的地方。 很能干的人。

缺点:

在[完全有效]的情况下,父节点和img都有' display: inline ',这个属性的值可以确定img的父节点的位置(有点奇怪)。

2)设置字体大小:0;在父元素上:

.parent {
    font-size: 0;
    vertical-align: top;
}
.parent > * {
    font-size: 16px;
    vertical-align: top;
}

由于这个[有点]需要在img上使用vertical-align: top,这基本上是第一个解决方案的扩展。

优点:

所有显示值都在父节点和img节点上工作。 没有奇怪的行为;img的任何兄弟姐妹都落在你所期望的地方。 修复img的任何兄弟元素的内联空格问题。 尽管在父类和img都有' display: inline '的情况下,这仍然会移动父类的位置,但至少你再也看不到父类了。

缺点:

低效率的代码。 这假设标记是“正确的”;如果img有文本节点兄弟节点,它们将不会显示。

3)在父元素上设置line-height: 0

.parent {
    line-height: 0;
    vertical-align: top;
}
.parent > * {
    line-height: 1.15;
    vertical-align: top;
}

与第二个解决方案相似的是,为了使其完全灵活,它基本上成为了第一个解决方案的扩展。

优点:

除了父类和img类有' display: inline '外,在所有显示组合上的行为都类似于前两个解决方案。

缺点:

低效率的代码。 在父类和img都有' display: inline '的情况下,我们得到了各种疯狂的结果。(也许使用“line-height”属性不是最好的主意…)

结果出来了。我希望这能帮助到一些可怜的人。

如果你不想修改块模式,你可以使用下面的代码:

img{vertical-align:text-bottom}

或者你可以用Stuart建议的following:

img{vertical-align:bottom}
.youtube-thumb img {display:block;} or .youtube-thumb img {float:left;}

因为img默认情况下是一个内联元素,所以您看到了下移元素(挂在'y'和'p'底部的位)的空间。这消除了差距:

.youtube-thumb img { display: block; }

如前所述,图像被视为文本,因此底部是为了容纳那些讨厌的:“p,q,y,g,j”;最简单的解决方案是分配img display:block;在css中。

但这确实抑制了与文本一起流动的标准图像行为。保持这种行为,消除空间。我建议用这样的东西包装图像。

<style>
    .imageHolder
    {
        display: inline-block;
    }
    img.noSpace
    {
        display: block;
    }
</style>
<div class="imageHolder"><img src="myimg.png" class="noSpace"/></div>