Логин (e-mail) Пароль

Несколько классов для элемента

10 июня 2009 г.

Сегодня о классах. Точнее о возможности присваивать любому элементу в (X)HTML-документе нескольких классов, и вытекающей из этого гибкости в управлении.

Классам вообще присуща достаточная универсальность. Один и тот же класс может быть присвоен разным элементам и, кроме этого, одному элементу можно присвоить несколько классов, благо, спецификация CSS 2.1 об этом явно указывает. Маленькая ремарка — следует помнить о том, что название класса не может начинаться с цифры или дефиса. Теперь пример:

<p class="one two three">А что это за шаги такие на лестнице? - А это нас арестовывать идут. </p>

Даже невооруженным глазом видно, что у параграфа 3 класса, отделенных друг от друга пробелами. Как таким элементом можно манипулировать?

Обратиться к такому многоклассовому параграфу можно называя один из классов

p.one {
	color:red;
}

два

p.one.three {
	color:blue;
}

или все

p.one.two.three {
	color:black;
}

Если все эти правила будут упомянуты в таблице стилей в точно таком же порядке, то цвет текста в абзаце станет черным, поскольку: 1) действует принцип "работает последний", и, что более важно 2) у правила с одновременным обращением к элементу с помощью нескольких классов «сила воздействия» (специфичность, говоря официальным языком) выше одиночных. Все последние версии браузеров легко справляются с такой конструкцией.

Ради любопытства остается понять, как ведет себя ослик под номером 6. А IE6, обрабатывая многочлен к одному элементу будет ориентироваться только на последний класс-селектор в цепочке. Поэтому, встретив запись

p.one.three {
	color:blue;
}

браузер от Microsoft раскрасит синим текст только в тех параграфах, в названии классов которых есть слово three (идет последним в цепи правила); наличие класса one не будет иметь значения.

Надеюсь, не сильно вас загрузил. Ответ на вопрос о том, как и где применять множественные классы оставляю на ваше усмотрение.

P.s. Больше информации по весу/специфичности селекторов можно почерпнуть в данной заметке.

из раздела Верстка сайтов  
]]>twitter.com Google Buzz google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru]]>

2 комментария

RSS
  1. По-моему проще так:

    p.one {}

    p.two {}

    p.three {}

  2. Как вариант. Для себя постом отметил и закрепил "а как можно еще?". Вдруг окажется полезным одинокому страннику заблудшему на сей ресурс ;)

Ваш комментарий

Аноним
Комментатор

Чтобы стать комментатором укажите свой e-mail, придумайте пароль, напишите комментарий. После активации (см. свой почтовый ящик) можно заполнить данными (сайт, о себе, контактная информация) персональную страницу.

Загрузите картинки