【问题标题】:IE7 gets the content in my table to overlapIE7 让我的表中的内容重叠
【发布时间】:2011-10-18 11:50:29
【问题描述】:

我有一个大表来显示和输入数据。每个单元格包含一个输入字段、一个选择和一个带有背景图像的跨度。当用户调整窗口大小时,我希望这三个都保持在同一行。我让它在 IE8、FF 和 Chrome 中正常工作,但 IE7 对我的设计不满意。它确实使所有三个都在同一行,但不是防止表格变得太小,而是所有内容都重叠,这可能是它可以做的最糟糕的事情。

这是一个表格示例:

<table>
        <tr>
            <td>Check Stock</td>
            <td class="param-value-TransferTime" style="white-space: nowrap;">
                <div style="position: relative; margin-right: 16px;">
                    <span style="float: left;">                    
                        <input type="text" size="3" maxlength="3" name="duration" autocomplete="off">
                        <select name="unit"><option value="Y">Years</option><option value="M">Months</option><option value="W">Weeks</option><option value="D">Days</option></select>                   
                    </span>
                    <span style="position: absolute; right: -16px;height:16px;width:16px;background-color:blue"></span>
                </div>
            </td>
            <td class="param-value-QueueTime" style="white-space: nowrap;">
                <div style="position: relative; margin-right: 16px;">
                    <span style="float: left;">                
                        <input type="text" size="3" maxlength="3" name="duration" autocomplete="off">
                        <select name="unit"><option value="Y">Years</option><option value="M">Months</option><option value="W">Weeks</option><option value="D">Days</option></select>                
                    </span>
                    <span style="position: absolute; right: -16px;height:16px;width:16px;background-color:blue"></span>
                </div>
            </td>
            <td class="param-value-WaitTime" style="white-space: nowrap;">
                <div style="position: relative; margin-right: 16px;">
                    <span style="float: left;">
                        <input type="text" size="3" maxlength="3" name="duration" autocomplete="off">
                        <select name="unit"><option value="Y">Years</option><option value="M">Months</option><option value="W">Weeks</option><option value="D">Days</option></select>
                    </span>                    
                    <span style="position: absolute; right: -16px;height:16px;width:16px;background-color:blue"></span>
                </div>
            </td>        
        </tr>        
</table>

我已将图片替换为具有相同样式的蓝色方块。

这是除 IE7 之外的所有浏览器的正确行为:

IE7 的作用如下:

根据我的研究,我认为解决问题的最简单方法是为我的 TD 添加宽度。我不希望这样做,因为每个单元格中的实际输入会因用户选择而异,所以我希望浏览器找到最小尺寸。无论如何,我确实尝试过,但它并没有解决问题。我尝试了宽度和最小宽度,但内容仍然重叠。

有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

    我的建议是在编写 tds 时删除代码中的任何位置,这样就不需要定位了。

    【讨论】:

    • 谢谢,你说得对,我不需要所有的定位! Jason 的回答更完整,所以我接受了他的回答,但感谢您的提示!
    【解决方案2】:

    三件事:

    1. 如果您将结构 (HTML) 与样式 (CSS) 分开,代码将更容易修复和操作。不是一个糟糕的批评,只是一个观察。

    2. 您可以删除 tds 中的 positioningfloats 并提供元素 display:inline-block。可能会奏效。

    3. 如果失败,请使用条件注释来定位 IE7(例如,&lt;!--[if IE 7]&gt;)并将宽度应用于那里的tds。

    【讨论】:

    • 1) 我同意,但在这种情况下,大部分样式都是通过 jquery-ui 完成的,我只是在途中调整了一些东西(并且我在代码中添加了一些样式)样式表中的事实;只是想要一些简单的东西!) 2)做到了!代码现在更简单,适用于所有浏览器!感谢您的提示!
    • 这是我 TD 现在的样子:&lt;span style="display:inline-block;"&gt; (input as before) &lt;/span&gt; &lt;span style="height:16px;width:16px;background-color:blue;display:inline-block;"&gt;&lt;/span&gt;
    • 我没有定位,但在 tds 内的内容中添加了浮动,删除它们解决了问题。 IE 7 一直在搞乱浮动!谢谢您的帮助! :)
    猜你喜欢
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2017-07-31
    相关资源
    最近更新 更多