2009-06-03 2 views
56

Мне интересно, как игнорировать родительский стиль и использовать стиль по умолчанию (none). Я покажу свое конкретное дело в качестве примера, но я уверен, что это общий вопрос.Как игнорировать родительский стиль css

<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 выбрать» установлен, мой модуль не будет иметь доступа к этому.
  • Не рекомендуется переопределять стиль высоты с использованием атрибута style.

Например, используя firebug, я могу отключить родительский стиль, и все хорошо, это тот эффект, который я собираюсь сделать.

Как только стиль установлен, его можно отключить или его нужно переопределить?

ответ

25

Это должно быть отменено. Вы можете использовать:

<!-- Add a class name to override --> 
<select name="funTimes" class="funTimes" size="5"> 

#elementId select.funTimes { 
    /* Override styles here */ 
} 

Вы можете использовать селектор атрибута, но так как это не поддерживается старыми браузерами (читай IE6 и т.д.), то лучше, чтобы добавить имя класса

3

вы можете создать еще одно определение ниже в таблице стилей CSS, которая в основном отменяет исходное правило. вы также можете добавить «! important» к указанному правилу, чтобы убедиться, что он придерживается.

0

Это будет иметь смысл для CSS, чтобы иметь возможность просто добавить дополнительный стиль (в головной части вашей страницы, например, который будет превалировать связанную таблицу стилей), например, следующим образом:

<head> 
<style> 
#elementId select { 
    /* turn all styles off (no way to do this) */ 
} 
</style> 
</head> 

и отключите все ранее примененные стили, , но нет способа сделать это. Вам придется переопределить атрибут height и установить его в новое значение в разделе заголовка ваших страниц.

<head> 
<style> 
#elementId select { 
    height:1.5em; 
} 
</style> 
</head> 
54

Вы можете отключить его переопределение это следующим образом:

высота: авто важно;

+2

Простой, контролируемый мной, но очень эффективный. Спасибо +1. – Ben

+2

Я бы посоветовал использовать '! Important' в вашей производственной разметке - он действительно должен использоваться только при отладке. – Amicable

+0

@ Возможно, вы объясните, почему это не рекомендуется? –

1

У меня была аналогичная ситуация, работая на веб-сайте joomla.

Добавлено имя класса для модуля, который будет затронут. В вашем случае:

<select name="funTimes" class="classname"> 

затем сделал следующее изменение одной строки в css. Добавлена ​​линия

#elementId div.classname {style to be applied !important;} 

хорошо работает!

1

, если я правильно понял qeustion: вы можете использовать «авто» в CSS, как этот width:auto, а затем она будет вернуться к настройкам по умолчанию

1

Вы должны использовать этот

высота: авто!важный;