IE9很困惑是使用标准还是微软的不透明度

Bry*_*eld 3 css jquery html-table opacity internet-explorer-9

Internet Explorer 9现在支持不透明度规则和过滤规则.

这会导致问题.见例子

HTML

<!DOCTYPE html>
<html>
<head>
  <title>To standard or not to standard</title>
  <script src="http://code.jquery.com/jquery-1.7.1.js"></script>
  <style type="text/css">
    form, table { opacity: 0; filter: alpha(opacity=0); }
  </style>
</head>
<body>
  <form action="javascript:">
    Now you see me...
    <table><tr><td>Now you don't!</td></tr></table>
  </form>
  <script>
    $('form, table').animate({
        opacity: 1
    });
  </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果你在IE9中查看这个,一旦动画完成,表格就会消失
(注意,如果你重新加载,它可能会切换到IE7文档标准,使用F12工具返回IE9)

问题是由内联CSS仅使用标准opacity规则引起的,而不是filter规则引起的.

请注意,父表单没有问题.

在现实世界中,表格不透明度仅在异步操作完成后才会生成动画.这就是为什么我不能把不透明度放在桌子上.

你怎么建议我克服这个?我想的可能是CSS中的IE条件版本代码,或者可能是一些额外的JavaScript.我也可以停止使用似乎也可以修复它的表格,但我想知道你会推荐什么.

编辑:如果你想知道我为什么使用表格.

我使用以下布局.

label A:      [input    ]
label Second: [input    ] [button]
Run Code Online (Sandbox Code Playgroud)

我在这里找到的优点是

  • 第一列自动将其宽度设置为最宽的标签.
  • 行高由最大元素自动确定,在这种情况下是按钮.
  • 标签垂直对齐中间,与输入对齐时更令人愉悦.

备选方案A: Div左对齐.使用第一行上的可见性隐藏按钮,以获得精确宽度的空白空间,以实现一致对齐.

备选方案B:标签具有硬编码宽度的浮动div,以及所需垂直对齐和行高的固定行高.

dan*_*man 6

我不再使用桌子了.

除非您专门显示表格数据.在这种情况下,请将过滤规则粘贴到针对IE8及更低版本的条件注释中