Создание слайдера - это отличный способ сделать сайт более динамичным. Как правило, слайдеры создают при помощи jQuery или какой-либо другой JavaScript-библиотеки. Тем не менее, с появлением CSS3, я покажу вам как создать его используя только CSS.
Согласен, что выглядит страшно. Очень страшно. Помните, что это не будет самой семантической вещью на планете. Теперь, позвольте мне объяснить.
У нас есть div "content-slider", который содержит все содержимое. Мы просто устанавливаем для него "margin: 0 auto" и забываем о нем.
Затем, у нас есть два раздела: div "content" и ul "nav". Div content содержит все наши страницы, и ul "nav", который позволяет нам получать доступ к разным страницам.
Теперь, прямо внутри div "content", мы добавляем 6 вложенных дивов: начиная с "content-inner-1" до "content-inner-6". Эти 6 дивов делают все основную работу, как именно, я объясню в дальнейшем.
Как я уже сказал, все что мы сделали с div "content-slider" это поместили его по центру страницы, и сдвинули его на 100px от верхней границы страницы.
Стили для div "content" очень важны. Мы установили ему "overflow: hidden" - это гарантирует, что слайды будут невидимыми, пока они не будут выбраны.
Теперь, div "content-inner", который содержит все страницы. Именно по этой причине он имеет ширину 10 000 px. Обычно, Javascript позволяет изменять и устанавливать правильную ширину, но в данном случае мы не используем Javascript.
Страницы имеют ширину и высоту, и они располагаются друг за другом, для этого используем правило float:left.
Теперь напишем некоторые общие стили, для блоков "page-info", и "nav".
Теперь, если мы были по адресу, такому как, например, 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{
-webkit-transition: all 400ms ease;
-moz-transition: all 400ms ease;
-o-transition: all 400ms ease;
transition: all 400ms ease; margin-left:0px; } #content-inner-2:target #content-inner{
-webkit-transition: all 400ms ease;
-moz-transition: all 400ms ease;
-o-transition: all 400ms ease;
transition: all 400ms ease; margin-left:-640px; } #content-inner-3:target #content-inner{
-webkit-transition: all 400ms ease;
-moz-transition: all 400ms ease;
-o-transition: all 400ms ease;
transition: all 400ms ease; margin-left:-1280px; } #content-inner-4:target #content-inner{
-webkit-transition: all 400ms ease;
-moz-transition: all 400ms ease;
-o-transition: all 400ms ease;
transition: all 400ms ease; margin-left:-1920px; } #content-inner-5:target #content-inner{
-webkit-transition: all 400ms ease;
-moz-transition: all 400ms ease;
-o-transition: all 400ms ease;
transition: all 400ms ease; margin-left:-2560px; } #content-inner-6:target #content-inner{
-webkit-transition: all 400ms ease;
-moz-transition: all 400ms ease;
-o-transition: all 400ms ease;
transition: all 400ms ease; margin-left:-3200px; }
Заключение
У нас есть 6 "content-inner-[number]" дивов, и каждый div соответствует странице. 6 страниц = 6 дивов.
Div "content-inner" является дочерним для каждого "content-inner-[number]" div-а, поэтому когда любой из 6 "content-inner-[number]" вызывается, мы можем установить соответствующие стили для "content-inner".
Так как каждая страница имеет ширину 640px, мы просто устанавливаем margin-left для div-a "content-inner" кратный 640.
Чтобы сделать ":target" стили рабочими, мы должны иметь ссылки, указывающие на них.
Для того чтобы действительно оживить "content-inner", мы создаем для него обычную CSS3-анимацию с использованием префиксов для разных браузеров.
Ну вот всё, мы имеем полностью функциональный, хотя и не семантичный, слайдер.