offsetWidth или проблема с выражением CSS для IE6

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

Решение

td input[type="text"]

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

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

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

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

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

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

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

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

:)

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

Другие вопросы по тегам