Фотогалерея с помощью CSS, без использования java script
Посмотрим, как можно сделать простенькую фотогалерею только при помощи CSS, без использования java script.
Пример того, что мы будем делать смотрите тут: пример галереи на css. Итак, начнем.
CSS галерея, переключение картинок на hover
Посмотрим сразу код, и начнем разбирать его:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Фотогалерея с помощью CSS</title> <style type="text/css"> body{ margin:0; padding:50px; text-align:center; font-family:Arial, Helvetica, sans-serif; color:#FFF; background:#000; } a img{border:none;} #gallery1{ width:663px; height:400px; overflow:hidden; position:relative; z-index:1; margin:0 auto 100px auto; } #tabs1{ list-style:none; padding:0; margin:0; width:130px; height:400px; float:left; } #tabs1 li{ padding:0; margin:0; float:left; } #tabs1 li a img{ display:block; width:120px; height:90px; } #tabs1 li a{ display:block; border:5px solid #999; width:120px; height:90px; } #tabs1 li a:hover{border:5px solid #fff;} #tabs1 li a img.fullPic, #gallery1 div{ position:absolute; z-index:1; left:130px; top:0; width:533px; height:400px; } #tabs1 li a:hover img.fullPic{z-index:3;} #gallery1 div{ z-index:2; background:#242424; } </style> </head> <body> <h1>Галерея №1. Переключение картинок на hover.<br /> Почему-то не работает в ие6 =(</h1> <div id="gallery1"> <ul id="tabs1"> <li><a href="#"><img src="images/pic1s.jpg" alt="" /><img src="images/pic1.jpg" class="fullPic" alt="" /></a></li> <li><a href="#"><img src="images/pic2s.jpg" alt="" /><img src="images/pic2.jpg" class="fullPic" alt="" /></a></li> <li><a href="#"><img src="images/pic3s.jpg" alt="" /><img src="images/pic3.jpg" class="fullPic" alt="" /></a></li> <li><a href="#"><img src="images/pic4s.jpg" alt="" /><img src="images/pic4.jpg" class="fullPic" alt="" /></a></li> </ul> <div></div> </div> </body> </html> |
Как видим, создаем блок галереи и список мелких картинок. Рядом с каждой картинкой стоит ее большая картинка. Важно, чтобы обе картинки были в теге a. Сама идея галереи на hover состоит в том, что все большие картинки, позиционируются абсолютно в одном месте, и при наведении на мелкую картинку, т.е. на a:hover, у большой картинки меняется z-index на бОльший, и тем самым она «всплывает» над остальными. И в итоге, получается переключение картинок при наведении на мелких. Пустой див внизу нужен для перекрытия всех больших картинок, чтобы в самом начале не было видно ни одной большой картинки.
Вроде бы ничего сложного, но почему-то в моем эмуляторе ие6 данный пример заработать не захотел. Ну и хрен с ним =)
CSS галерея, переключение картинок на click
Теперь более интересный способ. Посмотрим, как переключать картинки на click. Даю код, и начнем разбирать его:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Фотогалерея с помощью CSS</title> <style type="text/css"> body{ margin:0; padding:50px; text-align:center; font-family:Arial, Helvetica, sans-serif; color:#FFF; background:#000; } a img{border:none;} #gallery2{ width:663px; height:400px; overflow:hidden; position:relative; z-index:1; margin:0 auto 100px auto; } #tabs2{ list-style:none; padding:0; margin:0; width:130px; height:400px; float:left; } #tabs2 li{ padding:0; margin:0; float:left; } #tabs2 li a img{ display:block; width:120px; height:90px; } #tabs2 li a{ display:block; border:5px solid #fff; width:120px; height:90px; } #fullPicBlock{ width:533px; height:400px; overflow:hidden; float:left; background:#242424; } </style> </head> <body> <h1>Галерея №2. Переключение картинок на click.</h1> <div id="gallery2"> <ul id="tabs2"> <li><a href="#pic1"><img src="images/pic1s.jpg" alt="" /></a></li> <li><a href="#pic2"><img src="images/pic2s.jpg" alt="" /></a></li> <li><a href="#pic3"><img src="images/pic3s.jpg" alt="" /></a></li> <li><a href="#pic4"><img src="images/pic4s.jpg" alt="" /></a></li> </ul> <div id="fullPicBlock"> <div><a name="pic1"></a><img src="images/pic1.jpg" alt="" /></div> <div><a name="pic2"></a><img src="images/pic2.jpg" alt="" /></div> <div><a name="pic3"></a><img src="images/pic3.jpg" alt="" /></div> <div><a name="pic4"></a><img src="images/pic4.jpg" alt="" /></div> </div> </div> </body> </html> |
Собственно что делаем. А делаем 2 блока для мелких картинок и для больших картинок. Блок больших картинок делаем шириной и высотой равной большим фоткам, и задаем ему overflow:hidden. Внутри него ставим большие картинки с ссылками-якорями. И на мелких картинках ставим ссылки на их соответствующие якори. В итоге, при клике на мелкую картинку, в большом блоке всплывает его соответствующая большая картинка. Обертывание якорных ссылок и больших картинок в div, позволяет избежать некоторых глюков при переключении картинок в ИЕ.
А вот этот способ в ие6 работает =)
Вот и всё. Еще раз посмотреть пример.
P.S. Из минусов, стоит отметить, что в итоге грузятся все картинки сразу, что не есть хорошо. Но способ интересный, можно взять на заметку.
Комментарии (38) на “Фотогалерея с помощью CSS, без использования java script”
Оставить комментарий
Для вставки кода используйте <code> ... </code>.
заебок! клевая тема
Выглядит и работает очень здорово!
Очень буду признателен, если подскажите: каким образом сделать дополнительно миниатюры фотографий в горизонтальную строку, оставив при этом левый ряд, либо просто как сделать пару рядов в горизонтальную строку?
<ul id=’tabs2′>
<li><a href=’#pic1′><img src=’images/pic1s.jpg’ alt=» /></a></li>
<li><a href=’#pic2′><img src=’images/pic2s.jpg’ alt=» /></a></li>
<li><a href=’#pic3′><img src=’images/pic3s.jpg’ alt=» /></a></li>
<li><a href=’#pic4′><img src=’images/pic4s.jpg’ alt=» /></a></li>
<li><a href=’#pic5′><img src=’images/pic5s.jpg’ alt=» /></a></li>
<li><a href=’#pic6′><img src=’images/pic6s.jpg’ alt=» /></a></li>
<li><a href=’#pic7′><img src=’images/pic7s.jpg’ alt=» /></a></li>
<li><a href=’#pic8′><img src=’images/pic8s.jpg’ alt=» /></a></li>
</ul>
Cделать внешний ul шириной равной 4 м превьюшкам и каждой li задать float:left. И тогда получится 2 горизонтальных ряда по 4 фотки. Это имели ввиду?
плохо что в 1м варианте картинка вьігружаеться и остаеться серьій фон, а так идея супер!
2Костя
почему-то не получается 2 ряда…Может, я настолько дуб?)
Ксения, давайте ссылку, где у вас не получается.
Посмотрите часть кода…..может тут чего не так написала?
Виды Ла-Гомеры
Виды Ла-Гомеры
не скопировать сюда код….грустно
Попробуйте тег < code > … — пробелы убрать.
тест:
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
но что-то криво все-равно)
а можно как-то сделать, чтоб маленькие картинки были не в 2 ряда? Т.е. чтоб справа и слева были колонки по 4 фотки)
Можно конечно, для этого учимся верстать колонки)
ааааа, хэлп глупому гуманитарию, которого заставили делать сайт:))))
если кому надо могу предложить свой вариант добавления второго столбца.
#gallery2{
width:793px;
height:400px;
overflow:hidden;
position:relative;
z-index:1;
margin:0 auto 10px auto;
}
здесь увеличиваем на 130 px для того, чтобы поместился второй столбец.
Затем копируем и вставляем еще раз этот блок:
Галерея №2. Переключение картинок на click.
так я получил два столбца.
этот блок вставляем второй раз сразу после
Здравствуйте!
Установил фотогалерею по вашему рецепту, все хорошо, в Мозилле она работает прекрасно, а в Опере не хочет работать, может подскажете, в чем тут дело?
Валерий, ссылочку бы.
Сделал по статье галерею. Хочу добавить функцию, чтобы при клике на большую фотографию открывалась следующая. Как это реализовать? Спасибо за ответ.
http://mikhailkolesniko.narod.ru/foto_gallery_1.html
Костя, ты просил ссылочку, http://www.hyundai-avtomobil.ru/hyundai-getz-foto.html
Уточняю, что у меня не работало в Опере 10-й, а в Опере 11-й работает.
Михаил, так возьми туже фунцию, которая работает в левом стобце в втором примере и поставь по очередно к каждой большой картинке.
Было бы интересно галерею, которая генерировала бы для каждой отдельной фотографии отдельную динамическую страницу. Например, как на «дофига.нет». Извините. может не там пишу, здесь вроде css обсуждают, но я уже неделю лазаю и ищу нечто подобное и не попадается мне ничего дельного.. помогите ссылочкой, кто-нибудь, пожалуйста
Тигрица, это уже движок сайта так делает, это ни css, ни js. Если используешь какую-либо бесплатную cms, поищи какие-нибудь плагины фотогалерей.
Пользуясь вашим сайтом хочу попросить советов по оформлению моего сайта про автомобили, может кто-нибудь подскажет дельным советом?
Мой сайт: http://www.vazmaster.ru
Валерий, убрать всюду понатыканную рекламу и потратиться на дизайнера с верстальщиком.
Спасибо за статью. я пока просто сделал открытие большой фотки на новой странице, но возьму на заметку. Из минусов наверно гимор делать кучу превьюшек и фото я так понял большие надо одного размера?
Спасибо за статью, возьму на заметку. большие фотки должны быть одного размера как я понял? ещё минус что надо превьюшку делать для каждой фотки.
удалите второй комментарий мой, не заметил что первый прошёл ((
Уруру =)
второй способ запал в душу, попробуем-с =)
автору респект,
надеюсь, смогу повторить фокус без смертельного исхода
Люди подскажите как сделать чтобы картинки при просмотре были большим разрешением чем в данном примере?
Я понял тут 533 на 400 пикселей сделан просмотр картинок. Хотелось бы в 2 раза больше. Сам пробовал менять но картинка вообще не загружаеться(
А так галерея классная, пытаюсь сайт сделать и поставить эту галерею!
Спасибо Большое, Оч помогла галерея..!)
Здравствуйте. Очень понравился второй способ, пытаюсь вписать его в свой сайт, но есть один вопрос. Суть в следующем, ряд превьюшек как прокручивать. У меня получается их выставить, но прокрутьть, например на номер 5 и далее не выходит…подскажите, что не так делаю?
Всем привет не подскажите как в первом случае сделать горизонтальный ряд по 4 фотки а то что та не получается
Здравствуйте, хочу сделать небольшую фотогалерею для сайта. Понравился Ваш способ, но есть проблема, используются разноформатные фотографии и при показе они деформируются. Как можно сделать, чтоб они уменьшались или увеличивались пропорционально?
для того чтобы в 1м варианте со старта не было пустой области просмотра, в див который показывает полноразмерое фото можно фоном вкинуть 1ю картинку.
<div style="background-image:url(путькартинке); background-repeat:no-repeat; background-position:center"></div>Вот код с двумя колонками
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Фотогалерея г.Оренбурга</title>
<style type="text/css">
body{
margin:0;
padding:50px;
text-align:center;
font-family:Arial, Helvetica, sans-serif;
color:#FFF;
background:#000;
}
a img{border:none;}
#gallery2{
width:663px;
height:400px;
overflow:hidden;
position:relative;
z-index:1;
margin:0 auto 100px auto;
}
#tabs2{
list-style:none;
padding:0;
margin:0;
width:130px;
height:400px;
float:left;
}
#tabs2 li{
padding:0;
margin:0;
float:left;
}
#tabs2 li a img{
display:block;
width:120px;
height:90px;
}
#tabs2 li a{
display:block;
border:5px solid #fff;
width:120px;
height:90px;
}
#fullPicBlock{
width:533px;
height:400px;
overflow:hidden;
float:left;
background:#242424;
}
{
margin:0;
padding:50px;
text-align:center;
font-family:Arial, Helvetica, sans-serif;
color:#FFF;
background:#000;
}
a img{border:none;}
#gallery2{
width:793px;
height:400px;
overflow:hidden;
position:relative;
z-index:1;
margin:0 auto 10px auto;
}
#tabs2{
list-style:none;
padding:0;
margin:0;
width:130px;
height:400px;
float:left;
}
#tabs2 li{
padding:0;
margin:0;
float:left;
}
#tabs2 li a img{
display:block;
width:120px;
height:90px;
}
#tabs2 li a{
display:block;
border:5px solid #fff;
width:120px;
height:90px;
}
#fullPicBlock{
width:533px;
height:400px;
overflow:hidden;
float:left;
background:#242424;
}
</style>
</head>
<body>
<h1>Фотогалерея г.Оренбурга</h1>
<div id="gallery2">
<ul id="tabs2">
<li><a href="#pic1"><img src="img/pic1s.jpg" alt="" /></a></li>
<li><a href="#pic2"><img src="img/pic2s.jpg" alt="" /></a></li>
<li><a href="#pic3"><img src="img/pic3s.jpg" alt="" /></a></li>
<li><a href="#pic4"><img src="img/pic4s.jpg" alt="" /></a></li>
</ul>
<ul id="tabs2">
<li><a href="#pic5"><img src="img/pic5s.jpg" alt="" /></a></li>
<li><a href="#pic6"><img src="img/pic6s.jpg" alt="" /></a></li>
<li><a href="#pic7"><img src="img/pic7s.jpg" alt="" /></a></li>
<li><a href="#pic8"><img src="img/pic8s.jpg" alt="" /></a></li>
</ul>
<div id="fullPicBlock">
<div><a name="pic1"></a><img src="img/pic1.jpg" alt="" /></div>
<div><a name="pic2"></a><img src="img/pic2.jpg" alt="" /></div>
<div><a name="pic3"></a><img src="img/pic3.jpg" alt="" /></div>
<div><a name="pic4"></a><img src="img/pic4.jpg" alt="" /></div>
<div><a name="pic5"></a><img src="img/pic5.jpg" alt="" /></div>
<div><a name="pic6"></a><img src="img/pic6.jpg" alt="" /></div>
<div><a name="pic7"></a><img src="img/pic7.jpg" alt="" /></div>
<div><a name="pic8"></a><img src="img/pic8.jpg" alt="" /></div>
</div>
</div>
</body>
</html>