Создание слайдера - это отличный способ сделать сайт более динамичным. Как правило, слайдеры создают при помощи jQuery или какой-либо другой JavaScript-библиотеки. Тем не менее, с появлением CSS3, я покажу вам как создать его используя только CSS.
<div id="content-slider">
<div id="content">
<div id="content-inner-1">
<div id="content-inner-2">
<div id="content-inner-3">
<div id="content-inner-4">
<div id="content-inner-5">
<div id="content-inner-6">
<div id="content-inner">
<div class="slide">
<img src="i/test1.jpg" alt="slide1">
<div class="slide-info">
<h2>Страница 1</h2>
<p>Lorem ipsum dolor sit amet, consectur whatever blah</p>
</div>
</div>
<div class="slide">
<img src="i/test2.jpg" alt="slide2">
<div class="slide-info">
<h2>Страница 2</h2>
<p>Lorem ipsum dolor sit amet, consectur whatever blah</p>
</div>
</div>
<div class="slide">
<img src="i/test3.jpg" alt="slide3">
<div class="slide-info">
<h2>Страница 3</h2>
<p>Lorem ipsum dolor sit amet, consectur whatever blah</p>
</div>
</div>
<div class="slide">
<img src="i/test4.jpg" alt="slide4">
<div class="slide-info">
<h2>Страница 4</h2>
<p>Lorem ipsum dolor sit amet, consectur whatever blah</p>
</div>
</div>
<div class="slide">
<img src="i/test5.jpg" alt="slide5">
<div class="slide-info">
<h2>Страница 5</h2>
<p>Lorem ipsum dolor sit amet, consectur whatever blah</p>
</div>
</div>
<div class="slide">
<img src="i/test6.jpg" alt="slide6">
<div class="slide-info">
<h2>Страница 6</h2>
<p>Lorem ipsum dolor sit amet, consectur whatever blah</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<ul id="nav" class="list-unstyled">
<li>
<a href="#content-inner-1"></a>
</li>
<li>
<a href="#content-inner-2"></a>
</li>
<li>
<a href="#content-inner-3"></a>
</li>
<li>
<a href="#content-inner-4"></a>
</li>
<li>
<a href="#content-inner-5"></a>
</li>
<li>
<a href="#content-inner-6"></a>
</li>
</ul>
</div>
Согласен, что выглядит страшно. Нет, очень страшно. Но помните, что это не будет самой семантической вещью на планете. Теперь позвольте мне объяснить.
У нас есть div#content-slider, который включает в себя все содержимое (слайды и навигацию). Мы просто устанавливаем для него свойства width и margin и просто забываем о нем. Также у нас есть два раздела: div#content и ul#nav. div#content содержит все наши страницы, а ul#nav является навигацией, которая позволяет нам получать доступ к разным страницам слайдера или просто прокручивать их.
Теперь, прямо внутри div#content, мы добавляем 6 вложенных дивов: начиная с "content-inner-1" до "content-inner-6". Эти 6 дивов делают все основную работу, как именно, я объясню в дальнейшем.
#content-slider {
margin: 0 auto;
width: 640px;
}
#content {
height: 480px;
width: 640px;
box-shadow: 0 0 50px 10px #c9c9c9;
overflow: hidden;
}
#content-inner {
height: 480px;
width:10000px;
transition: all 400ms ease;
}
Как я уже сказал, все что мы сделали с div#content-slider это поместили его по центру страницы.
Стили для div#content очень важны. Мы установили ему "overflow: hidden" - это гарантирует, что слайды будут невидимыми, пока они не будут прокручены до видимой области.
Теперь div#content-inner, который содержит все слайды. Именно по этой причине он имеет ширину 10000px. Обычно, Javascript позволяет изменять и устанавливать правильную ширину, но в данном случае мы не используем Javascript и просто сделаем ее достаточно большой.
Слайды имеют фиксированную ширину и высоту, и располагаются друг за другом. Для этого используем правило float:left.
Теперь напишем некоторые общие стили, для блоков "div.slide", и "ul#nav".
.slide {
height: 480px;
width: 640px;
float: left;
position: relative;
}
.slide-info {
background: rgba(0, 0, 0, .35);
color: #fff;
padding: 1rem 2rem;
position: absolute;
right: 0;
bottom: 0;
left: 0;
}
.slide-info h2 {
color: #fff;
font-size: 1.25rem;
margin: 0;
}
.slide-info p {
font-size: 1rem;
margin: 0;
}
Как вы можете видеть, это всего лишь несколько простых стилей, которые слегка стилизуют слайд и текст в нем.
Теперь добавим некоторые интересные CSS3-стили для кнопок.
ul#nav {
margin: 1rem auto;
display: table;
}
ul#nav > li {
margin: 0 5px;
background: #bababa;
border-radius: 50%;
float: left;
}
ul#nav > li:hover {
box-shadow: inset 0 0 2px 2px #d4d4d4;
}
ul#nav > li:active {
box-shadow: inset 0 0 2px 2px #7a7a7a;
}
ul#nav > li > a {
height: 1rem;
width: 1rem;
display: block;
}
Мы сделали кнопки круглыми, и дабавили им падающие тени.
Теперь я объясню, как это все будет работать. Используя псевдо-селектор CSS3 :target, мы можем устанавливать стили элементов, которые находятся по ссылке. Например:
#example {
visibility: hidden;
}
#example:target {
visibility: visible;
}
Теперь, если мы были по адресу, такому как, например, http://www.example.com/index.html#example стили с :target выше, были бы применены. И в этом случае, div#example будет виден.
Используя это, мы можем имитировать функцию JavaScript click. Если пользователь нажимает на ссылку, указывающую на "http://www.example.com/index.html#example", то стиль будет применяться к блоку "example".
В нашем случае, мы будем использовать ":target", чтобы сделать наш контент-слайдер работающим. Когда пользователь нажимает на любую из шести кнопок в меню навигации, "content-inner" будет сдвигаться в соответствующее положение, точно также как и при использовании JavaScript.
Вот код позиционирования:
#content-inner-1:target #content-inner {
margin-left: 0;
}
#content-inner-2:target #content-inner {
margin-left: -640px;
}
#content-inner-3:target #content-inner {
margin-left: -1280px;
}
#content-inner-4:target #content-inner {
margin-left: -1920px;
}
#content-inner-5:target #content-inner {
margin-left: -2560px;
}
#content-inner-6:target #content-inner {
margin-left: -3200px;
}
У нас есть 6 "content-inner-[number]" дивов, и каждый div соответствует странице. 6 страниц = 6 дивов.
div#content-inner является дочерним для каждого "content-inner-[number]" div-а, поэтому когда любой из шести "content-inner-[number]" вызывается, мы можем установить соответствующие стили для "content-inner".
Так как каждый слайд имеет ширину 640px, мы просто устанавливаем margin-left для div-a "content-inner" кратный 640.
Чтобы сделать ":target" стили рабочими, мы должны иметь ссылки, указывающие на них.
Для того чтобы действительно оживить "content-inner", мы создаем для него стандартную CSS3-анимацию.
Вот всё, мы имеем полностью функциональный, анимированный, хотя и не очень семантичный, слайдер.
© 2008 - 2025 Webmasters.BY Все права защищены
Новый комментарий