2009-10-16 4 views
36

Я новичок в CSS. Мне просто интересно, возможно ли включить один общий класс в другой класс?Можем ли мы включить общий класс css в другой класс css?

, например,

.center {align: center}; 
.content { include .center here}; 

я наткнулся рамки CSS - Blueprint. Нам нужно поместить информацию о позиции в HTML, например.

<div class="span-4"><div class="span-24 last"> 

Таким образом, мы поместим атрибут позиционирования внутри html вместо css. Если мы изменим макет, нам нужно изменить html, а не css.

Именно по этой причине я задаю этот вопрос. Если я могу включить .span-4 в свой собственный css, я не буду указывать его в своем теге html.

+0

Это что-то не так с ответами? –

+0

больше, чем что-либо, что я нашел, это было бы очень полезно, с точки зрения цвета фона, но нам остается делать что-то трудное. T.T –

ответ

31

Необычно, хотя CSS говорит о наследовании, классы не могут «наследовать» таким образом. Самое лучшее, что вы действительно можете сделать, это следующее:

.center, .content { align: center; } 
.content { /* ... */ } 

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

div.center, div.content { align: center; } 
div.content { /* ... */ } 

Я говорю это, потому что если вы делаете ваши селекторы как можно более широким, что в конечном итоге становится неуправляемым (по моему опыту), как только вы получите большие таблицы стилей. Вы оказываетесь в непреднамеренных селекторах, взаимодействующих друг с другом до того момента, когда вы создаете новый класс (например .center2), потому что изменение оригинала влияет на всевозможные вещи, которые вы не хотите.

+9

Я категорически не согласен с тем, чтобы избегать голых селекторов. За все годы работы CSS у меня никогда не возникало проблемы с тем, чтобы обозначить два концептуально разных класса одинаково. Если вы это сделаете, то a) вы можете легко изменить одно имя и b) указание имен элементов не решит проблему, просто сделайте ее менее предсказуемой и, более подробно, сложнее диагностировать и решать, потому что * большинство * времени, элементы не будут совпадать, поэтому ошибка будет отображаться только некоторое время. Настоящая проблема заключается в использовании имен классов, таких как «центр». –

+3

Я должен согласиться частично и с cletus, и с Thom. Во-первых, такие классы, как «center», описывают, как это должно выглядеть, а не то, что есть, и их следует избегать. Семантические имена классов, такие как «контент», - гораздо лучший выбор. Теперь, что касается использования широких (или «голых») селекторов, я должен согласиться с cletus - это действительно рецепт катастрофы. Firebug упростил идентификацию ошибок, но если у вас есть десять '' 'каждый с другим смысловым значением, то каждый должен иметь свой собственный класс. Если они имеют общие свойства отображения, используйте несколько селекторов (например, 'div.content, div.author_name {}') –

9

В стандартном CSS это невозможно сделать, хотя было бы неплохо.

Для чего-то подобного вам нужно использовать SASS или подобное, которое «компилируется» в CSS.

+5

+1 Эти системы просто упрощают запись CSS-кода - все они заканчиваются как обычный CSS. – alex

+0

Спасибо за упоминание. Я не знал об этом. – Ranjith

+0

Согласен с @alex –

12

Здесь Каскадирование в каскадных таблицах стилей входит в игру.

Подумайте о своем элементе html или виджета/модуле (группе вложенных элементов html) в качестве объекта. Вы знаете, что у вас будут объекты, которые имеют одни и те же свойства, поэтому вы захотите создать класс повторного использования, который они могут использовать.

.baseModule {align: center;} 

Скажите, что ваш модуль является сообщением (ошибка, вспышка ...). Таким образом, вы «расширяете» или «включаете» свой класс .baseModule, потому что все сообщения будут выравниваться по центру (см. Последний пример html).

.message {border: 1px solid #555;} 

Кроме того, вы хотите, чтобы ваши сообщения об ошибках имели красный фон. Кроме того, вы можете переписать свойство border из .baseModule.message здесь, если хотите, чтобы он был другого цвета или чего-то другого.

.error {background-color: red;} 

Итак, теперь у вас есть несколько определений css, которые можно использовать повторно с легкостью.

<!-- Regular message module --> 
<p class="baseModule message"> 
    I am a regular message. 
</p> 

<!-- Error message module --> 
<p class="baseModule message error"> 
    I am an error message. My background color is red. 
</p> 

Чтобы связать это с вашим вопросом, вы в основном использовали бы несколько имен классов для максимального повторного использования. Предоставленный ie6 не поддерживает цепные селектор (class1.class2.class3), но это все еще аккуратный трюк!

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

  • Нет связанных вопросов^_^