Скользящие панели изображений на 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
Новые статьи и публикации
- 2025-12-02 » Когда ошибка молчит: как бессмысленные сообщения ломают пользовательский опыт
- 2025-12-02 » 9 лучших бесплатных фотостоков
- 2025-12-02 » UTM-метки: ключевой инструмент аналитики для маркетолога
- 2025-12-02 » ПромоСтраницы Яндекса: Что такое и для чего служит
- 2025-12-02 » Метатеги для сайта: исчерпывающее руководство по Title, Description, Canonical, Robots и другим тегам
- 2025-11-26 » Оценка эффективности контента: превращаем информационный балласт в рабочий актив
- 2025-11-26 » 10 причин высокого показателя отказов на сайте
- 2025-11-26 » Когда и зачем обновлять структуру сайта
- 2025-11-26 » Скрытые демотиваторы: как мелочи разрушают эффективность команды
- 2025-11-26 » Зачем запускать MVP и как сделать это грамотно?
- 2025-11-20 » Половина российских компаний сократит расходы на транспорт и маркетинг в 2026 году
- 2025-11-20 » Перенос сайта с большим количеством ссылок
- 2025-11-20 » Перелинковка сайта: Что такое и как ее использовать
- 2025-11-20 » Критерии выбора SEO-специалиста и подрядчика для продвижения сайта
- 2025-11-20 » Применение искусственного интеллекта в рекламных агентствах: комплексное исследование трендов 2025 года
- 2025-11-19 » Геозапросы по-новому: как покорить локальное SEO с помощью ИИ
- 2025-11-14 » Консалтинг: сущность и ключевые направления
- 2025-11-14 » Онлайн-формы: универсальный инструмент для сбора обратной связи
- 2025-11-14 » Факторы конверсии органического трафика
- 2025-11-14 » Планирование рекламного бюджета: самостоятельный подход
- 2025-11-14 » Авторизация на сайте: как выбрать решение для удержания клиентов и сохранения продаж
- 2025-11-13 » Эффективные методы стимулирования клиентов к оставлению положительных отзывов
- 2025-11-13 » Налоговая реформа — 2026: грядущие изменения для предпринимателей
- 2025-11-13 » Альтернативы мессенджерам: что выбрать вместо Telegram и WhatsApp
- 2025-11-13 » Маркировка рекламы для начинающих: полное руководство по требованиям ЕРИР
- 2025-11-13 » ИИ не отберет вашу работу — её займет специалист, владеющий искусственным интеллектом
- 2025-10-29 » Как оценить эффективность работы SEO-специалиста: практическое руководство для маркетологов и владельцев бизнеса
- 2025-10-29 » Киберспорт как маркетинговый инструмент: стратегии привлечения геймеров
- 2025-10-29 » Как говорить с аудиторией о сложном
- 2025-10-29 » Что такое доказательства с нулевым разглашением (ZKP) и их роль в блокчейне
"В будущем на рынке останется два вида компаний: те, кто в Интернет и те, кто вышел из бизнеса." |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.


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