Скользящие панели изображений на CSS3
В данном уроке мы разберемся задачей создания прелестных скользящих панелей с изображениями. Будет использоваться только CSS. Идей заключается в применении фоновых изображений для панелей и анимации при нажатии на метку. В качестве меток будут использоваться радио кнопки.
Примечание: результат нашего урока будет работать в браузерах, которые поддерживают трансформации и анимации CSS.
Разметка HTML
Код HTML состоит из трех основных частей: радио кнопки и метки, контейнер с панелями и "срезами" для каждого изображения, и заголовки. Контейнер с классом cr-bgimg имеет раздел для каждой панели, в котором размещаются элементы span для каждого изображения с правильным положением фона:
<section class="cr-container">
<!-- Радио кнопки и метки -->
<input id="select-img-1" name="radio-set-1" type="radio" class="cr-selector-img-1" checked/>
<label for="select-img-1" class="cr-label-img-1">1</label>
<input id="select-img-2" name="radio-set-1" type="radio" class="cr-selector-img-2" />
<label for="select-img-2" class="cr-label-img-2">2</label>
<input id="select-img-3" name="radio-set-1" type="radio" class="cr-selector-img-3" />
<label for="select-img-3" class="cr-label-img-3">3</label>
<input id="select-img-4" name="radio-set-1" type="radio" class="cr-selector-img-4" />
<label for="select-img-4" class="cr-label-img-4">4</label>
<div class="clr"></div>
<!-- Панели -->
<div class="cr-bgimg">
<div>
<span>Срез 1 - Изображение 1</span>
<span>Срез 1 - Изображение 2</span>
<span>Срез 1 - Изображение 3</span>
<span>Срез 1 - Изображение 4</span>
</div>
<div>
<span>Срез 2 - Изображение 1</span>
<span>Срез 2 - Изображение 2</span>
<span>Срез 2 - Изображение 3</span>
<span>Срез 2 - Изображение 4</span>
</div>
<div>
<span>Срез 3 - Изображение 1</span>
<span>Срез 3 - Изображение 2</span>
<span>Срез 3 - Изображение 3</span>
<span>Срез 3 - Изображение 4</span>
</div>
<div>
<span>Срез 4 - Изображение 1</span>
<span>Срез 4 - Изображение 2</span>
<span>Срез 4 - Изображение 3</span>
<span>Срез 4 - Изображение 4</span>
</div>
</div>
<!-- Заголовки -->
<div class="cr-titles">
<h3><span>Прозорливость</span><span>То, о чем вы мечтали</span></h3>
<h3><span>Приключение</span><span>Там, где все начинается</span></h3>
<h3><span>Естество</span><span>Незабываемые впечатления</span></h3>
<h3><span>Безмятежность</span><span>Когда тишина начинает звучать</span></h3>
</div>
</section>
</div>
Элементы h3 для заголовков имеют два элемента span: один для основного заголовка, другой - подзаголовка.
CSS
Примечание: в коде CSS опущены префиксы производителей браузеров для большей наглядности.
Задача состоит в том, чтобы скрыть радио кнопки, покрыв из метками. В веб браузере нажатие на метке изменяет состояние соответствующей кнопки. Определив ID для кнопки мы можем использовать атрибут for = idref метки для того, чтобы установить соответствие кнопке.
Затем нужно разместить все фоновые изображения в правильном порядке и выводить соответствующие "срезы" картинки при нажатии на метку.
Сначала определим стили для секции и задаим для нее белую рамку с легкой тенью:
.cr-container{
width: 600px;
height: 400px;
position: relative;
margin: 0 auto;
border: 20px solid #fff;
box-shadow: 1px 1px 3px rgba(0,0,0,0.1);
}
Так как мы будем использовать общий соседний селектор для того, чтобы получить нужный "срез" изображения и заголовок, нужно разместить метки перед контейнерами. Выдвинем их в верхний слой (z-index) и опустим вниз с помощью значения поля равного 350px:
.cr-container label{
font-style: italic;
width: 150px;
height: 30px;
cursor: pointer;
color: #fff;
line-height: 32px;
font-size: 24px;
float:left;
position: relative;
margin-top: 350px;
z-index: 1000;
}
Улучим внешний вид добавив небольшой круг. Используем псевдо-элемент располженный по центру позади текста метки:
.cr-container label:before{
content:'';
width: 34px;
height: 34px;
background: rgba(130,195,217,0.9);
position: absolute;
left: 50%;
margin-left: -17px;
border-radius: 50%;
box-shadow: 0px 0px 0px 4px rgba(255,255,255,0.3);
z-index:-1;
}
Для того, чтобы создать разделитель между панелями, используем небольшой трюк. Создадим еще один псевдо-элемент для метки и растянем его поверх панели. С помощью градиента сделаем линию "пропадающей" к верху:
.cr-container label:after{
width: 1px;
height: 400px;
content: '';
background: linear-gradient(top, rgba(255,255,255,0) 0%,rgba(255,255,255,1) 100%);
position: absolute;
bottom: -20px;
right: 0px;
}
Последняя панель не должна иметь разделителя, поэтому установим ширину равной 0:
.cr-container label.cr-label-img-4:after{
width: 0px;
}
Теперь скроем кнопки:
.cr-container input{
display: none;
}
При нажатии кнопки мыши на метке будет отмечаться соответствующая кнопка. Теперь мы можем указать соответствующие метки с помощь общего соседнего селектора. Также будем изменять цвет "выбранной" метки:
.cr-container input.cr-selector-img-1:checked ~ label.cr-label-img-1,
.cr-container input.cr-selector-img-2:checked ~ label.cr-label-img-2,
.cr-container input.cr-selector-img-3:checked ~ label.cr-label-img-3,
.cr-container input.cr-selector-img-4:checked ~ label.cr-label-img-4{
color: #68abc2;
}
Также будет изменяться цвет фона и тени круглого псевдо-элемента:
.cr-container input.cr-selector-img-1:checked ~ label.cr-label-img-1:before,
.cr-container input.cr-selector-img-2:checked ~ label.cr-label-img-2:before,
.cr-container input.cr-selector-img-3:checked ~ label.cr-label-img-3:before,
.cr-container input.cr-selector-img-4:checked ~ label.cr-label-img-4:before{
background: #fff;
box-shadow: 0px 0px 0px 4px rgba(104,171,194,0.6);
}
Контейнер для панелей изображений будет занимать всю ширину и позиционируется абсолютно. Данный контейнер используется позже, чтобы установить фоновое изображение соответствующее выбранной картинке:
.cr-bgimg{
width: 600px;
height: 400px;
position: absolute;
left: 0px;
top: 0px;
z-index: 1;
background-repeat: no-repeat;
background-position: 0 0;
}
Так как мы имеем четыре панели, то ширина каждой будет равна 150 px (600 разделить на 4). Панели будут выравниваться влево, и мы будем скрывать их при выходе за границы элемента:
.cr-bgimg div{
width: 150px;
height: 100%;
position: relative;
float: left;
overflow: hidden;
background-repeat: no-repeat;
}
Каждый элемент span "среза" будет позиционироваться абсолютно. В начале мы будем скрывать их размещая за пределами элемента:
.cr-bgimg div span{
position: absolute;
width: 100%;
height: 100%;
top: 0px;
left: -150px;
z-index: 2;
text-indent: -9000px;
}
Теперь разберемся с фоном контейнера изображения и соответствующими "срезами":
.cr-container input.cr-selector-img-1:checked ~ .cr-bgimg,
.cr-bgimg div span:nth-child(1){
background-image: url(../images/1.jpg);
}
.cr-container input.cr-selector-img-2:checked ~ .cr-bgimg,
.cr-bgimg div span:nth-child(2){
background-image: url(../images/2.jpg);
}
.cr-container input.cr-selector-img-3:checked ~ .cr-bgimg,
.cr-bgimg div span:nth-child(3){
background-image: url(../images/3.jpg);
}
.cr-container input.cr-selector-img-4:checked ~ .cr-bgimg,
.cr-bgimg div span:nth-child(4){
background-image: url(../images/4.jpg);
}
Также нужно задать положение фона в зависимости от панели:
.cr-bgimg div:nth-child(1) span{
background-position: 0px 0px;
}
.cr-bgimg div:nth-child(2) span{
background-position: -150px 0px;
}
.cr-bgimg div:nth-child(3) span{
background-position: -300px 0px;
}
.cr-bgimg div:nth-child(4) span{
background-position: -450px 0px;
}
Когда мы нажимаем на метку, все "срезы" просто смещаются вправо:
.cr-container input:checked ~ .cr-bgimg div span{
animation: slideOut 0.6s ease-in-out;
}
@keyframes slideOut{
0%{
left: 0px;
}
100%{
left: 150px;
}
}
"Срезы" соответствующего фона смещаются с -150px до 0px:
.cr-container input.cr-selector-img-1:checked ~ .cr-bgimg div span:nth-child(1),
.cr-container input.cr-selector-img-2:checked ~ .cr-bgimg div span:nth-child(2),
.cr-container input.cr-selector-img-3:checked ~ .cr-bgimg div span:nth-child(3),
.cr-container input.cr-selector-img-4:checked ~ .cr-bgimg div span:nth-child(4)
{
transition: left 0.5s ease-in-out;
animation: none;
left: 0px;
z-index: 10;
}
Теперь определим стили для элементов h3 заголовка и его span . Заголовок h3 будет иметь трансформацию прозрачности, которая изменяется при выборе соответствующей метки:
.cr-titles h3{
position: absolute;
width: 100%;
text-align: center;
top: 50%;
z-index: 10000;
opacity: 0;
color: #fff;
text-shadow: 1px 1px 1px rgba(0,0,0,0.1);
transition: opacity 0.8s ease-in-out;
}
.cr-titles h3 span:nth-child(1){
font-family: 'BebasNeueRegular', 'Arial Narrow', Arial, sans-serif;
font-size: 70px;
display: block;
letter-spacing: 7px;
}
.cr-titles h3 span:nth-child(2){
letter-spacing: 0px;
display: block;
background: rgba(104,171,194,0.9);
font-size: 14px;
padding: 10px;
font-style: italic;
font-family: Cambria, Palatino, "Palatino Linotype", "Palatino LT STD", Georgia, serif;
}
.cr-container input.cr-selector-img-1:checked ~ .cr-titles h3:nth-child(1),
.cr-container input.cr-selector-img-2:checked ~ .cr-titles h3:nth-child(2),
.cr-container input.cr-selector-img-3:checked ~ .cr-titles h3:nth-child(3),
.cr-container input.cr-selector-img-4:checked ~ .cr-titles h3:nth-child(4){
opacity: 1;
}
Если не нужно использовать трюк с метками на мобильных устройствах, то можно использовать медиа запрос:
@media screen and (max-width: 768px) {
.cr-container input{
display: inline;
width: 24%;
margin-top: 350px;
z-index: 1000;
position: relative;
}
.cr-container label{
display: none;
}
}
Готово!
В качестве анимации можно использовать различные варианты. Смотрите демонстрацию.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/ZdbHgvN_WWs/lessons.php
|
В данном уроке мы разберемся задачей создания прелестных скользящих панелей с изображениями. Будет использоваться только CSS. Идей заключается в применении фоновых изображений для панелей и анимации |
РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2026-04-17 » Дырявая воронка продаж: где вы теряете клиентов и как это лечит CRM
- 2026-04-17 » ИИ‑контент против человека: как найти золотую середину
- 2026-04-17 » Сайты 2026–2027: почему побеждают простые и быстрые
- 2026-04-17 » Формы сбора согласий на сайте
- 2026-04-17 » Безопасность сайта для малого бизнеса: что нужно знать, чтобы не взломали и не оштрафовали
- 2026-04-16 » Парадокс выбора: почему изобилие вариантов вредит вашей прибыли
- 2026-04-16 » Когнитивная перегрузка vs. UX: почему ваш сайт утомляет мозг пользователя
- 2026-04-16 » Эра Zero-Click: как генеративная выдача изменила путь клиента
- 2026-04-16 » Как адаптировать тексты на сайте под голосовой поиск
- 2026-04-16 » Почему ваш сайт тормозит — и вы теряете клиентов
- 2026-04-08 » Микрофронтенды — максимально простое объяснение
- 2026-04-08 » Чат-боты или живые менеджеры: что выбрать для эффективного продвижения в 2026 году?
- 2026-04-08 » Почему ваш сайт не видно в поисковой выдаче?
- 2026-04-08 » Персонализация в маркетинге: 7 примеров, которые работают
- 2026-04-08 » Как автоматизация маркетинга и продаж помогает компаниям расти быстрее и без хаоса
- 2026-04-01 » Как не переплатить за разработку: скрытые этапы создания сайта, о которых забывают при составлении ТЗ
- 2026-04-01 » Почему не стоит делать сайт «как у конкурента»
- 2026-04-01 » SSL сертификат для интернет‑магазина: почему экономия здесь обходится дороже
- 2026-04-01 » SEO, GEO и бренд: как строить видимость в 2026 году
- 2026-04-01 » Объективные метрики здоровья сайта, которые должен отслеживать каждый бизнес
- 2026-03-27 » Кибербезопасность для малого и среднего бизнеса в 2026 году: как не стать жертвой цифровых угроз
- 2026-03-27 » Объединяем CRM и маркетинговую автоматизацию: как создать единую систему продаж
- 2026-03-27 » Дизайн не главное? Почему сайт теряет клиентов, даже если вы уверены в обратном
- 2026-03-27 » SEO умерло — да здравствует SEO! Как нейросети перестроили поиск
- 2026-03-27 » Почему сайт работает медленно: проблема может быть не в хостинге, а в нагрузке
- 2026-03-13 » Причины, почему вашего сайта нет в поиске и как это исправить
- 2026-03-13 » Как интернет-магазину расти в тени маркетплейсов
- 2026-03-13 » Почему скорость загрузки сайта — это вопрос выживания в 2026 году
- 2026-03-13 » Ошибки навигации в интернет-магазине, которые убивают продажи
- 2026-03-13 » 12 признаков, что ваш сайт безнадежно устарел (и как это проверить)
Всегда храни верность своему начальнику - следующий, может быть еще хуже... |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.

Мы создаем практически любые сайты от продающих страниц до сложных, высоконагруженных и нестандартных веб приложений! Наши сайты это надежные маркетинговые инструменты для успеха Вашего бизнеса и увеличения вашей прибыли! Мы делаем красивые и максимально эффектные сайты по доступным ценам уже много лет!
Комплексный подход это не просто продвижение сайта, это целый комплекс мероприятий, который определяется целями и задачами поставленными перед сайтом и организацией, которая за этим стоит. Время однобоких методов в продвижении сайтов уже прошло, конкуренция слишком высока, чтобы была возможность расслабиться и получать \ удерживать клиентов из Интернета, просто сделав сайт и не занимаясь им...
Мы оказываем полный комплекс услуг по сопровождению сайта: информационному и техническому обслуживанию и развитию Интернет сайтов.
Контекстная реклама - это эффективный инструмент в интернет маркетинге, целью которого является увеличение продаж. Главный плюс контекстной рекламы заключается в том, что она работает избирательно.