#css
#css
Вопрос:
Я знаю, что есть много вопросов о наследовании CSS, но ни одно из того, что я видел, не относится к моему делу.
Я создаю виджет, который будет использоваться веб-сайтами, которые я не контролирую.
Некоторые из этих веб-сайтов имеют ужасные правила CSS, например:
*{
color:green;
font-size:20px;
}
Как вы видите, это будет применено ко всем элементам моего виджета.
<div class="mywidget">
Hello <b>World</b>
<span>Lorem Ipsum</span>
</div>
<style>
.mywidget{
color:brown;
font-size:15px;
}
.mywidget span{
font-size:18px;
font-weight:bold;
}
</style>
Даже если я попытаюсь повторно применить css к mywidget
<b>
span
тегам and , они не изменятся из-за предыдущего *
правила css, конечно, решением было бы создать кучу правил CSS для каждого тега, который у меня есть, что мне не нравится.
Любые решения CSS или Javascript приветствуются
Ответ №1:
Вы можете победить *
в своей собственной игре, используя ее самостоятельно для сброса всех наследуемых свойств:
.mywidget * {
color: inherit;
*color: #000; /*include this line only if you need IE7 support */
font-size: 100%
}
После этого добавьте весь свой CSS для .mywidget
и элементы внутри него, как обычно.
Комментарии:
1. Я бы использовал
color: inherit; font-size: 100%
2. @BoltClock: я согласен с
font-size
, но IE7 вызывает у меня сомнения в использованииinherit
.3. @thirtydot Что делать, если
mywidget
для color установлено значение brown и содержит<b>
тег, который должен быть коричневым, но не имеет определенного класса, я думаю, он будет черным вместо коричневого (его родительского).
Ответ №2:
Попробуйте это:
.mywidget, .mywidget *{
color:brown;
font-size:15px;
}
Ответ №3:
Я бы предположил, что для этого существует несколько решений, наиболее прямым было бы добавить !important к свойству, которое перезапишет стили по умолчанию, например
font-size:15px !important;