Видове селектори в CSS

Чрез CSS може да се приложи определен стил на точно определен елемент в документа, описан с маркиращ език като HTML. Когато стилът се прилага за елементи на HTML кода, за селектор се използва дадения HTML таг. В CSS съществуват няколко вида селектори.

Класови селектори

CSS позволява да задавате собствени класове за различните селектори. След като един клас е дефиниран, после всички селектори, на които е присвоен този клас, ще показват един и същ ефект.

Например клас за заглавия h1 да са с червен цвят и клас за параграфите p, чиито текст да се позиционира вдясно.

Синтаксисът на класовите селектори е:

селектор.клас {свойство: стойност;}

В първия случай селектора ще бъде h1 – това е HTML тага за най-голямо заглавие. Названието на класа може да бъде напълно произволно, но понеже искаме да направим червено заглавие, за удобство може да наречем класа red. Тогава целия код ще изглежда така:

h1.red {color: #ff0000;}

По аналогичен начин изглежда кода за параграф, който да се появява в дясната част на страницата:

p.right {text-align: right;}

Така класовете са дефинирани и трябва да се поместят в секцията head на вашата HTML страница, като се затворят между таговете <style> и </style>:

<style type="text/css">
h1.red {color: #ff0000;}
p.right {text-align: right;}
</style>

След това, когато в тялото на страницата (body) желаете да използвате някои от дефинираните класове, например червеното заглавие, е нужно да напишете следното:

<h1 class="red">Червено Заглавие</h1>

Колкото пъти използвате този код, толкова пъти ще имате в страницата си червено заглавие.

Пример:

<!DOCTYPE html>
<html>
<head>
<title>класови селектори</title>
<style type="text/css">
h1.red {color: #ff0000;}
p.right {text-align: right;}
</style>
</head>
<body>
<h1 class="red">Червено Заглавие</h1>
<p class="right">Параграф, чийто текст се появява отдясно.</p>
<h1>Обикновено Заглавие</h1>
<h1 class="red">Отново Червено заглавие</h1>
</body>
</html>

Горният пример дава представа и за това как изглежда т.нар. Internal Style Sheet, за който беше споменато в 1-ва страница, т.е. CSS, при който чрез елементи, поставени в секцията head и затворени между таговете <style type=“text/css“> и </style> се определя външния вид на целия HTML документ.

Класовете могат да бъдат декларирани и по друг начин, а именно – без да е необходимо да се обвързват с конкретен селектор. В този случай синтаксисът на CSS кода е:

.клас {свойство: стойност;}

Т.е. отсъства самия селектор. Така например вместо да се пише

h1.red {color: #ff0000;}
p.right {text-align: right;}

може да се напише следния код:

.red {color: #ff0000;}
.right {text-align: right;}

Всичко останало е като в горния пример, при което ефектът в HTML страницата ще бъде същият.

Групиране на селектори

Няколко селектора могат да бъдат подредени, като се отделят със запетаи, и им се зададе еднакъв ефект, т.е. свойства с еднакви стойности. Синтаксисът при групирането е:

селектор1,селектор2,селектор3,… {свойство: стойност;}

Пример:

<title>групиране на селектори</title>
<style type="text/css">
h1,h2,h3,p,del {color: #ff0000;}
</style>

В случая са подредени селекторите (таговете от HTML) за първите 3 по големина заглавия, за параграф и за зачертаване на текст, като на всички тях е зададен червен цвят. Ако след това в body на HTML документа напишете например:

<del>червен и зачеркнат текст</del>

този текст ще се покаже не само зачеркнат, какъвто е по принцип ефекта от тага del, но и в червен цвят.

ID селектори

Чрез ID селекторите могат да се декларират допълнителни параметри, които не са указани в декларираните класове. Разбира се същия ефект може да се постигне и чрез деклариране на нов клас, но за по-голямо удобство това може да стане чрез ID селектор.

Синтаксисът на ID селектора е

#id {свойство: стойност;}

/ или също селектор#id {свойство: стойност;} /

Например вече имаме деклариран клас за позициониране в дясната част на страницата. Можем да добавим примерно следния id в секцията head, между таговете <style type=“text/css“> и </style>:

<head>
<title>css</title>
<style type="text/css">
.right {text-align: right;}
#bluebold {color:#0000ff; font-weight:bold;}
</style>
</head>

Ефекта от него ше бъде удебелен текст със син цвят. В случая названието bluebold е произволно и е избрано само за да подсказва какъв е ефекта, а може да бъде и всякакво друго, например bb и т.н.

Ако сега напишем в body на HTML страницата следния код

<p class="right" id="bluebold">Син и удебелен текст, който ще се покаже вдясно</p>

ще имаме като ефект параграф в дясната част на страницата със син и удебелен текст.

В нашия пример параграфа може да се въведе и без декларирания клас:

<p id="bluebold">Параграф със син и удебелен текст</p>

В такъв случай ефектът ще бъде син и удебелен текст, но без позициониране на параграфа вдясно.

Контекстни селектори

Контекстовите селектори посочват елементи, според тяхното местоположение спрямо други елементи в структурното дърво на документа.

Контекстовите селектори представляват комбинация от няколко селектора, като зададеният ефект на стила се проявява в зависимост от това дали е изпълнено условието.

Синтаксисът на контекстните селектори е:

1-ви селектор 2-ри селектор… {свойство: стойност;}

Например в секцията head може да напишем кода:

<style type="text/css">
p strong em {color:#10ad18;font-size:16px;}
</style>

Ако след това в body напишем:

<p><strong><em>Текст, който се намира в контекста</em></strong> и текст, извън контекста</p>

ефектът ще бъде удебелен и наклонен зелен текст за текста, заключен между <strong><em> и </em></strong> и стандартен текст за останалата част от текста в параграфа. Трябва да се спазва последователността на декларираните селектори, в противен случай ефектът няма да се прояви, т.е. ако напишем:

<p><em><strong>Текст</strong></em></p>

няма да се получи като ефект зелен цвят, тъй като е нарушена декларираната последователност на селекторите p и strong.

Контекстовите селектори може да посочват различни елементи, според типа на елемента, класовия атрибут, ID атрибута или комбинация от тях:

div p {font: small sans-serif;}
.reddish h1 {color: red;}
#x78y code {background: blue;}
div.sidenote h1 {font-size: large;}

Вижте още:

🔗 Какво е CSS и как се използва в HTML? | Help

🔗 Стилови правила в CSS | Help

Обновена: 01.06.2020
Беше ли Ви полезна тази статия?

Вижте още