CSS-селекторы для начинающих
Опубликовано: 06.09.2018
Окей, скажут некоторые мои подписчики и отпишутся от обновлений. Конечно, я понимаю, что во-первых статья для совсем начинающих, во-вторых, довольно много информации есть по этой теме… но тем не менее у многих людей, которые ко мне обращаются, возникают с этим проблемы. А я даже и не знаю, на какую статью им ссылку дать, смотрю одно руководство, смотрю второе, и что-то ни одно из них мне не нравится.
Сейчас я постараюсь пролить немного света на эту тему. Однако скажу, что тут всё очень просто на самом деле — главное не стоит сразу же начинать разбираться с nth-child(even). Чтобы делать хорошую верстку, достаточно понять, как работают ID, классы и иерархия элементов.
Предлагаю вам на каждый из последующих примеров создать HTML-файл и пробовать все варианты сразу же по ходу дела. Тогда точно всё будет просто и понятно.
CSS3 для начинающих | #18 Селектор атрибута
Пример 1. Селекторы по ID элемента
Ну это на мой взгляд самое простое и с этого нужно начинать, тут самое важное, что нужно помнить — это что какой-либо конкретный ID может встречаться только один раз на странице, ну и конечно же для вашего удобства будет лучше, если на других страницах сайта этот же ID не будет обозначать абсолютно другой элемент.
QA Automation: Урок #3 Находим и применяем селекторы в тесте
1 2 | < em id= "misha_em" >Текст курсивом.</ em > < strong id= "misha_strong" >Жирный текст.</ strong > |
HTML5-спецификация допускает использование в качестве названия атрибута ID довольно большой набор символов, но я ограничиваюсь буквами латинского алфавита + символ подчеркивания _ + цифры, мне этого хватает.
/* чтобы обратиться к элементу с конкретным ID через CSS, добавим перед ним # */ #misha_em { color : #888 ; /* серый цвет для курсива */ } #misha_strong { color : #fe0000 ; /* красный для жирного текста */ } |
Как обратиться к нескольким элементам одновременно
Очень просто — перечислить их через запятую:
#misha_em , #misha_strong { text-tansform : uppercase ; /* конечно мы недостаточно выделили наш текст, пусть еще будет в верхнем регистре */ } |
Подытожу: как видите с ID всё предельно просто — добавляем соответствующий атрибут к любому HTML-элементу, этот атрибут должен быть уникальным и не повторяться больше на странице, а затем мы просто обращаемся к нему напрямую через CSS. Всё.
Пример 2. Селекторы по классам
Первое отличие классов от ID — это то, что их может быть на странице сколько угодно. Например для того, чтобы не перечислять все ID элементов через запятую, как в предыдущем примере, используем классы.
1 2 | < em id= "misha_em" class= "misha_text" >Текст курсивом.</ em > < strong id= "misha_strong" class= "misha_text" >Жирный текст.</ strong > |
Переделаем предыдущий пример и получим:
/* чтобы обратиться к элементам класса, добавим перед ним точку */ .misha_text { text-tansform : uppercase ; /* оба элемента <em> и <strong> будут переведены в верхний регистр */ } |
Также мы можем обратиться ко всем элементам жирного текста <strong> с классом .misha_text, добавив перед точкой название тега элемента:
/* обращаемся ко всем <strong> класса misha_text */ strong .misha_text { color : #fe0000 ; } |
Очень кратко про приоритеты
Обычно если одному и тому же элементу присваиваются разные стили несколько раз, то задействуются те, которые указаны в CSS-файле в последнюю очередь (на самом деле тут полно правил, это однозначно тема отдельного поста). Однако у разных селекторов различный приоритет, и в примере я покажу, что имею ввиду.
Тут может показаться, что элементу должен быть присвоен цвет #fe0000, так как это значение свойства указано в последнюю очередь, однако всё совсем не так.
.misha_text { color : #fff !important ; /* если после значения свойства указать !important - это самый высочайший приоритет */ } #misha_strong { color : #eee ; /* у ID приоритет выше, чем у классов, это правило будет считаться важнее, чем .misha_text */ } .misha_text { color : #fe0000 ; } |
Подытожу: если абсолютно разным элементам нужно присвоить одинаковые стили, вы можете объединить их по классу.
Пример 3. Селекторы по HTML тегам. «Путешествие» по дереву DOM
Дерево — это иерархия всех HTML-тегов на странице.
Я предположу, что вы уже знаете парочку HTML-тегов, например то, что <div> — это просто блок, <ul> и <li> — элементы списка, <strong> — жирный текст, <p> — абзац.
1 2 3 4 5 6 7 8 | < div > < ul > < li >Элемент списка 1</ li > < li >Элемент списка 2</ li > < li >< strong >Жирный</ strong > элемент списка 3</ li > </ ul > </ div > < p>< strong >Жирный текст внутри абзаца</ strong ></ p> |
К каждому из типов этих элементов можно обратиться по CSS, например:
div { background-color : #eee ; /* ко всем div (а он у нас один в примере) будет применен светло-серый фон */ } li { color : green ; /* текст элементов списка станет зелёного о_О цвета */ } strong { background-color : #ff0000 ; /* фон всех элементов strong станет красного цвета */ } |
Думаю тут пока понятно, пишем название любого HTML тега в CSS и прописанные вами правила применятся для каждого указанного тега на вашей HTML-странице.
А что если мы хотим изменить стиль только того жирного текста, который находится внутри абзаца? Или вдруг нам нужно, чтобы жирный текст внутри абзаца и внутри списка отличались по стилям?
Тут нам поможет наследственность. В CSS мы можем указать полный путь к нужному нам элементу от самого начала документа, да хоть от самого <body>! Чтобы понять, о чем я говорю, смотрите пример:
/* это означает, что стили будут применяться ко всему жирному тексту, который находится внутри элемента <ul>, который в свою очередь находится внутри элемента <li>, который в свою очередь находится внутри элемента <div>, и необязательно, чтобы эти элементы шли друг за другом последовательно!!! то есть может быть и так: div p ol li ul li p strong */ div ul li strong { background-color : #ff0000 ; } /* ситуация точно такая же, необязательно элемент <strong> должен сразу идти после элемента <p>, это может быть и: p span strong */ p strong { background-color : #aaa ; } |
В принципе всё правильно и вы можете так и оставить и перейти к следующей главе, но я пока что попробую этот пример упростить.
Для начала — зачем нам указывать полный путь к элементу, ведь достаточно и одного:
div strong { background-color : #ff0000 ; } p strong { background-color : #aaa ; } |
Ну а теперь важное правило, если приоритет впереди стоящего селектора не выше, чем последующего, то к элементам применяются правила последующих селекторов.
/* сначала для всех <strong> делаем красный фон */ strong { background-color : #ff0000 ; } /* а потом перезаписываем правила для тех <strong>, которые находятся внутри абзацов <p> */ p strong { background-color : #aaa ; } |
Вот и всё, в принципе информации из этого поста должно быть достаточно для создания верстки практически любой сложности. Тем не менее, я также выпущу вторую часть поста «Селекторы CSS для продвинутых» на следующей неделе.
Смотрите также
Сегодня | Завтра | ||
USD | 32.62 | 32.50 | |
EUR | 39.90 | 39.92 |
Обменник | Переходов |
Wmchanger | 6 |
E-Market | 5 |
WMtoCash.com | 4 |
Str-Money | 3 |
Hot-Change | 3 |
Вы можете получить WMR-бонус в размере 0,01-0,10 WMR на свой кошелек 1 раз в сутки | |
Кошелек
|
|
Код
|
|
Обмен Webmoney |