Почему этот стиль "width: auto" работает как встроенный стиль в обоих браузерах, но ломается при перемещении во внешнюю таблицу стилей только в IE?

У меня есть элемент INPUT, который по умолчанию имеет значение «width: 100%». Это заставляет его перемещать другие элементы рядом с собой на следующую строку. Чтобы временно исправить это, я добавил к элементу встроенный атрибут стиля:

<input style = "width: auto" ...>

который работал нормально. Теперь я возвращаюсь, чтобы очистить временные исправления, и перемещаю все стили из атрибутов стиля во внешние таблицы стилей. Когда я перемещаю этот конкретный стиль «width: auto» в таблицу стилей, он по-прежнему выглядит нормально в Firefox, но в IE он игнорирует его и снова принимает значение «width: 100%», которое снова выдувает элементы рядом с ним.

Панель инструментов веб-разработчика IE не сообщает мне, откуда берутся стили, поэтому трудно диагностировать, что происходит. Я предполагаю, что в IE есть что-то еще, имеющее приоритет, но я не знаю, что это может быть.

Обновлено: клянусь, я попытался щелкнуть правой кнопкой мыши на панели разработчика IE, но я думаю, что нет - когда я делаю «стиль трассировки» на «ширине: 100%» в IE, я получаю всплывающее окно, в котором просто говорится: «1. Нет совпадений», однако в Firefox он показал, что 100% просачивалось из селектора вышеупомянутого элемента, который был чем-то вроде «#outer foo bar INPUT», который также охватил этот INPUT. Я ошибочно предположил, что "#id" непосредственно в элементе INPUT будет иметь более высокую специфичность, чем "#id foo bar INPUT", но я предполагаю, что браузеры не согласны с этим. В любом случае, это дошло до корня моей проблемы, поэтому спасибо за комментарии. Хотелось бы, чтобы был способ превратить комментарий в ответ ...

Ширина: авто; до или после width: 100%; в файле? Вы не знаете, где в CSS width: 100%; исходит от? Firebug должен сообщить вам, где это находится, даже если Firefox отображает его правильно.

John Sheehan 10.12.2008 08:30

На панели инструментов IE есть способ узнать, откуда взялось определенное значение свойства. Если вы щелкните правой кнопкой мыши свойство, вы можете выбрать «Стиль трассировки», и это даст вам более или менее представление о том, откуда берется конкретное значение. Однако он далеко не так хорош, как Firebug.

Zack The Human 10.12.2008 08:44
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
2
7 228
1

Ответы 1

Вы абсолютно уверены, что ваши правила не противоречат друг другу или расположены в неправильном порядке (и имеют одинаковый приоритет), что исключает друг друга?

Помимо предложения Джона Шихана, вы можете попробовать применить идентификатор к входному элементу, а затем создать правило в своей таблице стилей, которое добавляет width: auto к этому элементу с помощью селектора идентификатора.

Таким образом, правило будет иметь более высокий приоритет и с большей вероятностью будет применено. Это даст вам лучшее представление о том, в чем проблема.

Обновлено: с учетом ваших обновлений правило, которое вызывало ваше горе, работает так, как должно (с точки зрения специфики). Если вы хотите конкретно адресовать свой элемент, вы все равно можете написать правило со спецификой сильнее примерно так:

#outer foo bar INPUT#id {
  width:auto;
}

Если вы обнаружите, что пишете CSS таким образом, скорее всего, вы сделали что-то не так и, возможно, захотите переосмыслить, как вы структурировали свои правила CSS.

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