Можно ли переопределить свойство display значением по умолчанию? Например, если я установил его на none в одном стиле, и я хочу переопределить его в другом по умолчанию.
Или это единственный способ выяснить, что по умолчанию для этого элемента, а затем установить его на это? Хотелось бы не знать, является ли элемент обычно блочным, встроенным или каким бы то ни было ...
unset
.unset
,initial
,inherit
,revert
Ответы:
Стили браузера по умолчанию определены в его таблице стилей агента пользователя, источники которой вы можете найти здесь . К сожалению, спецификация Cascading and Inheritance level 3 , по-видимому, не предлагает способ сброса свойства стиля в его браузер по умолчанию. Однако есть планы повторно ввести ключевое слово для этого на уровне 4 каскадирования и наследования - рабочая группа просто еще не определилась с именем для этого ключевого слова (в настоящее время ссылка говорит
revert
, но она не является окончательной). Информацию о поддержке браузераrevert
можно найти на сайте caniuse.com .В то время как спецификация уровня 3 вводит
initial
ключевое слово , установка свойства к его начальному значению сбрасывает его к его значению по умолчанию, как определено CSS , а не как определено браузером . Начальное значениеdisplay
являетсяinline
; это указано здесь .initial
Ключевое слово относится к этому значению, а не браузер по умолчанию. Сама спецификация делает это примечание подall
свойством :Поэтому я думаю, что единственный способ использовать чистый CSS прямо сейчас - это найти значение по умолчанию в браузере и установить его вручную:
(Альтернативой вышеупомянутому может быть
div.foo:not(.bar) { display: inline-block; }
, но это включает в себя изменение исходного селектора, а не переопределение.)источник
initial
самом деле. Я обновил свой ответ.display
всегдаinline
( w3.org/TR/CSS21/visuren.html#display-prop ), независимо от того, находится оно на adiv
или aspan
.div
Элементdisplay: block
по умолчанию в соответствии с HTML , а не CSS, так что до UA таблицы стилей браузера, чтобы сказатьdiv { display: block; }
.default
был переименован вrevert
.Если использование javascript разрешено , вы можете установить для
display
свойства пустую строку. Это заставит его использовать значение по умолчанию для этого конкретного элемента.Вот ссылка на jsbin .
Это хорошо , потому что вам не придется беспокоиться о различных типах дисплея , чтобы вернуться к (
block
,inline
,inline-block
,table-cell
и т.д.).Но для этого требуется javascript, поэтому, если вы ищете решение только для css, то это не решение для вас.
Примечание: это переопределяет встроенные стили, но не стили, установленные в CSS
источник
style
атрибута. С помощью этого метода вы не можете переопределить или удалить объявление из таблицы стилей.style
атрибут или установщик JavaScript. Вы все еще можете переопределить объявление таблицы стилей, если вы устанавливаете определенное значение с помощью JS, но установка его на пустое значение эквивалентна не установке его вообще - объявление таблицы стилей останется без изменений. Смотрите измененную скрипку: jsfiddle.net/BoltClock/g45qagt3/1Unset
display
:Вы можете использовать значение,
unset
которое работает как в Firefox, так и в Chrome .источник
unset
имеет те же проблемы, что иinitial
. Ценностьdisplay
станетinline
. См. Codepen.io/Gidgidonihah/pen/mwWxEqunset
не поможет с этим, так как для каждого свойства и всегда сбрасывает отображение наinline
. Пожалуйста, рассмотрите возможность обновления своего ответа.Нет, это вообще невозможно. Как только некоторый код CSS (или HTML) устанавливает значение для свойства элемента, невозможно отменить его и сказать браузеру использовать его значение по умолчанию.
Конечно, можно установить для свойства значение, которое вы ожидаете использовать в качестве значения по умолчанию. Это может работать довольно широко, если вы проверите раздел « Рендеринг » в HTML5 CR, в основном отражая действия браузеров.
Тем не менее, ответ «Нет», потому что браузеры могут иметь любые значения по умолчанию, которые им нравятся. Вы должны проанализировать причину, по которой вы хотите сбросить настройки по умолчанию; оригинальная проблема все еще может быть разрешима.
источник
Если у вас есть доступ к JavaScript , вы можете создать элемент и прочитать его вычисленный стиль.
источник
Что касается ответа от BoltClock и Джона, у меня лично были проблемы с исходным ключевым словом при использовании IE11. Он отлично работает в Chrome, но в IE, похоже, не имеет никакого эффекта.
Согласно этому ответу IE не поддерживает начальное ключевое слово: Div display: начальное не работает, как задумано в ie10 и chrome 29
Я попытался установить его пустым вместо этого, как предложено здесь: как вернуться к нормальному состоянию после отображения: нет для строки таблицы
Это сработало и было достаточно для моего сценария. Конечно, чтобы установить реальное начальное значение, приведенный выше ответ - единственный хороший, который я смог найти.
источник