Слайдер с меняющимися фото на css
Содержание:
- Шаг 2 – Основной код CSS
- Images
- Адаптируем слайдер под просмотр на мобильных устройствах
- HTML-макет ChiefSlider
- HTML:
- Шаг 3. CSS для мобильных устройств
- Методы слайдера
- HTML:
- 6. HTML5 Responsive Slider Gallery
- Шаг 5 – Переходы
- Menus
- Menus
- 2. HTML5 Gallery Slideshow
- Simple Sliders
- Slider Card
- CSS Only: Carousel/Slider with Proper Sliding Between Slides
- Parallax Horizontal Image Scroller — No JS
- Checkbox Hack
- CSS Only Slider
- Image Overlay Slider
- Pure CSS Featured Image Slider
- Feature Slider
- Simple Image Slider
- Multi Axis Image Slider
- 3D Cube Slider. Pure CSS
- CSS Image Slider with Next/Prev Buttons
- Manual Slideshow
- Оформляем слайдер и слайды
- Пример 2: Слайдер, стилизованный под рамку картины
Шаг 2 – Основной код CSS
На этом этапе мы создадим основной стиль слайдера. Для этого мы сбросим поля и отступы всех элементов слайдера, дадим им фиксированную ширину / высоту и положение.
.slider-wrapper ul, .slider-wrapper li, .slider-wrapper div, .slider-wrapper img, .slider-wrapper a { margin: 0; padding: 0; border: none; outline: none; list-style: none; } .slider-wrapper { width: 508px; overflow: hidden; } ul.s-thumbs li { float: left; } ul.s-slides, ul.s-slides li, ul.s-slides a, ul.s-slides img { width: 500px; height: 350px; position: relative; } ul.s-slides { overflow: hidden; clear: both; } ul.s-slides li { position: absolute; z-index: 50; }
Images
SlideshowSlideshow GalleryModal ImagesLightboxResponsive Image GridImage GridTab GalleryImage Overlay FadeImage Overlay SlideImage Overlay ZoomImage Overlay TitleImage Overlay IconImage EffectsBlack and White ImageImage TextImage Text BlocksTransparent Image TextFull Page ImageForm on ImageHero ImageBlur Background ImageChange Bg on ScrollSide-by-Side ImagesRounded ImagesAvatar ImagesResponsive ImagesCenter ImagesThumbnailsBorder Around ImageMeet the TeamSticky ImageFlip an ImageShake an ImagePortfolio GalleryPortfolio with FilteringImage ZoomImage Magnifier GlassImage Comparison Slider
Адаптируем слайдер под просмотр на мобильных устройствах
Пока наш слайдер имеет фиксированную ширину в 600 пикселей. Соответственно, на экранах меньше этой ширины начнут возникать проблемы. В частности, появится горизонтальная полоса прокрутки. Чтобы этого избежать, нам совсем чуть-чуть нужно подправить уже написанный код. Вот что нужно изменить:
- Для блока wrap , то есть главного контейнера, задать не width , а max-width: 600px . Это позволит контейнеру сжиматься, если окно становиться меньше по ширине.
- Слайдеру (slider) необходимо прописать width: 100%;
- У слайдов (slides) ничего не изменяем.
Итого все изменения можно увидеть в этом коде:
Wrap{
max-width: 600px;
}
.slider{
width: 100%;
}
Отлично, теперь осталось прописать пару медиа-запросов, чтобы сделать слайдер полностью адаптивным, а также масштабировать изображения под новые экраны. Экспериментальным путем я выяснил, что картинка-слайд начинает не помещаться на экране примерно при ширине окна в 600 пикселей. Значит, примерно на этом участке и нужно сделать изменение стилей. Для этого напишем первый медиа-запрос.
Соответственно, чтобы на ширине 650 пикселей и меньше все отображалось хорошо, я предлагаю такое изменение стилей:
@media screen and (max-width: 650px){
.wrap{
max-width: 480px;
height: 280px;
}
.slides{
background-size: cover;
}
}
Ширина самого слайдера уменьшится, также уменьшится и высота. Для самих слайдов мы прописали свойство, которое масштабирует изображения так, чтобы они сохраняя свои пропорции полностью помещались в слайдер, не обрезаясь при этом.
Отлично, теперь вы можете проверить и убедиться, что при ширине менее 650 пикселей слайдер трансформируется и выглядит хорошо, не обрезая картинку.
Последняя точка — ширина примерно в 400 пикселей. На ней наша картинка опять начинает не помещаться и нужно предпринимать меры. Для этого напишу еще один медиа-запрос:
@media screen and (max-width: 400px){
.wrap{
max-width: 320px;
height: 180px;
}
.slides{
background-size: cover;
}
}
Все то же самое, только вновь уменьшаем ширину и высоту контейнера. Отлично, теперь наш слайдер полностью адаптивный! Даже на мобильном телефоне с шириной 320 пикселей он будет смотреться отлично. Впрочем, смотрите сами:
Благодаря медиа-запросам изображения пропорционально уменьшаются, сохраняя свои пропорции.
HTML-макет ChiefSlider
Основная HTML-структура слайдера выглядит так:
<div class="slider"> <div class="slider__container"> <div class="slider__wrapper"> <div class="slider__items"> <div class="slider__item"> <!-- Контент 1 слайда --> </div> <div class="slider__item"> <!-- Контент 2 слайда --> </div> <div class="slider__item"> <!-- Контент 3 слайда --> </div> </div> </div> </div> <!-- Кнопки для перехода к предыдущему и следующему слайду --> <a href="#" class="slider__control" data-slide="prev"></a> <a href="#" class="slider__control" data-slide="next"></a> </div>
Вставьте внутрь каждого элемента нужное содержимое, например изображение.
HTML:
Для начало нам нужно сделать подходящий HTML файл.
XHTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<!DOCTYPE html> <html lang=»ru»> <head> <meta charset=»UTF-8″> <title>Слайдер</title> <link rel=»stylesheet»href=»style.css»> </head> <div class=»slides»> <img src=»img/portrait-1462944_1280.jpg»class=»block»alt=»»> <img src=»img/bled-1899264_1280.jpg»alt=»»> <img src=»img/cat-1455468_1280.jpg»alt=»»> <img src=»img/woman-1948939_1280.jpg»alt=»»> <img src=»img/france-2773030_1280.jpg»alt=»»> </div> <button class=»btnRight»>Right</button> <script src=»script.js»class=»btnRight»></script> </body> |
Объяснять досконально я не буду, так как, тут всё понятно и вы уже должны знать сам язык HTML, если уже разрабатываете на JavaScript, но скажу, что это контейнер который содержит в себе картинки.
Шаг 3. CSS для мобильных устройств
Мы начнем определять стили для мобильных устройств. Зададим основу дизайна, а затем добавим расширения шаблона для больших экранов. В тексте урока приводятся только основные свойства, полный код можно посмотреть в исходниках:
body { width: 90%; min-width: 300px; max-width: 1200px; margin: 0 auto; padding-top: 1em; color: #504331 } header { text-align: center; position: relative; } h1 { font-size: 2.75em; background: white; display: inline-block; padding: 0 10px; margin-bottom: .25em; } h1:after { content: ""; height: 2px; display: block; position: absolute; left: 0; right: 0; top: .5em; z-index: -1; border-top: 1px solid #504331; border-bottom: 1px solid #504331; } .links { background: url(../images/map.png) bottom center no-repeat; padding-bottom: 177px; }
Методы слайдера
Данный слайдер имеет несколько методов, с помощью которых вы можете им управлять:
- — перейти к следующему слайду;
- — перейти к предыдущему слайду;
- — включение и выключение автоматической смены слайдов;
Чтобы эти методы были доступны нужно при инициализации слайдера сохранить ссылку на созданный экземпляр объекта в некоторую переменную:
const slider = new SimpleAdaptiveSlider('.slider', { loop: false, });
Пример использования методов:
slider.next(); // переход к следующему слайду slider.prev(); // переход к предыдущему слайду slider.autoplay(); // включить автоматическую смену слайдов slider.autoplay('stop'); // выключить автоматическую смену слайдов
Пример с использованием методов слайдера
Например, создадим слайдер, в котором будем использовать свои кнопки для перехода к предыдущему и следующему слайду. Исходные кнопки удалим из разметки.
<!-- Разметка слайдера --> <div class="slider"> <div class="slider__wrapper"> <div class="slider__items">...</div> </div> </div> <!-- Новые кнопки --> <div class="btn-wrapper"> <button class="btn btn-prev">PREV</button> <button class="btn btn-next">NEXT</button> </div>
Для отключения индикаторов добавим в CSS:
.slider__indicators { display: none; }
Напишем, скрипт, который будет при нажатии на кнопки выполнять переход на предыдущий или следующий item:
document.addEventListener('DOMContentLoaded', function () { // инициализация слайдера var slider = new SimpleAdaptiveSlider('.slider'); // назначим обработчик при нажатии на кнопку .btn-prev document.querySelector('.btn-prev').onclick = function () { // перейдём к предыдущему слайду slider.prev(); } // назначим обработчик при нажатии на кнопку .btn-next document.querySelector('.btn-next').onclick = function () { // перейдём к следующему слайду slider.next(); } });
HTML:
<div class=»blog-slider_wrapper»>
<div class=»blog-slider»>
<div class=»blog-slider__wrp swiper-wrapper»>
<!— Карточка —>
<div class=»blog-slider__item swiper-slide»>
<div class=»blog-slider__img»>
<img src=»https://atuin.ru/demo/640k/cd-cover-2.jpg» alt=»»>
</div>
<div class=»blog-slider__content»>
<span class=»blog-slider__date»>Дата</span>
<div class=»blog-slider__title»>Заголовок новости</div>
<p>Текст новости</p>
<div class=»blog-slider__button-wrapper»>
<a href=»#» class=»blog-slider__button»>Читать далее</a>
</div>
</div>
</div>
<!— Еще карточки —>
</div>
<div class=»blog-slider__pagination»></div>
</div>
</div>
1 |
<div class=»blog-slider_wrapper»> <div class=»blog-slider»> <div class=»blog-slider__wrp swiper-wrapper»> <!— Карточка —> <div class=»blog-slider__item swiper-slide»> <div class=»blog-slider__img»> <img src=»https://atuin.ru/demo/640k/cd-cover-2.jpg»alt=»»> </div> <div class=»blog-slider__content»> <span class=»blog-slider__date»>Дата</span> <div class=»blog-slider__title»>Заголовок новости</div> <p>Текст новости</p> <div class=»blog-slider__button-wrapper»> <a href=»#»class=»blog-slider__button»>Читать далее</a> </div> </div> </div> <!— Еще карточки —> </div> <div class=»blog-slider__pagination»></div> </div> </div> |
6. HTML5 Responsive Slider Gallery
HTML5 Responsive Slider Gallery — замечательный инструмент для владельцев сайтов с богатым визуальным контентом, желающих продемонстрировать качество своих изображений.
Чтобы понять, почему HTML5 Responsive Slider Gallery является бестселлером на CodeCanyon, достаточно нажать предварительный просмотр плагина.
Галерея адаптируется одновременно по широте и высоте родительского контейнера в любом месте шаблона. Для максимальной производительности на вашем десктопе и на мобильных устройствах он использует графический процессор, предоставляет три разных стиля, поддерживает несколько галерей на одной и той же странице и является сверх гибким.
Шаг 5 – Переходы
Сейчас мы начинаем создавать переходы слайдера. Что бы создать разнообразные переходы для каждого изображения, мы добавим разные классы ко всем изображениям.
HTML
<ul class="s-slides"> <li id="slide-1" class="slideLeft"><img src="img/slide1.png" alt="" /></li> <li id="slide-2" class="slideRight"><img src="img/slide2.png" alt="" /></li> <li id="slide-3" class="slideTop"><img src="img/slide3.png" alt="" /></li> <li id="slide-4" class="slideBottom"><img src="img/slide4.png" alt="" /></li> <li id="slide-5" class="zoomIn"><img src="img/slide5.png" alt="" /></li> <li id="slide-6" class="zoomOut"><img src="img/slide6.png" alt="" /></li> <li id="slide-7" class="rotate"><img src="img/slide7.png" alt="" /></li> </ul>
CSS
Для создания переходов мы будем использовать @keyframes. Анимация создается припомощи постепенного изменения от одного набора стилей CSS к другому. Чтобы указать, когда анимация начнется, изменится и завершится, мы будем использовать проценты, тое-есть 0% – начало анимации и 100% – когда анимация завершена. Давайте начнем создавать эту анимацию ..
Сдвиг изображения слева
В начале анимации, изображение будет позиционированно с отрицательным значением (слева 500px), когда анимация завершается, изображение будет позиционироваться 0px слева. Установив длительность анимации до 1 секунды мы получим слайд эффект слева на право.
/* Slide Left */ @-webkit-keyframes 'slideLeft' { 0% { left: -500px; } 100% { left: 0; } } ul.s-slides li.slideLeft:target { z-index: 100; -webkit-animation-name: slideLeft; -webkit-animation-duration: 1s; -webkit-animation-iteration-count: 1; }
Сдвиг изображения справа
/* Slide Right */ @-webkit-keyframes 'slideRight' { 0% { left: 500px; } 100% { left: 0; } } ul.s-slides li.slideRight:target { z-index: 100; -webkit-animation-name: slideRight; -webkit-animation-duration: 1s; -webkit-animation-iteration-count: 1; }
Сдвиг изображения сверху
/* Slide Top */ @-webkit-keyframes 'slideTop' { 0% { top: -350px; } 100% { top: 0; } } ul.s-slides li.slideTop:target { z-index: 100; -webkit-animation-name: slideTop; -webkit-animation-duration: 1s; -webkit-animation-iteration-count: 1; }
Сдвиг изображения снизу
/* Slide Bottom */ @-webkit-keyframes 'slideBottom' { 0% { top: 350px; } 100% { top: 0; } } ul.s-slides li.slideBottom:target { z-index: 100; -webkit-animation-name: slideBottom; -webkit-animation-duration: 1s; -webkit-animation-iteration-count: 1; }
Внутреннее увеличение изображение
Для создания зумирующего перехода, мыбудем использовать трансформирующие свойства CSS3. В начале анимации изображение будет иметь размер в 10% и к окончанию вернётся к своему оригинальному размеру. Мы поместим его с отступом в 4px сверху, чтобы исправить пробел, который появляется в нижней части.
/* Zoom In */ @-webkit-keyframes 'zoomIn' { 0% { -webkit-transform: scale(0.1); } 100% { -webkit-transform: none; } } ul.s-slides li.zoomIn:target { z-index: 100; top: 4px; -webkit-animation-name: zoomIn; -webkit-animation-duration: 1s; -webkit-animation-iteration-count: 1; }
Вращение и увеличение изображение
/* Rotate */ @-webkit-keyframes 'rotate' { 0% { -webkit-transform: rotate(-360deg) scale(0.1); } 100% { -webkit-transform: none; } } ul.s-slides li.rotate:target { z-index: 100; top: 4px; -webkit-animation-name: rotate; -webkit-animation-duration: 1s; -webkit-animation-iteration-count: 1; }
Внешнее увеличение изображение
/* Zoom Out */ @-webkit-keyframes 'zoomOut' { 0% { -webkit-transform: scale(2); } 100% { -webkit-transform: none; } } ul.s-slides li.zoomOut:target { z-index: 100; -webkit-animation-name: zoomOut; -webkit-animation-duration: 1s; -webkit-animation-iteration-count: 1; }
Menus
Icon BarMenu IconAccordionTabsVertical TabsTab HeadersFull Page TabsHover TabsTop NavigationResponsive TopnavNavbar with IconsSearch MenuSearch BarFixed SidebarSide NavigationResponsive SidebarFullscreen NavigationOff-Canvas MenuHover Sidenav ButtonsSidebar with IconsHorizontal Scroll MenuVertical MenuBottom NavigationResponsive Bottom NavBottom Border Nav LinksRight Aligned Menu LinksCentered Menu LinkEqual Width Menu LinksFixed MenuSlide Down Bar on ScrollHide Navbar on ScrollShrink Navbar on ScrollSticky NavbarNavbar on ImageHover DropdownsClick DropdownsCascading DropdownDropdown in TopnavDropdown in SidenavResp Navbar DropdownSubnavigation MenuDropupMega MenuMobile MenuCurtain MenuCollapsed SidebarCollapsed SidepanelPaginationBreadcrumbsButton GroupVertical Button GroupSticky Social BarPill NavigationResponsive Header
Menus
Icon BarMenu IconAccordionTabsVertical TabsTab HeadersFull Page TabsHover TabsTop NavigationResponsive TopnavNavbar with IconsSearch MenuSearch BarFixed SidebarSide NavigationResponsive SidebarFullscreen NavigationOff-Canvas MenuHover Sidenav ButtonsSidebar with IconsHorizontal Scroll MenuVertical MenuBottom NavigationResponsive Bottom NavBottom Border Nav LinksRight Aligned Menu LinksCentered Menu LinkEqual Width Menu LinksFixed MenuSlide Down Bar on ScrollHide Navbar on ScrollShrink Navbar on ScrollSticky NavbarNavbar on ImageHover DropdownsClick DropdownsCascading DropdownDropdown in TopnavDropdown in SidenavResp Navbar DropdownSubnavigation MenuDropupMega MenuMobile MenuCurtain MenuCollapsed SidebarCollapsed SidepanelPaginationBreadcrumbsButton GroupVertical Button GroupSticky Social BarPill NavigationResponsive Header
2. HTML5 Gallery Slideshow
HTML5 Gallery Slideshow — отличный выбор для демонстрации изображений и текста в виде слайдера. Главным преимуществом продаж карусели является ее невероятная простота в использовании. После внедрения в необходимое место, она адаптируется по размеру родительского контейнера, то есть к тегу div или другому тегу HTML.
Еще одна замечательная особенность заключается в возможности расположения нескольких галерей с разным набором изображений и настроек на одной и той же странице.
Плагин легко настраивается. Вы можете поменять цветовую гамму, изменить кнопки и другие элементы, а потом интегрировать в свой сайт. Слайдер оптимизирован для бесперебойной работы на мобильных устройствах.
Simple Sliders
- Batuhan Baş
- June 14, 2020
About a code
Slider Card
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Responsive: no
Dependencies: —
- Abubaker Saeed
- May 22, 2020
About a code
CSS Only: Carousel/Slider with Proper Sliding Between Slides
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Responsive: no
Dependencies: —
- TharenaMelishka
- March 13, 2020
About a code
Parallax Horizontal Image Scroller — No JS
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Responsive: no
Dependencies: —
- ycw
- December 9, 2019
HTML (Pug) / CSS (Less)
About a code
Checkbox Hack
No checkbox at all. But classic plus combo.
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Responsive: no
Dependencies: —
- Steffen
- July 18, 2019
About a code
CSS Only Slider
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Responsive: no
Dependencies: —
Demo Image: Image Overlay Slider
Image Overlay Slider
Image overlay slider with HTML, CSS and vanilla JavaScript.
Made by Yugam
June 7, 2017
download
demo and code
Demo Image: Pure CSS Featured Image Slider
Pure CSS Featured Image Slider
HTML and CSS featured image slider.
Made by Joshua Hibbert
June 16, 2016
download
demo and code
- MAHESH AMBURE
- March 9, 2016
About the code
Simple pure CSS slider made with
Demo Image: Feature Slider
Feature Slider
Feature slider with HTML, CSS and JavaScript.
Made by Andy Lorimer
October 23, 2015
download
demo and code
Demo Image: Animated Cube Slider
CSS only.
Made by Alberto Hartzet
May 6, 2015
download
demo and code
Demo Image: Simple Image Slider
Simple Image Slider
Features: — automatic slideshow — pause on hover — dynamic slide counter — show/hide controls on hover.
Made by André Cortellini
August 14, 2014
download
demo and code
Demo Image: Multi Axis Image Slider
Multi Axis Image Slider
Multi axis image slider with HTML, CSS and JavaScript.
Made by Burak Can
July 22, 2013
download
demo and code
Demo Image: 3D Cube Slider. Pure CSS
3D Cube Slider. Pure CSS
Cube slider, a small experiment with HTML5/CSS3 3d transforms.
Made by Ilya K.
June 26, 2013
download
demo and code
About a code
CSS Image Slider with Next/Prev Buttons
A 100% pure CSS image slider with previous/next buttons and image transitions.
Compatible browsers: Chrome, Edge, Firefox, Opera, Safari
Responsive: no
Dependencies: —
Manual Slideshow
Displaying a manual slideshow with W3.CSS is very easy.
Just create many elements with the same class name:
Example
<img class=»mySlides» src=»img_snowtops.jpg»><img class=»mySlides» src=»img_lights.jpg»>
<img class=»mySlides» src=»img_mountains.jpg»><img class=»mySlides» src=»img_forest.jpg»>
And two buttons to scroll the images:
Example
<button class=»w3-button w3-display-left» onclick=»plusDivs(-1)»>❮</button><button class=»w3-button w3-display-right» onclick=»plusDivs(+1)»>❯</button>
And add a JavaScript to select images:
Example
var slideIndex = 1;showDivs(slideIndex);function plusDivs(n) { showDivs(slideIndex
+= n);}function showDivs(n) {
var i; var x = document.getElementsByClassName(«mySlides»); if
(n > x.length) {slideIndex = 1} if (n < 1) {slideIndex =
x.length} ; for (i = 0; i < x.length; i++) { x.style.display = «none»;
}
x.style.display = «block»; }
JavaScript Explained
First, set the slideIndex to 1. (First picture)
Then call showDivs() to display the first image.
When the user clicks one of the buttons call plusDivs().
The plusDivs() function subtracts one or adds
one to the slideIndex.
The showDiv() function hides (display=»none»)
all elements with the class name «mySlides», and displays (display=»block»)
the element with the given slideIndex.
If the slideIndex is higher than the number of elements (x.length),
the slideIndex is set to zero.
If the slideIndex is less than 1 it is set to number of elements
(x.length).
Оформляем слайдер и слайды
Вначале вот такие стили:
Slider {
background-color: #999;
height: inherit;
overflow: hidden;
position: relative;
width: inherit;
}
Укажем слайдеру такие же ширину и высоту, как и общему контейнеру. Также указываем цвет и позиционирование, а свойство overflow: hidden обрезает все, что не попадает в блок.
Следующим делом нужно оформить сами слайды:
Slides {
height: inherit;
opacity: 0;
position: absolute;
width: inherit;
z-index: 0;
}
.auto1 { background-image: url(bmw.jpg); }
.auto2 { background-image: url(audi.jpg); }
.auto3 { background-image: url(porshe.jpg); }
Также указываем ширину и высоту как и у слайда. Значение inherit позволяет наследовать значение родительского блока. С помощью свойств z-index и opacity мы сделаем наши картинки невидимыми. Ниже мы четко прописываем фоновые изображения.
Пока что мы ничего не увидим, только серый фон, потому что наши изображения скрыты.
Пример 2: Слайдер, стилизованный под рамку картины
Рекомендуемый размер изображений 400x300px. Слайдер отображается ровно по центру страницы. Адаптива под мобильные устрайства — нет.
Если вы новичок в веб, то корректно установить данный слайдер себе на сайт будет проблематично из-за абсолютного позиционирования. Используются тени (box-shadow). Есть возможность самостоятельно скроллить фото.
Radio кнопки для прокрутки изображений появляются при наведении мышки.
Скачать пример 2
CSS оформление
.slider_picture{background-color:#fff;box-shadow:inset 0 0 2px hsla(0,0%,0%,.2),0 3px 1px hsla(0,0%,100%,.75),0 -1px 1px 2px hsla(0,0%,0%,.1);height:18.75em;left:50%;margin:-9.875em -13em;padding:.5em;position:absolute;top:50%;width:25em} .slider_picture:before{background-color:#22130c;bottom:-2.5em;box-shadow:inset 0 1px 1px 1px hsla(0,0%,100%,.2),inset 0 -2px 1px hsla(0,0%,0%,.4),0 5px 50px hsla(0,0%,0%,.25),0 20px 20px -15px hsla(0,0%,0%,.2),0 30px 20px -15px hsla(0,0%,0%,.15),0 40px 20px -15px hsla(0,0%,0%,.1);content:'';left:-2.5em;position:absolute;right:-2.5em;top:-2.5em;z-index:-1} .slider_picture:after{background-color:#fff5e5;bottom:-1.5em;box-shadow:0 2px 1px hsla(0,0%,100%,.2),0 -1px 1px 1px hsla(0,0%,0%,.4),inset 0 2px 3px 1px hsla(0,0%,0%,.2),inset 0 4px 3px 1px hsla(0,0%,0%,.2),inset 0 6px 3px 1px hsla(0,0%,0%,.1);content:'';left:-1.5em;position:absolute;right:-1.5em;top:-1.5em;z-index:-1} .slider_picture li{box-shadow:0 -1px 0 2px hsla(0,0%,0%,.03);list-style:none;position:absolute} .slider_picture input{display:none} .slider_picture label{background-color:#111;background-image:linear-gradient(transparent,hsla(0,0%,0%,.25));border:.2em solid transparent;bottom:.5em;border-radius:100%;cursor:pointer;display:block;height:.5em;left:24em;opacity:0;position:absolute;transition:.25s;width:.5em;visibility:hidden;z-index:10} .slider_picture label:after{border-radius:100%;bottom:-.2em;box-shadow:inset 0 0 0 .2em #111,inset 0 2px 2px #000,0 1px 1px hsla(0,0%,100%,.25);content:'';left:-.2em;position:absolute;right:-.2em;top:-.2em} .slider_picture:hover label{opacity:1;visibility:visible} .slider_picture input:checked + label{background-color:#fff} .slider_picture:hover li:nth-child(1) label{left:.5em} .slider_picture:hover li:nth-child(2) label{left:2em} .slider_picture:hover li:nth-child(3) label{left:3.5em} .slider_picture:hover li:nth-child(4) label{left:5em} .slider_picture img{height:18.75em;opacity:0;transition:.25s;width:25em;vertical-align:top;visibility:hidden} .slider_picture li input:checked ~ img{opacity:1;visibility:visible;z-index:10}