Изменить внешний вид элемента при смене URL-адреса
Элементу задан атрибут id и некие стили CSS, в данном случае свойство border.
<style>
#raz {
border: solid yellow;
}
#raz:target {
border-color: green;
}
</style>
<div id="raz">Образец</div>
Если в адресной строке к URL добавить # (хэш-символ) с тем же значением, что id у элемента, то содержимое окна браузера без перезагрузки страницы промотается так, что первым будет виден верхний край рассматриваемого элемента. Меняют URL-адрес преимущественно не вручную, а с помощью ссылки или с помощью объекта Window.location (JavaScript).
При этом внешний вид данного элемента сменится на тот, что указан в псевдоклассе :target, благодаря чему можно подсветить элемент, к которому был сделан переход.
<a href="#raz">Образец</a>
Для того, чтобы вернуть элемент к исходному виду, можно изменить часть URL после хэша на любую другую.
Образец<a href="#razNo">Образец</a>
Разный стиль :target для одного тега
Тегу можно задать только один уникальный id.
<style>
#dvaRed:target {
color: red;
}
#dvaBlue:target {
color: blue;
}
#dvaGreen:target {
color: green;
}
</style>
<div id="dvaRed">
<div id="dvaBlue">
<div id="dvaGreen">
Второй образец
</div>
</div>
</div>
<a href="#dvaRed">Красный</a> | <a href="#dvaBlue">Синий</a> | <a href="#dvaGreen">Зелёный</a>
Общий стиль :target для нескольких тегов
<style>
.tri:target {
color: red;
}
</style>
<div id="tri1" class="tri">Третий образец</div>
<div id="tri2" class="tri">Третий образец</div>
<div id="tri3" class="tri">Третий образец</div>
<a href="#tri1">Первый DIV</a> | <a href="#tri2">Второй DIV</a> | <a href="#tri3">Третий DIV</a>
Изменить нескольких тегов при переходе к одному id
<style>
#pyat:target,
#pyat:target ~ .pyat { /* если имеют только общих родителей */
color: red;
}
</style>
<div id="pyat" class="pyat">Четвёртый образец</div>
<div class="pyat">Четвёртый образец</div>
<div class="pyat">Четвёртый образец</div>
<a href="#pyat">Все три DIV</a>
Псевдокласс :target "без прыжков"
Когда полезна связь с URL, но не нужна перемотка к элементу. Например, для того, чтобы переправить посетителя к изначально открытой tab-вкладке (см. пункт "CSS Tabs, с переходом по щелчку"), раскрытой полностью таблице и т.п.
<style>
#shest {
position: fixed;
}
#shest:target ~ .shest {
color: red;
}
</style>
<br id="shest">
<div class="shest">Пятый образец</div>
<a href="#shest">Изменить цвет без прокрутки к DIV</a>
<style>
[id^="sem"] {
position: fixed;
}
[id^="sem1"]:target ~ .sem:nth-of-type(1),
[id^="sem2"]:target ~ .sem:nth-of-type(2) {
background: green;
}
#sem11:target ~ .sem:nth-of-type(1) b:nth-of-type(1),
#sem12:target ~ .sem:nth-of-type(1) b:nth-of-type(2),
#sem13:target ~ .sem:nth-of-type(1) b:nth-of-type(3),
#sem21:target ~ .sem:nth-of-type(2) b:nth-of-type(1),
#sem22:target ~ .sem:nth-of-type(2) b:nth-of-type(2),
#sem23:target ~ .sem:nth-of-type(2) b:nth-of-type(3) {
color: yellow;
}
</style>
<br id="sem11"><br id="sem12"><br id="sem13"><br id="sem21"><br id="sem22"><br id="sem23">
<div class="sem"><b>первый</b> <b>второй</b> <b>третий</b></div>
<div class="sem"><b>первый</b> <b>второй</b> <b>третий</b></div>
<a href="#sem11">11</a>
<a href="#sem12">12</a>
<a href="#sem13">13</a>
<a href="#sem21">21</a>
<a href="#sem22">22</a>
<a href="#sem23">23</a>
Комментариев нет: