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 коробками. Ширина и высота включают отступы и границы. Смотрите здесь для получения дополнительной информации.