代码之家  ›  专栏  ›  技术社区  ›  Artem Russakovskii

将<img>与a<ul>中的文本对齐的ie7 css错误

  •  1
  • Artem Russakovskii  · 技术社区  · 16 年前

    在过去的几天里,我一直在为这个ie7的缺陷而努力,现在是时候求助于大众的想法了。

    我有以下HTML和CSS: http://beerpla.net/for_www/ie7_test/test.html

    我们的目标是 <ul> ,每一个 <li> 包含一个小图标和一些文本。多行文本将与自身对齐,而不是在图像下换行。

    我试过用 float:left 关于图像和其他一些事情,最后我想 position:absolute 当然可以,但在IE7中,我总是看到文本弹出到下一行,并与图像不一致:

    alt text

    这就是我所期望的:

    alt text

    我甚至试着去做跳水 display:inline 哪种方法有效,但随后开始在图像下包装成长行,因此效果不佳。 zoom:1 也产生了类似的效果。

    我现在不知所措。此代码在所有其他浏览器中都可以正常工作。IE7是一个特别的,非常特别的孩子。

    有什么想法吗?

    谢谢您。

    编辑: 如果你有IE8,你可以通过按F12然后按Alt-7来模拟IE7。

    4 回复  |  直到 16 年前
        1
  •  2
  •   pixeltocode    16 年前

    尝试使用background属性而不是将图像作为元素。像这样

    ul li { background url(path to image) 0 0 no-repeat; padding: 0 0 0 20px; }
    

    注意:您可能需要调整填充以适应您希望在图像和文本之间保持的距离。

        2
  •  1
  •   D_N    16 年前

    尝试在li上使用padding,而不是div上的margin。如果display:inline起作用了,那么很可能是因为以某种神秘的方式计算div的box模型而窒息:在li上使用padding,或者display:inline在div上可能会起作用。

        3
  •  1
  •   Artem Russakovskii    16 年前

    搬家 <img> 标签进入 <div> 解决了这个问题。我仍然不知道IE7为什么这么做。

        4
  •  1
  •   Miriam Suzanne    16 年前

    返回到左浮动图像,然后添加 overflow: hidden; 到div。文本将不再在图像下面换行,并且没有任何副作用,除非您尝试从div内向外定位内容(这里看不到)。完全兼容的跨浏览器。使用ie6,您只需添加 hasLayout 以任何方式获得同样的效果。