IE6的offsetWidth或CSS表达式问题

时间:2010-03-27 10:05:55

标签: internet-explorer-6 css offsetwidth

我需要将文本框的宽度设置为其父级的80%。所以首先我用

td input[type="text"]
{    
    width: 80%;
}

但如果inputtd的孩子,则无法正常呈现。所以,我使用了Css表达式

td input[type="text"]
{    
    width: expression(this.parentNode.offsetWidth*0.8);
}

除了IE 6之外,它在我想要的每个浏览器中工作。任何人都可以帮助我,我哪里出错?我知道在IE 6中允许使用表达式。因此,使用css表达式或者做某事来做offsetWidth的问题。

提前致谢。

4 个答案:

答案 0 :(得分:2)

  

输入[type =“text”]

属性选择器在IE6中不起作用。如果您想支持此浏览器,请在class="text"上添加td input.text和样式。

你不应该对脚本,jQuery或表达式有任何复杂的想法。

答案 1 :(得分:1)

尝试重写为

* html td input[type="text"]
{    
    width: expression(this.parentNode.offsetWidth*0.8) !important;
}

然而,我自己的另一种方法是检测ie版本,如果它的6重定向到错误页面,愤怒的脸警告用户:21世纪你白痴!更新!

:)

答案 2 :(得分:1)

抱歉,我正在为自己的问题写答案,想一想有人可以从中获得帮助。

我从CSS尝试了很多东西,在IE 6中没有任何效果。所以,最后使用了jquery

if (jQuery.browser.msie && jQuery.browser.version.substring(0, 1) == "6") {
            $("td > input[type='text']").each(function() {
                $(this).css("width", $(this).parent().width() * 0.80);
            });
        }

对我很好。

答案 3 :(得分:0)

我认为这个问题是由6盒模型引起的。宽度和高度包括填充和边框。 See here for more info