1

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

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

但如果input是 的子级,则无法正确渲染td。所以,我使用了 Css 表达式

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

它在除 IE 6 之外的所有浏览器中都可以正常工作。谁能帮助我,我哪里出错了?我知道IE 6中允许表达式。那么,是使用css表达式还是做offsetWidth的问题。

提前致谢。

4

4 回答 4

2

td 输入[type="文本"]

属性选择器在 IE6 中不起作用。如果要支持此浏览器,请class="text"td input.text.

您不需要任何复杂的脚本、jQuery 或表达式。

于 2010-03-27T13:18:24.717 回答
1

尝试重写为

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

但是我自己的替代方法是检测 ie 版本,如果它的 6 重定向到错误页面,并带有愤怒的脸警告用户:它的 21 世纪你这个白痴!更新!

:)

于 2010-03-27T10:14:42.750 回答
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);
            });
        }

它对我很好。

于 2010-03-27T11:54:34.447 回答
0

我相信这个问题是由 ie 6 盒模型引起的。宽度和高度包括填充和边框。请参阅此处了解更多信息

于 2010-07-02T14:34:39.537 回答