CSS3-ÑелекÑоÑÑ â ÑÑндаменÑалÑно Ð¿Ð¾Ð»ÐµÐ·Ð½Ð°Ñ Ð²ÐµÑÑ.
Ðаже еÑли Ð²Ñ Ð¿Ð¾ÑемÑ-Ñо (ÑÑаÑÑй IE?) не полÑзÑеÑеÑÑ Ð¸Ð¼Ð¸ в CSS, еÑÑÑ Ð¼Ð½Ð¾Ð³Ð¾ ÑÑеймвоÑков Ð´Ð»Ñ Ð¸Ñ ÐºÑоÑÑ-бÑаÑзеÑного иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ CSS3 из JavaScript.
ÐоÑÑÐ¾Ð¼Ñ ÑÑи ÑелекÑоÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ знаÑÑ.
ÐÑновнÑе Ð²Ð¸Ð´Ñ ÑелекÑоÑов
ÐÑновнÑÑ Ð²Ð¸Ð´Ð¾Ð² ÑелекÑоÑов вÑего неÑколÑко:
*â лÑбÑе ÑлеменÑÑ.divâ ÑлеменÑÑ Ñ Ñаким Ñегом.#idâ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ Ð´Ð°Ð½Ð½Ñмid..classâ ÑлеменÑÑ Ñ Ñаким клаÑÑом.[name="value"]â ÑелекÑоÑÑ Ð½Ð° аÑÑибÑÑ (Ñм. далее).:visitedâ «пÑевдоклаÑÑÑ», оÑÑалÑнÑе ÑазнÑе ÑÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ð° ÑÐ»ÐµÐ¼ÐµÐ½Ñ (Ñм. далее).
СелекÑоÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ комбиниÑоваÑÑ, запиÑÑÐ²Ð°Ñ Ð¿Ð¾ÑледоваÑелÑно, без пÑобела:
.c1.c2â ÑлеменÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменно Ñ Ð´Ð²ÑÐ¼Ñ ÐºÐ»Ð°ÑÑамиc1иc2a#id.c1.c2:visitedâ ÑлеменÑaÑ Ð´Ð°Ð½Ð½Ñмid, клаÑÑамиc1иc2, и пÑевдоклаÑÑомvisited
ÐÑноÑениÑ
Ð CSS3 пÑедÑÑмоÑÑено ÑеÑÑÑе вида оÑноÑений Ð¼ÐµÐ¶Ð´Ñ ÑлеменÑами.
СамÑе извеÑÑнÑе Ð²Ñ Ð½Ð°Ð²ÐµÑнÑка знаеÑе:
div pâ ÑлеменÑÑp, ÑвлÑÑÑиеÑÑ Ð¿Ð¾Ñомкамиdiv.div > pâ ÑолÑко непоÑÑедÑÑвеннÑе поÑомки
ÐÑÑÑ Ð¸ два более ÑÐµÐ´ÐºÐ¸Ñ :
div ~ pâ пÑавÑе ÑоÑеди: вÑеpна Ñом же ÑÑовне вложенноÑÑи, коÑоÑÑе идÑÑ Ð¿Ð¾Ñлеdiv.div + pâ пеÑвÑй пÑавÑй ÑоÑед:pна Ñом же ÑÑовне вложенноÑÑи, коÑоÑÑй идÑÑ ÑÑÐ°Ð·Ñ Ð¿Ð¾Ñлеdiv(еÑли еÑÑÑ).
ÐоÑмоÑÑим Ð¸Ñ Ð½Ð° пÑимеÑе HTML:
<h3>ÐалÑоÑлавÑнÑкие ÑзÑки</h3>
<ol id="languages">
...ÐложеннÑй OL/LI ÑпиÑок ÑзÑков...
</ol>
CSS-ÑелекÑоÑÑ:
/*+ no-beautify */
#languages li {
color: brown; /* поÑомки #languages, подÑ
одÑÑие под ÑелекÑÐ¾Ñ LI */
}
#languages > li {
color: black; /* пеÑвÑй ÑÑÐ¾Ð²ÐµÐ½Ñ Ð´ÐµÑей #languages подÑ
одÑÑиÑ
под LI */
}
#e-slavic { font-style: italic; }
#e-slavic ~ li { /* пÑавÑе ÑоÑеди #e-slavic Ñ ÑелекÑоÑом LI */
color: red;
}
#latvian {
font-style: italic;
}
#latvian * { /* поÑомки #latvian, подÑ
одÑÑе под * (Ñ.е. лÑбÑе) */
font-style: normal;
}
#latvian + li { /* пеÑвÑй пÑавÑй ÑоÑед #latvian Ñ ÑелекÑоÑом LI */
color: green;
}
РезÑлÑÑаÑ:
ФилÑÑÑ Ð¿Ð¾ меÑÑÑ ÑÑеди ÑоÑедей
ÐÑи вÑбоÑе ÑлеменÑа можно ÑказаÑÑ ÐµÐ³Ð¾ меÑÑо ÑÑеди ÑоÑедей.
СпиÑок пÑевдоклаÑÑов Ð´Ð»Ñ ÑÑого:
-
:first-childâ пеÑвÑй поÑомок Ñвоего ÑодиÑелÑ. -
:last-childâ поÑледний поÑомок Ñвоего ÑодиÑелÑ. -
:only-childâ единÑÑвеннÑй поÑомок Ñвоего ÑодиÑелÑ, ÑоÑÐµÐ´Ð½Ð¸Ñ ÑлеменÑов неÑ. -
:nth-child(a)â поÑомок номеÑaÑвоего ÑодиÑелÑ, напÑимеÑ:nth-child(2)â вÑоÑой поÑомок. ÐÑмеÑаÑÐ¸Ñ Ð½Ð°ÑинаеÑÑÑ Ñ1. -
:nth-child(an+b)â ÑаÑÑиÑение пÑедÑдÑÑего ÑелекÑоÑа ÑеÑез Ñказание номеÑа поÑомка ÑоÑмÑлой, гдеa,bâ конÑÑанÑÑ, а подnподÑазÑмеваеÑÑÑ Ð»Ñбое Ñелое ÑиÑло.ÐÑÐ¾Ñ Ð¿ÑевдоклаÑÑ Ð±ÑÐ´ÐµÑ ÑилÑÑÑоваÑÑ Ð²Ñе ÑлеменÑÑ, коÑоÑÑе попадаÑÑ Ð¿Ð¾Ð´ ÑоÑмÑÐ»Ñ Ð¿Ñи каком-либо
n. ÐапÑимеÑ: -:nth-child(2n)даÑÑ ÑлеменÑÑ Ð½Ð¾Ð¼ÐµÑ2,4,6â¦, Ñо еÑÑÑ ÑÑÑнÑе.:nth-child(2n+1)даÑÑ ÑлеменÑÑ Ð½Ð¾Ð¼ÐµÑ1,3â¦, Ñо еÑÑÑ Ð½ÐµÑÑÑнÑе.:nth-child(3n+2)даÑÑ ÑлеменÑÑ Ð½Ð¾Ð¼ÐµÑ2,5,8и Ñак далее.
ÐÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ Ð²ÑÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð² ÑпиÑке:
/*+ hide="CSS к пÑимеÑÑ Ð²ÑÑе" no-beautify */
li:nth-child(2n) { /* ÑÑÑнÑе */
background: #eee;
}
li:nth-child(3) { /* 3-ий поÑомок */
color: red;
}
:nth-last-child(a),:nth-last-child(an+b)â Ñо же Ñамое, но оÑÑÑÑÑ Ð½Ð°ÑинаеÑÑÑ Ñ ÐºÐ¾Ð½Ñа, напÑимеÑ:nth-last-child(2)â вÑоÑой ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ ÐºÐ¾Ð½Ñа.
ФилÑÑÑ Ð¿Ð¾ меÑÑÑ ÑÑеди ÑоÑедей Ñ Ñем же Ñегом
ÐÑÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð¸ÑнÑе пÑевдоклаÑÑÑ, коÑоÑÑе ÑÑиÑÑваÑÑ Ð½Ðµ вÑÐµÑ ÑоÑедей, а ÑолÑко Ñ Ñем же Ñегом:
:first-of-type:last-of-type:only-of-type:nth-of-type:nth-last-of-type
Ðни имеÑÑ Ð² ÑоÑноÑÑи ÑÐ¾Ñ Ð¶Ðµ ÑмÑÑл, ÑÑо и обÑÑнÑе :first-child, :last-child и Ñак далее, но во вÑÐµÐ¼Ñ Ð¿Ð¾Ð´ÑÑÑÑа игноÑиÑÑÑÑ ÑлеменÑÑ Ñ Ð´ÑÑгими Ñегами, Ñем ÑоÑ, к коÑоÑÐ¾Ð¼Ñ Ð¿ÑименÑеÑÑÑ ÑилÑÑÑ.
ÐÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ñ ÑаÑкÑаÑки ÑпиÑка DT «ÑеÑез один» и пÑедпоÑледнего DD:
/*+ hide="CSS к пÑимеÑÑ Ð²ÑÑе" no-beautify */
dt:nth-of-type(2n) {
/* ÑÑÑнÑе dt (ÑоÑеди Ñ Ð´ÑÑгими Ñегами игноÑиÑÑÑÑÑÑ) */
background: #eee;
}
dd:nth-last-of-type(2) {
/* вÑоÑой dd ÑÐ½Ð¸Ð·Ñ */
color: red;
}
Ðак видим, ÑелекÑÐ¾Ñ dt:nth-of-type(2n) вÑбÑал каждÑй вÑоÑой ÑÐ»ÐµÐ¼ÐµÐ½Ñ dt, пÑиÑÑм дÑÑгие ÑлеменÑÑ (dd) в подÑÑÑÑаÑ
не ÑÑаÑÑвовали.
СелекÑоÑÑ Ð°ÑÑибÑÑов
Ðа аÑÑибÑÑ Ñеликом:
[attr]â аÑÑибÑÑ ÑÑÑановлен,[attr="val"]â аÑÑибÑÑ Ñавенval.
Ðа наÑало аÑÑибÑÑа:
[attr^="val"]â аÑÑибÑÑ Ð½Ð°ÑинаеÑÑÑ Ñval, напÑимеÑ"value".[attr|="val"]â аÑÑибÑÑ Ñавенvalили наÑинаеÑÑÑ Ñval-, напÑÐ¸Ð¼ÐµÑ Ñавен"val-1".
Ðа ÑодеÑжание:
[attr*="val"]â аÑÑибÑÑ ÑодеÑÐ¶Ð¸Ñ Ð¿Ð¾Ð´ÑÑÑокÑval, напÑÐ¸Ð¼ÐµÑ Ñавен"myvalue".[attr~="val"]â аÑÑибÑÑ ÑодеÑжиÑvalкак одно из знаÑений ÑеÑез пÑобел.
ÐапÑимеÑ: [attr~="delete"] веÑно Ð´Ð»Ñ "edit delete" и невеÑно Ð´Ð»Ñ "undelete" или "no-delete".
Ðа ÐºÐ¾Ð½ÐµÑ Ð°ÑÑибÑÑа:
[attr$="val"]â аÑÑибÑÑ Ð·Ð°ÐºÐ°Ð½ÑиваеÑÑÑ Ð½Ð°val, напÑÐ¸Ð¼ÐµÑ Ñавен"myval".
ÐÑÑгие пÑевдоклаÑÑÑ
-
:not(ÑелекÑоÑ)â вÑе, кÑоме Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑÐ¸Ñ Ð¿Ð¾Ð´ ÑелекÑоÑ. -
:focusâ в ÑокÑÑе. -
:hoverâ под мÑÑÑÑ. -
:emptyâ без деÑей (даже без ÑекÑÑовÑÑ ). -
:checked,:disabled,:enabledâ ÑоÑÑоÑниÑINPUT. -
:targetâ ÑÑÐ¾Ñ ÑилÑÑÑ ÑÑабоÑÐ°ÐµÑ Ð´Ð»Ñ ÑлеменÑа,IDкоÑоÑого ÑÐ¾Ð²Ð¿Ð°Ð´Ð°ÐµÑ Ñ Ð°Ð½ÐºÐ¾Ñом#...ÑекÑÑего URL.ÐапÑимеÑ, еÑли на ÑÑÑаниÑе еÑÑÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ñ
id="intro", Ñо пÑавило:target { color: red }подÑвеÑÐ¸Ñ ÐµÐ³Ð¾ в Ñом ÑлÑÑае, еÑли ÑекÑÑий URL Ð¸Ð¼ÐµÐµÑ Ð²Ð¸Ð´http://...#intro.
ÐÑевдоÑлеменÑÑ ::before, ::after
«ÐÑевдоÑлеменÑÑ» â ÑазлиÑнÑе вÑпомогаÑелÑнÑе ÑлеменÑÑ, коÑоÑÑе бÑаÑÐ·ÐµÑ Ð·Ð°Ð¿Ð¸ÑÑÐ²Ð°ÐµÑ Ð¸Ð»Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿Ð¸ÑаÑÑ Ð² докÑменÑ.
ÐÑи помоÑи пÑевдоÑлеменÑов ::before и ::after можно добавлÑÑÑ ÑодеÑжимое в наÑало и ÐºÐ¾Ð½ÐµÑ ÑлеменÑа:
<style>
li::before {
content: " [[ ";
}
li::after {
content: " ]] ";
}
</style>
ÐбÑаÑиÑе внимание: ÑодеÑжимое добавлÑеÑÑÑ <b>внÑÑÑÑ</b> LI.
<ul>
<li>ÐеÑвÑй ÑлеменÑ</li>
<li>ÐÑоÑой ÑлеменÑ</li>
</ul>
ÐÑевдоÑлеменÑÑ ::before/::after добавили ÑодеÑжимое в наÑало и ÐºÐ¾Ð½ÐµÑ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ LI.
:before или ::before?Ðогда-Ñо вÑе бÑаÑзеÑÑ Ñеализовали ÑÑи пÑевдоÑлеменÑÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ двоеÑоÑием: :after/:before.
СÑандаÑÑ Ñ ÑÐµÑ Ð¿Ð¾Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ð»ÑÑ Ð¸ ÑейÑÐ°Ñ Ð²Ñе, кÑоме IE8, понимаÑÑ Ñакже ÑовÑеменнÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ñ Ð´Ð²ÑÐ¼Ñ Ð´Ð²Ð¾ÐµÑоÑиÑми. Ð Ð´Ð»Ñ IE8 нÑжно по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¾Ð´Ð½Ð¾.
ÐоÑÑÐ¾Ð¼Ñ ÐµÑли вам важна поддеÑжка IE8, Ñо Ð¸Ð¼ÐµÐµÑ ÑмÑÑл иÑполÑзоваÑÑ Ð¾Ð´Ð½Ð¾ двоеÑоÑие.
ÐÑакÑика
ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð²ÑÑе как ÑпÑавоÑнÑÑ Ð´Ð»Ñ ÑеÑÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ñ Ð½Ð¸Ð¶Ðµ, коÑоÑÑе Ñже ÑеалÑно покажÑÑ, владееÑе Ð²Ñ CSS-ÑелекÑоÑами или неÑ.
ÐомменÑаÑии
<code>, Ð´Ð»Ñ Ð½ÐµÑколÑÐºÐ¸Ñ ÑÑÑок кода — Ñег<pre>, еÑли болÑÑе 10 ÑÑÑок — ÑÑÑÐ»ÐºÑ Ð½Ð° пеÑоÑниÑÑ (plnkr, JSBin, codepenâ¦)