Галерея на :target без скриптов: переключаем активный слайд якорём
Схема селектора
Миниатюры ссылками ставят якорь; элемент с совпадающим id становится активным через li:target. Иллюстрации в этом пересказе опущены, но блок разметки оставлен пустышками там, где обычно стоят изображения — так проще дополнить свой медиастек.
<div class="cssSlider">
<ul class="slides">
<li id="slide1"></li>
<li id="slide2"></li>
<li id="slide3"></li>
<li id="slide4"></li>
<li id="slide5"></li>
</ul>
<ul class="thumbnails">
<li><a href="#slide1"></a></li>
<li><a href="#slide2"></a></li>
<li><a href="#slide3"></a></li>
<li><a href="#slide4"></a></li>
<li><a href="#slide5"></a></li>
</ul>
</div>Разбор задачи
Возможности CSS с каждым разом удивляют все сильнее! На этот раз покажем вам как сделать простую галерею на CSS без использования JavaScript.
Для этого воспользуемся селектором :target, который указывает на то, элемент с каким ID сейчас должен быть активен.
.cssSlider {
display: block;
position: relative;
width: 100%;
overflow: hidden;
}
.cssSlider .slides {
overflow: hidden;
overflow: hidden;
width: 100%;
height: 70vmin;
margin: 0;
padding: 0;
list-style: none;
}
.cssSlider .slides > li {
width: 100%;
height: 70vmin;
position: absolute;
z-index: 1;
overflow: hidden;
}
.cssSlider .slides > li > img {
width: 100%;
height: auto;
}
/*
.cssSlider .slides > li:first-child:not(:target) {
z-index: 1;
-webkit-transform: translateY(0%);
transform: translateY(0%);
}
*/
.cssSlider .thumbnails {
display: block;
position: relative;
padding: 0;
margin: 0;
list-style: none;
}
.cssSlider .thumbnails > li {
float: left;
width: 20%;
}
.cssSlider .thumbnails > li > a {
display: block;
}
.cssSlider .thumbnails > li > a > img {
width: 100%;
height: auto;
}
.cssSlider .slides li:target {
z-index: 3;
-webkit-animation: slide 1s 1;
}
.cssSlider .slides li:not(:target) {
-webkit-animation: hidden 1s 1;
}
@-webkit-keyframes slide {
0% {
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
100% {
-webkit-transform: translateX(0%);
transform: translateX(0%);
}
}
@keyframes slide {
0% {
-webkit-transform: translateX(-100%);
transform: translateX(-100%);
}
100% {
-webkit-transform: translateX(0%);
transform: translateX(0%);
}
}
@-webkit-keyframes hidden {
0% {
z-index: 2;
-webkit-transform: translateX(0%);
transform: translateX(0%);
}
100% {
z-index: 2;
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
}
@keyframes hidden {
0% {
z-index: 2;
-webkit-transform: translateX(0%);
transform: translateX(0%);
}
100% {
z-index: 2;
-webkit-transform: translateX(100%);
transform: translateX(100%);
}
}Замечания перед выкладкой
Правки через контролируемую среду и с версионированием. Для статей-бэкенда проверяйте включённые модули и права; для чистых CSS-сниппетов — консоль браузера и отсутствие конфликтов с утилитарными классами основного шаблона проекта на Битрикс.
Не хотите копаться сами?
Починю за 1-3 дня. Без предоплаты — оплата по результату.
15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии