-
Pozioma galeria
dodano 20.09.2007 / komentarzy: 1 / autor: palmiakPewnym małym trendzikiem stało się robienie galerii zdjęć w postaci poziomej strony. Dzisiaj chciałbym Wam pokazać jak taką stronę zrobić.
Idea
Nasza strona będzie się składać z zagnieżdżonych list nieuporządkowanych. Na “górze” będziemy mieć nazwy kategorii, a jako ich dzieci poszczególne zdjęcia.
Dobrze będzie, jeśli przed stworzeniem swojej galerii doprowadzicie miniaturki do takiego stanu, żeby wszystkie miały tą samą wysokość.
Kod
Tak jak mówiłem, będziemy bazować na listach nieuporządkowanych. Kod będzie wyglądał następująco:
<ul>
<li class="kategoria"><a href="#"><img src="img/kategoria.png" alt="" /></a><ul>
<li><img src="img/3.jpg" alt="" /></li>
<li><img src="img/2.jpg" alt="" /></li>
<li><img src="img/1.jpg" alt="" /></li>
</ul></li><li class="kategoria"><a href="#"><img src="img/kategoria.png" alt="" /></a><ul>
<li><img src="img/1.jpg" alt="" /></li>
<li><img src="img/3.jpg" alt="" /></li>
<li><img src="img/3.jpg" alt="" /></li>
</ul></li><li class="kategoria"><a href="#"><img src="img/kategoria.png" alt="" /></a><ul>
<li><img src="img/1.jpg" alt="" /></li>
<li><img src="img/3.jpg" alt="" /></li>
</ul></li><li class="kategoria"><a href="#"><img src="img/kategoria.png" alt="" /></a><ul>
<li><img src="img/1.jpg" alt="" /></li>
<li><img src="img/3.jpg" alt="" /></li>
</ul></li></ul>
Jako, ze to tylko przykład to sobie darował wypełnienie
altów, aczkolwiek mam nadzieję, że Wy to zrobicie.CSS
Teraz zaczynamy dopiero prawdziwą zabawę. Naszym zadaniem będzie pozbyć się najpierw kropek, następnie ułożyć to w poziomie, a na końcu zrobić tak, żeby się nie zawijało. No to zaczynamy.
* {
padding:0;
margin:0;
}
img {
border:0;
}Dzięki temu resetujemy marginesy i nie musimy się martwić o niezgodność wartość defaultowych IE, FF oraz Opery. Dodatkowo pozbywamy się ramek wokół obrazków. Teraz czas na kropki:
ul {
list-style-type:none;
}
Jeśli do stylu dopiszemy kolejne linijki uzyskamy okład poziomy:
ul {
list-style-type:none;
display:inline;
}ul ul {
display:inline;
}li {
display: inline;
}Strona ciągle się jednak nie zawija. Radzimy sobie z tym za pomocą:
ul {
list-style-type:none;
display:inline;
white-space: nowrap;
}ul ul {
display:inline;
}li {
display: inline;
white-space: nowrap;
}
Mamy już solidną bazę. Czas nadać temu jakiś wygląd. Zacznijmy od tła:
body {
background:black url(img/grad.jpg) repeat-x 30% 0;
}Na poprzednim przykładzie możemy doskonale dostrzec, że byłem leniwy i nie przygotowałem miniaturek o tej samej wysokości. Można to na szczęście naprawić w CSS:
li li img {
height:200px;
}
.kategoria li img {
width:auto;
}.kategoria img{
width:50px;
height:200px;
}Zobacz przykład
.kategoria imgJest specjalnie dla IE. Jeśli tego nie będzie IE zacznie dość dziwnie rozciągać obrazki od kategorii.Przesuńmy teraz nasze zdjęcie w dół:
ul {
list-style-type:none;
display:inline;
white-space: nowrap;
position:absolute;
top:30%;
}ul ul {
position:static;
display:inline;
top:0;
}
Zobacz przykład
Teraz aż się prosi, żeby na górze strony pojawiło się jakieś logo. w XHTML dopiszmy<div id="head"><img src="img/logo.png" alt="logo" /></div>a za pomocą stylu odklejmy troszkę od brzegu oraz sprawmy, ze logo będzie w tym samym miejscu (poza IE, gdzie to niestety nie działa)
#head {
position:fixed;
top:5px;
left:15px;
}#head img {
height:150px;
width:300px;
}
Wysokość i szerokość obrazka w
#headustalamy, bo IE nam ogłosi bunt, jeśli spróbujemy go zmusić do współpracy z PNG. A a’propos przymuszania IE do PNG to pobieramy pliczek oraz obrazek. Następnie tworzymy nowy plik ze stylem i piszemy w nim:img {
behavior: url(iepngfix.htc);
}
Następnie wklejamy do kodu naszej galerii:
<!–[if IE lt 7]><link rel=stylesheet” type=”text/css” href=”ie.css” /><![endif]–>Teraz w IE nie będzie problemów z przezroczystością w PNG.
Bajer z jQuery
Za pomocą jQuery zrobimy jeszcze trik. Zamiast pokazywać wszystkie foty naraz pokaże nam tylko fotki z jednej kategorii, a pozostałe będą schowane. Po wybraniu innej kategorii tamte się pokażą, a wszystkie pozostałe się pochowają.
Pierwszym naszym krokiem będzie pobranie jQuery. Następnie tworzymy plik menu.js a w nim piszemy:
$(document).ready(function() {
$("ul ul:not(:first)").hide();
$("li.kategoria a").click(function(){
$("ul ul:visible").hide();
$(this).next(‘ul’).fadeIn();
return false;
});
});
});Funkcja ukrywa wszystkie ul - dzieci poza pierwszym. Następnie po kliknięciu na obrazek ukrywa widocznego ul - dziecko i odkrywa dziecko rodzica w którego kliknęliśmy.
Umieszczamy jeszcze na stronie w sekcji
<head>:<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="menu.js"></script>
I to wszystko. Zachęcam wszystkich do prób. Jeśli macie jakiś problemy nie bójcie się pytać na naszym forum.


















Komentarze / dodaj komentarz
autor: Fajny
dodano: 02.10.2008
fajne ten skrypt, mam pytanie jak zrobić żeby umieścić jeszcze linki , coś jak kategorie wybieram kategorie zdjęć góry i ładuje mi sie na stronie ta galeryjka, potem wybieram kategorie lasy i to samo….
Z góry Dzięki za pomoc,
Pozdrawiam
Napisz komentarz