2008-10-14 2 views
7

У меня есть только базовое знание css, можно ли наследовать свойство из одного стиля в другой стиль. Так, например, я мог унаследовать размер шрифта, указанный в настройках тега paragrah по умолчанию, в мои теги гиперссылок.Inherit css properties

Причина, по которой я хочу сделать это, упростить сохранение нескольких стилей.

ответ

6

Вы можете определить общие стили для двух элементов сразу, как так:

p, a { 
    font-size: 1em; 
} 

А затем продлить каждый со своими индивидуальными свойствами, как вы хотите:

p { 
    color: red; 
} 

a { 
    font-weight: bold; 
} 

Имейте в виду: Стили, определенные позже в таблице стилей, обычно переопределяют свойства, определенные ранее.

Extra: Если вы еще не сделали, я рекомендую получить расширение Firebug Firefox, так что вы можете увидеть, какие стили элементов на странице получают и где они унаследованы от.

+0

«Стили, определенные позже в таблице стилей, всегда переопределяют свойства, определенные ранее» Это не совсем так. Это происходит только тогда, когда селекторы имеют одинаковую специфичность. p # id всегда будет переопределять p.class - см. Каскад в спецификации CSS. – Kornel 2008-10-15 20:56:45

2

Ни один CSS не имеет способа наследовать стили. Но есть несколько способов совместного использования стилей. Вот несколько примеров:

Использование нескольких классов

<p class="first all">Some text</p> 
<p class="all">More text</p> 
<p class="last all">Yet more text</p> 

p.all { font-weight: bold } 
p.first { color: red; } 
p.last { color: blue; } 

Используйте оператор запятая в ваших стилях

<p class="first">Some text</p> 
<p class="middle">More text</p> 
<p class="last">Yet more text</p> 

p.first, p.middle, p.last { font-weight: bold } 
p.first { color: red; } 
p.last { color: blue; } 

Используя элементы контейнера

<div class="container"> 
    <p class="first">Some text</p> 
    <p class="middle">More text</p> 
    <p class="last">Yet more text</p> 
</div> 

div p { font-weight: bold } 
p.first { color: red; } 
p.last { color: blue; } 

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

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

1

Да.

Вы должны понимать, как работает каскад в CSS, а также понимать, как работает наследование. Некоторые стили наследуют (например, лицо шрифта), а некоторые стили (например, граница). Тем не менее, вы также можете указать стили для наследования от своих родительских элементов внутри DOM.

Некоторая помощь здесь - это знание правил стиля. This site about the CSS Specifity Wars может помочь (обратите внимание: этот сайт в настоящее время недоступен, но, надеюсь, он скоро вернется).

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

h1, h2, h3, h4, h5 h6 { font-weight: normal; border: 1px solid #ff0; } 
h1 { font-size: 300%; } 
... etc ... 
0

CSS автоматически наследует от родительского стиля. Например, если вы говорите в своем стиле тела, что весь текст должен быть #EEE, а ваш фон должен быть # 000, тогда весь текст, будь то в div или span, всегда будет #EEE.

Было довольно много разговоров о добавлении наследования так, как вы описываете в CSS3, но эта спецификация еще не вышла, поэтому прямо сейчас мы застряли, повторяя себя совсем немного.

0

«... возможно ли наследовать свойство из одного стиля в другой стиль.Так, например, я мог наследовать размер шрифта, указанный в настройках тега paragrah по умолчанию, в мои метки гиперссылки».

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

Например, это CSS:

* { 
margin: 0 10px; 
padding:0; 
font-size: 1 em; 
} 
p, a { font-size: 75%; } 

будет генерировать ссылки и параграфы, которые имеют размеры в .75em , Но отображает ссылки в параграфах примерно на .56em (.75 ​​* .75).

В дополнение к специальной ссылке, приведенной Джонатаном Аркеллом, я рекомендую CSS Tutorial в W3Schools.

Смежные вопросы