Сегодня я покажу вам как сделать галерею изображений на CSS3. Галерея будет представлять собой набор эскизов, при наведении курсора на которые их размер будет увеличиваться, а основное изображение будет меняется в зависимости от того, какая миниатюра была нажата.

HTML
Итак, во-первых, нам понадобится несложная HTML-разметка.
<div id="images"> <section id="thumbnails"> </section> <section id="mainimage"> <div id="imageplaceholder"></div> </section> </div>
Там есть основной DIV с id "images". Этот блок вроде контейнера, который содержит весь контент на странице. Кроме того, там есть секция "thumbnails" - она содержит миниатюры. Далее идет div "mainimage". Он содержит основное изображение, которое изменяется в зависимости от того по какой миниатюре кликнули. Внутри "mainimage" находится блок с id "imageplaceholder". Этот блок содержит изображение по-умолчанию.
<section id="thumbnails"> <div class="image"> <a href="#test1"> <img src="images/test1.jpg"> </a> </a> </div> <div class="image"> <a href="#test2"> <img src="images/test2.jpg"> </a> </div> <div class="image"> <a href="#test3"> <img src="images/test3.jpg"> </a> </div> <div class="image"> <a href="#test4"> <img src="images/test4.jpg"> </a> </div> <div class="image"> <a href="#test5"> <img src="images/test5.jpg"> </a> </div> <div class="image"> <a href="#test6"> <img src="images/test6.jpg"> </a> </div> <div class="image"> <a href="#test7"> <img src="images/test7.jpg"> </a> </div> <div class="image"> <a href="#test8"> <img src="images/test8.jpg"> </a> </div> <div class="image"> <a href="#test9"> <img src="images/test9.jpg"> </a> </div> </section>
Да, тут много эскизов. Но что это за галерея изображений, которая обходится без множества эскизов? Теперь, обратите внимание на то, что там есть ссылка на каждую миниатюру, в виде #test, а затем номер. Это нужно затем, что мы будем использовать псевдо-селектор ":target".
<section id="mainimage"> <div id="test1"> <div id="test2"> <div id="test3"> <div id="test4"> <div id="test5"> <div id="test6"> <div id="test7"> <div id="test8"> <div id="test9"> <div id="imageplaceholder"></div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </section>
Да, это выглядит не очень красиво, я признаю, - но я и не говорил, что это будет семантический код, не так ли? Каждый DIV имеет id "test", а затем номер. Этот id соответствует "href" в ссылке миниатюры.
Теперь, когда мы закончили с простым и совершенно несложным HTML, давайте двигаться дальше.
CSS3
Вначале вставим reset-стили Эрика Мейера. После того как вы сделали это, перейдем непосредственно к галерее.
body {
background: #f8f8f8;
font-size: 15px;
line-height: 25px;
color: #515151;
}
#images {
padding-top: 100px;
width: 880px;
height: 440px;
margin: 0 auto;
}
#thumbnails {
float: left;
width: 440px;
margin-top: 20px;
}
#mainimage {
float: right;
width: 430px;
height: 430px;
background: #ffffff;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-box-shadow: 0px 0px 3px 1px #989898;
-moz-box-shadow: 0px 0px 3px 1px #989898;
box-shadow: 0px 0px 3px 1px #989898;
padding: 5px;
}
#mainimage img {
width: 430px;
height: 430px;
}Это был основной дизайн макета. Он имеет ширину 880px, а оба раздела по 440px.
.image {
opacity: 0.8;
position: relative;
float: left;
background: #ffffff;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
-webkit-box-shadow: 0px 0px 3px 1px #989898;
-moz-box-shadow: 0px 0px 3px 1px #989898;
box-shadow: 0px 0px 3px 1px #989898;
-webkit-transition: all 200ms ease;
-moz-transition: all 200ms ease;
-o-transition: all 200ms ease;
transition: all 200ms ease;
padding: 5px;
width:90px;
height: 90px;
margin-left: 15px;
margin-right: 15px;
margin-top: 15px;
margin-bottom: 15px;
}
.image img {
width: 90px;
height: 90px;
}
.image:hover {
cursor: pointer;
opacity: 1;
z-index: 5;
-moz-transform: scale(1.5);
-webkit-transform: scale(1.5);
-o-transform: scale(1.5);
-ms-transform: scale(1.5);
transform: scale(1.5);
}Эти стили касаются миниатюр. Однако, кроме переходов, наиболее важной частью являются стили при наведении курсора. Обратите внимание, на CSS3-transform. Здесь мы используем масштабирование, которое увеличивает элемент в полтора раза при наведении мыши.
#imageplaceholder {
background: url('images/test1.jpg');
background-size: 100%;
width: 430px;
height: 430px;
}Это стили для фонового изображения, которое будет меняться в зависимости от того, какая миниатюра была нажата.
#test1:target #imageplaceholder{
background: url('images/test1.jpg');
}
#test2:target #imageplaceholder{
background: url('images/test2.jpg');
}
#test3:target #imageplaceholder{
background: url('images/test3.jpg');
}
#test4:target #imageplaceholder{
background: url('images/test4.jpg');
}
#test5:target #imageplaceholder{
background: url('images/test5.jpg');
}
#test6:target #imageplaceholder{
background: url('images/test6.jpg');
}
#test7:target #imageplaceholder{
background: url('images/test7.jpg');
}
#test8:target #imageplaceholder{
background: url('images/test8.jpg');
}
#test9:target #imageplaceholder{
background: url('images/test9.jpg');
}Когда мы кликаем по миниатюре, "#test" с номером добавляются к URL-адресу. CSS3 селектор ":target" проверяет URL, и когда URL содержит имя элемента с селектором ":target", соответствующие стили применяются и меняется фоновое изображение.
Скачать исходники:
- Подпись автора



