Один из самых
частых вопросов в процессе знакомства с новыми стандартами - в чем
разница между атрибутами HTML-элементов
"id" и
"class". Ведь эффект, вроде бы,
одинаковый.
Одинаковый эффект у них только в самых
простых случаях использования в CSS. На самом деле отличий
полно.
Суть
id
уникальное
собственное имя элемента на странице, то есть на странице не должно
быть нескольких элементов с одним id. Например
блоку с шапкой сайта можно дать id="title".
class
вольный
признак, который дается обычно нескольким элементам, чтобы отличать их
от других. Например, картинкам, которые просто сопровождают текст, можно
дать class="decor", а картинкам,
которые важны для понимания текста - class="content".
Следствия
Из
этой сути прямо или косвенно вытекают остальные отличия, которые видны и
в HTML, и в CSS, и в
скриптах.
Якорные
ссылки
Если нужно поставить
ссылку на какой-то элемент в странице, то ему достаточно дать
id (<h2
id="about">...</h2>) и ссылаться на
него якорем (http://site/path/#about). Это, кстати,
предпочтительный способ взамен старого <a
name="...">.
Множественные
признаки
Элементу можно задавать
несколько классов через пробелы: <img
class="important centered printable">. Причем их
можно использовать и по отдельности:
/* все important
элементы */ .important{color:red;}
... и в
сочетании:
/* элементы с important и centered одновременно
*/ .important .centered{border:solid black 1px;}
Обратите
внимание, что между классами в CSS-правиле нет
пробела.
Разный
вес в CSS
У
каждого правила в CSS
есть "вес", по которому определяется порядок их применений. У
id этот вес
больше. Поэтому если у элемента задан и id, и
class:
<h2 id="about" class="important">...</h2>
...
то из двух правил
#about {
color:green;} .important
{color:red;}
... выиграет
первое, цвет заголовка будет зеленым. (Веса правил — это отдельная
песня, о ней будет статья в свое
время.)
Поиск
в скрипте
Кстати из-за того, что
одинаковый id назначается нескольким элементам на странице, CSS часто
не может пройти валидацию. Тогда лучше всего использовать class
подумаете Вы, однако, это не совсем так...
Элемент с
"id" можно
легко найти в скрипте с помощью функции document.getElementById(). Для классов
такой функции нет.