2014-08-29 2 views
-2

Есть ли возможность расширить существующий класс, используя только css?Расширение классов CSS

.darkStyle { 
     color:#eee; 
     background:#222; 
} 
.element { 

     // here I want to get all properties from darkStyle 

     min-width:100px; 
     display:block; 
} 

Я знаю, что я могу использовать в HTML класс = «darkStyle элемент», но любой метод расширения, как в моем примере будет более удобным для использования.

+0

@ProgramFOX AFAIK Наследование CSS представляет собой механизм, применяя к потомкам элементы, а не тот же элемент, оформленные предыдущее правило. Элемент не наследует стили, применяемые к себе, это только его стили, которые применяются к нему. – FelipeAls

+0

@FelipeAls Ответы на вопрос, который я связал, могут быть повторно использованы здесь, поэтому это дубликат. Например, ответ LESS там точно объясняет, что здесь хочет OP. – ProgramFOX

+0

@ProgramFOX Принятый ответ также отвечает на вопрос (частично, есть много других способов). Я так же запутался, как и Джавад: наследование (название предполагаемого дубликата) является столпом CSS и вовсе не означает этого в этом контексте – FelipeAls

ответ

1

Используйте Less или Sass для этого.

В менее:

.element { 
    .darkStyle; // Will output all styles from .darkStyle; 
    min-width:100px; 
    display:block; 
} 
+0

Кроме того, фактический ответ на фактический вопрос: «нет, не используйте _only_ CSS». –

1

Назначают общие свойства, а затем присвоить уникальные свойства для .element. Это был бы единственный способ только с CSS. Вы можете использовать фреймворки CSS, такие как Less, для дополнительных функций, таких как наследование.

.darkStyle, .element { 
    color:#eee; 
    background:#222; 
} 

.element { 
    min-width:100px; 
    display:block; 
} 
+0

Это хороший момент для управления CSS, но иллюстрирует любой способ фактически _extend_ класса с использованием _pure_ CSS (это невозможно). –

+0

Да, конечно, вы правы. –

0

Нет, вы не можете «расширить» классы. И вам не нужно, CSS не является языком программирования OO и имеет разные механизмы.

Например, классы могут быть объединены на данном HTML элемента:

<p class="darkStyle"> 
    I'm styled by styles applying to .darkStyle 
</p> 
<p class="darkStyle element"> 
    I'm styled by styles applying to both .darkStyle and .element 
</p> 

Multiclass!

+0

Хотя возможно, я думаю, что этот вид разметки CSS не самый лучший. Дизайн должен быть максимально удален из HTML. Думаю, лучше комбинировать в CSS. –

+0

@ Pierre-EmmanuelLevesque В моем ответе нет CSS, только классы, используемые OP. Хотя в идеальном мире было бы идеальное разделение контента и формы в огромных проектах, которые он просто не масштабирует. Новый шаблон, дополнительные правила CSS, повторное объявление и получение тысяч правил CSS. OOCSS и такие очень полезные методологии в этих случаях – FelipeAls

+0

К сожалению, я должен был быть более ясным. Я хотел сказать, что я не думаю, что CSS-крючки такого типа в вашем HTML - хорошая идея. Я бы сказал, что на самом деле это сложнее, но не проще. Чем больше вы разделяете контент и дизайн, тем проще масштабирование будет, на мой взгляд. Личное предпочтение, я думаю. –

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