【问题标题】:ie7 css with div align right in TD带有div的ie7 css在TD中右对齐
【发布时间】:2014-01-15 01:29:20
【问题描述】:

下面的标记产生 2 行文本,第 2 行文本居中,右下角的图像位于第 2 行。至少在 Firefox 和 ie8 中是这样。在 ie7 中,它添加了一个换行符,图像出现在第 3 行。我尝试了各种方法都没有成功,ie Developer Tool 也不是很有用。

如何让它在 ie7 中正确显示(如 ie8)?

<table>
    <tr><td>blah blah blah blah</td></tr>
    <tr>
        <td style="text-align:center;">
            Hi
            <div style="float:right; background-image:url('aaa.png'); height:16px; width:16px;">
            </div>
        </td>
    </tr>
</table>

这只是我所拥有的非常简化的版本;我需要表格结构,所以请不要建议将其更改为一系列 div :)

【问题讨论】:

  • 我知道你说过不建议将其更改为一系列 div,但我曾经和你一样使用表格来处理所有事情 - 布局、数据、作品......但是一旦你得到使用 clears 和 floats 的窍门变得容易多了。花一些时间了解 clear/float 的工作原理,并尝试做各种布局 - 例如两列、三列、产品详细信息(就像你在许多网站上看到的左上角图片、右边的详细信息和下面的描述)。你应该很快就会掌握它的窍门。
  • @Clarkey:我同意并且我一直在尝试更频繁地使用 div,但是这个特殊的标记适用于一个非常复杂的项目:在 html 中构建一个类似办公室的功能区栏。它在 ie8 中运行良好,所以我不想重写 800 行 css 和 400 行标记来适应 ie7 :)

标签: html css internet-explorer internet-explorer-7


【解决方案1】:

你没有在桌子上设置任何宽度,所以它会尽可能小以适应内容。

也可以尝试将“Hi”放在一个 div(或 span)中,并向左浮动。从理论上讲,这应该可行。

实际上,您可能希望将两边都放在跨度中,想想看,因为 div 默认为其父级的大小(-border、margin 和 padding)。

希望这会有所帮助。

问候,

理查德

编辑:对此的实际答案是将右侧浮动 div 的位置设置为绝对,高度/宽度设置为 16px,顶部和右侧设置为 0。同时删除 float: right。 (我把原来的答案留在那里,以便 a)cmets 有意义,b)以后读到这个的人都知道原来的答案不起作用)。

【讨论】:

  • 我在一个向左浮动的 div 中尝试了“Hi”,结果它左对齐。我希望文本居中对齐。
  • 啊是的忘记了中心的事情......给我几分钟时间考虑一下 - 如果我想到任何事情,我会告诉你。
  • 我突然想到了——你有没有尝试在左浮动的 div 上应用 text-align: center ?
  • 您也可以尝试将右浮动 div 设置为绝对位置,宽度 16px,高度 16px,右 0px 和顶部 0px。只要将父级设置为相对位置,这应该可以工作。
  • 冠军!添加位置:绝对;顶部:0px;右:0px;到 div 和位置:相对;把 TD 样式修好了!
【解决方案2】:

您可以尝试颠倒“Hi”和&lt;div&gt;的顺序:

<table>
    <tr><td>blah blah blah blah</td></tr>
    <tr>
        <td style="text-align:center;">
            <div style="float:right; background-color: #f00; height:16px; width:16px;"></div>
            Hi
        </td>
    </tr>
</table>

这在 Chrome、Safari、Firefox、IE7、IE8 和 Opera 中看起来是一样的。 Chrome、Safari 和 Firefox 呈现两个版本相同; IE7 和 Opera 渲染原版也有同样的问题。

我将 background-image 更改为 background-color,这样我就可以看到发生了什么,不应该对渲染产生任何影响,但 IE7 很擅长把事情弄得一团糟,所以也许不会。

【讨论】:

  • 我们实际上得到了这个工作 - 请参阅我的答案中的 cmets。他最终使用了绝对位置,顶部 0 和右侧 0。
  • 很好,解决 IE7 问题通常会这样结束:尝试一堆半随机的 margin/padding/display/display/position 摆弄直到它起作用然后去酒吧抹去记忆。
  • 是的...通常我会在找到解决方案之前去酒吧并抹去记忆哈哈...这里的酒吧是指我存放在办公桌下的 2 升苹果酒瓶哈哈
  • 是?他们可能从出生就喝醉了……希望我是那样的……喜欢工作时喝醉的感觉!
猜你喜欢
  • 2022-09-27
  • 2014-01-11
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 2012-04-18
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多