Internet Explorer 8 - 浮动、图像、div

Internet Explorer 8 - Floats, images, divs

使用 Internet Explorer 8 尝试查看项目时出现问题(怎么办?)

问题是图像和跨度,可以是内联的也可以是浮动的块,总是一个在另一个下面,或者是文本的一部分。

我的示例代码是:

HTML

<div>
    <div class="text-left">
        <img src="my_image_path.png"><span>Some text at it's side</span>
    </div>
    <div class="text-right">
        <span>Text to the right</span>
    </div>
</div>

CSS:

.text-left {
    float: left;
}
.text-left img {
    margin-right: 10px;
}
.text-right {
    float: right;
}

上面的代码在 IE9、Safari、Chrome、Firefox 中完美运行...但在 IE8 中却不行。图像放置得很好,但跨度不会停留在一行中(不是很长的文本)。如上所述,我已经尝试过同时 blockfloat 离开,但也不起作用。 div 容器的宽度为 auto

编辑:解决这个问题的唯一方法,但不是很自豪,我自己找到了,它是将最小宽度添加到图像和跨度的 div 容器。希望它是另一种更准确的方式。

编辑 2:我在这里向您展示在 IE8 和 Chrome 中的结果。

在 IE8 中的结果:

结果Chrome(好):

尝试

.text-left > span { white-space: nowrap; }

不是很漂亮,但是比处理 min-width.

更好的选择

你需要 min-width 的原因是你还没有清除浮动。

使用 clearfix 或在浮动元素下方创建另一个元素并将其设置为 clear: both;

关于 clearfix 的更多信息:https://css-tricks.com/snippets/css/clear-fix/

针对 Internet Explorer 8 及更低版本的关键是在样式末尾附加“\9”。

.text-left img {
margin-right: 20px; //Whatever it takes to make it perfect}

这可能对您有所帮助。

昨天无意间知道了为什么会这样。

Bootstrap 自动将 CSS 属性 max-width: 100%; 添加到图像。我试图删除该属性,神奇的是上面的图像不再发生了。 IE8用一些属性做了一些很奇怪的东西。

基本上,您需要在需要时使用某种 class 删除所需图像的属性,例如 .no-max-width { max-width: none !important; }

希望这个回答能对遇到这个问题的人有所帮助。

您可以使用媒体对象。

http://www.stubbornella.org/content/2010/06/25/the-media-object-saves-hundreds-of-lines-of-code/