添加/删除CSS将导致IE9增加表的高度

jum*_*hen 34 html javascript css jquery internet-explorer

当用户将鼠标移出/移出TR以更改某些CSS颜色时,我将鼠标事件添加到HTML TR.但是在IE9中似乎存在一个问题,即每次CSS更改时表的高度都会不断增加.

注意:只有出现水平滚动条时才会出现此问题.

这是HTML.

<div style="width:100%;height:100%;">
    <div class="grid">
        <div class="grid-body">
            <table width="100%" cellpadding="0" cellspacing="0" border="0" style="table-layout:fixed;">
                <tbody>
                    <tr>
                        <td style="width:3040px;" class="item">
                            <div>
                                Please mouse-over me and out
                            </div>
                        </td>
                        <td class="item">
                            <div>
                                Please mouse-over me and out
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是Javascript

$(document).ready(function (){
 $('.item').mouseover(function () {
     $(this).parent().addClass("item-over");
 }).mouseout(function() {
     $(this).parent().removeClass("item-over");
 });
 }
);
Run Code Online (Sandbox Code Playgroud)

这是CSS设置

 html, body {height:100%}
 body {
     margin: 0; padding: 0 5px;
 }
 div.grid {
     background: #DAE7F6; border: 1px solid #86A4BE; overflow: hidden; zoom: 1;
 }
 div.grid-body {
     background: red; border: 0; overflow: auto; width: 100%; position: relative;
 }
 tr.item-over {
     color: #6eadff;
 }
Run Code Online (Sandbox Code Playgroud)

您可以在此处运行完整示例.

Mat*_*ins 34

这是另一个可能的解决方案,似乎也适用于我的情况.

将任何边距(顶部,右侧,底部,左侧或任意组合)设置为"自动"似乎可以解决它.

div.grid-body {
    margin: 0px auto;
}
Run Code Online (Sandbox Code Playgroud)

要么:

div.grid-body {
    margin-top: auto;
}
Run Code Online (Sandbox Code Playgroud)

等等.


Hel*_*len 8

另一个可能的修复建议在博客文章IE9 Hover Bug解决方法:

div.grid-body {
    min-height: 0%;
}
Run Code Online (Sandbox Code Playgroud)