Мне интересно, как игнорировать родительский стиль и использовать стиль по умолчанию (нет). Я покажу свой конкретный случай в качестве примера, но я уверен, что это общий вопрос.
<style>
#elementId select {
height:1em;
}
</style>
<div id="elementId">
<select name="funTimes" style="" size="5">
<option value="test1">fish</option>
<option value="test2">eat</option>
<option value="test3">cows</option>
</select>
</div>
Способы решения этой проблемы не хочу:
- Я не могу редактировать таблицу стилей, в которой установлен "#elementId select", мой модуль не будет иметь к ней доступа.
- Желательно не переопределять стиль высоты с помощью атрибута style.
Например, с помощью firebug я могу отключить родительский стиль, и все в порядке, это тот эффект, который я собираюсь получить.
После того, как стиль установлен, можно ли его отключить или переопределить?
!important
что можно,Вы можете отключить его, переопределив его следующим образом:
высота: авто! важно;
источник
!important
в вашей производственной разметке - ее действительно следует использовать только при отладке.!important
служебных классов include и хаков обратной совместимости для древних браузеров, таких как IE7!important
когда вы застряли с родительской темой, которую вы не контролируете, но все же хотите переопределить.Это оказалось наверху из-за редактирования ... Ответы стали немного устаревшими и не так полезны сегодня, как другое решение, добавленное к стандарту.
Теперь существует сокращенное свойство «все».
#elementId select.funTimes { all: initial; }
Это устанавливает все свойства css в их начальное значение ... обратите внимание, что некоторые из начальных значений наследуются; В результате в элементе все еще происходит некоторое форматирование.
Из-за этой паузы, необходимой при чтении кода или его проверке в будущем, не используйте ее, если вы больше всего, поскольку процесс проверки - это точка, где могут быть сделаны ошибки / ошибки! при редактировании страницы. Но ясно, что если есть большое количество свойств, которые необходимо сбросить, то «все» - лучший вариант.
Стандарт доступен здесь: https://drafts.csswg.org/css-cascade/#all-shorthand
источник
вы можете создать другое определение ниже в таблице стилей CSS, которое полностью меняет исходное правило. вы также можете добавить "! important" к указанному правилу, чтобы убедиться, что оно соблюдается.
источник
Вы должны использовать это
высота: авто! важно;
источник
У меня была похожая ситуация, когда я работал над сайтом joomla.
В модуль, на который будет воздействовать, добавлено имя класса. В твоем случае:
<select name="funTimes" class="classname">
затем сделал следующее изменение одной строки в CSS. Добавил строку
#elementId div.classname {style to be applied !important;}
хорошо сработало!
источник
Если я правильно понял вопрос: вы можете использовать
auto
вCSS
этом,width: auto;
и он вернется к настройкам по умолчанию.источник
Для CSS было бы разумно иметь способ просто добавить дополнительный стиль (например, в раздел заголовка вашей страницы, который переопределил бы связанную таблицу стилей), например:
<head> <style> #elementId select { /* turn all styles off (no way to do this) */ } </style> </head>
и отключите все ранее примененные стили, но нет возможности сделать это . Вам придется переопределить атрибут высоты и установить для него новое значение в разделе заголовка ваших страниц.
<head> <style> #elementId select { height:1.5em; } </style> </head>
источник
Пожалуйста, см. Приведенный ниже машинописный текст для повторного применения класса css к элементу для переопределения стилей CSS родительского контейнера (обычно это компонент фреймворка) и принудительного применения ваших пользовательских стилей. Фреймворк вашего приложения (будь то angular / response, вероятно, делает это, поэтому родительский контейнер css был повторно применен, и ни один из ожидаемых эффектов в css-class-name не отображается для вашего дочернего элемента. Вызовите this.overrideParentCssRule (childElement, ' css-class-name '); чтобы сделать то, что только что сделала фреймворк (вызовите это в document.ready или обработчике завершения события):
overrideParentCssRule(elem: HTMLElement, className: string) { let cssRules = this.getCSSStyle(className); for (let r: number = 0; r < cssRules.length; r++) { let rule: CSSStyleRule = cssRules[r]; Object.keys(rule.style).forEach(s => { if (isNaN(Number(s)) && rule.style[s]) { elem.style[s] = rule.style[s]; } }); } }
источник
Есть несколько значений, которые можно использовать для отмены правил CSS: начальное, неустановленное и возвратное. Более подробная информация от рабочей группы CSS в W3C:
https://drafts.csswg.org/css-cascade/#defaulting-keywords
Поскольку это «черновик», не все из них полностью поддерживаются, но unset и initial есть в большинстве основных браузеров, revert имеет меньшую поддержку.
источник