offsetWidth или проблема с выражением CSS для IE6 - PullRequest
1 голос
/ 27 марта 2010

Мне нужно установить ширину текстовых полей как 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 ]

2 голосов
/ 27 марта 2010

td input [type = "text"]

Селекторы атрибутов не работают в IE6. Если вы хотите поддержать этот браузер, добавьте class="text" и стиль td input.text.

Вам не нужно ничего сложного со скриптами, jQuery или выражениями.

1 голос
/ 27 марта 2010

Извините, я пишу ответ на свой вопрос, подумал, может ли кто-нибудь получить помощь от этого.

Я пробовал много вещей из 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);
            });
        }

У меня это хорошо работало.

1 голос
/ 27 марта 2010

попробуйте переписать как

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

однако мой собственный альтернативный метод - определить версию, и если ее 6 перенаправить на страницу ошибки с сердитым лицом, предупреждающим пользователя: его 21-й век, придурок! Обновление!

:)

0 голосов
/ 02 июля 2010

Я полагаю, что эта проблема вызвана моделью с 6 коробками. Ширина и высота включают отступы и границы. Подробнее см. Здесь .

...