Facebook slider bez JS
Jak dodać do strony bardzo prosty animowany slider LikeBox-a z Facebook-a? Ostatnio na tym blogu wspominałem o pluginie MUSLI oraz o możliwości podpięcia go pod blog na Bloggerze. W pierwszym poście wyjaśniłem jak podpiąć bibliotekę jQuery, jak podpiąć plugin MUSLI, jak dodać dodatkowe style CSS do szablonu i kod zakładek, oraz jak wykorzystać w tym kodzie grafikę umieszczoną na bloggerze.
Natomiast dzisiaj zmienimy nieco podejście i zbudujemy bardzo podobny, również w podobny sposób, slider LikeBoxa, ale tym razem bez JavaScript, czyli bez js, bez jQuery i bez pluginu MUSLI.
Czy można osiągnąć efekt slidera bez javascript? Obecnie CSS transitions stają się coraz popularniejsze i coraz szerzej wspierane przez przeglądarki. Wykorzystując techniki CSS transitions zbudujemy efekt imitujący wyjeżdżanie zakładki z boku okna przeglądarki.
Zdecydowany plus takiego rozwiązania to oczywiście pominięcie skryptów js, czyli jQuery i MUSLI. Minus to kompatybilność z przeglądarkami, dlatego każdy musi sobie sam odpowiedzieć na pytanie czy to rozwiązanie nadaje się na jego stronę, czy blog.
Na moim blogu o WordPress dodałem wczoraj podobny wpis o sliderze LikeBoxa bez JS, więc tutaj po prostu troszkę to przerobimy, aby dostosować pod wymagania bloggera... :)
Oprócz tego napisałem jeszcze przykładowe demo z realizacjami z jQuery, z MUSLI i z jQuery easing plugin, dzięki którym osiągnąć można całkiem ciekawy efekt. Tylko pytanie czy opłaca się podpinać aż trzy skrypty, aby realizować to zadanie? Oceńcie sami. :)
Facebook LikeBox slider bez JS
Tutaj znajduje się demo slidera, o którym wspominałem wcześniej, jest to efekt końcowy produktu do którego dążymy w tym wpisie.HTML slidera
Na początek prawidłowy kod HTML. Jak zwykle jest to lista nieuporządkowana (ul), we wnętrzu każdego elementu listy (li) umieszczamy -- obrazek (img), który będzie imitował zakładkę
- blok (div) z zawartością zakładki. We wnętrzu tego bloku możemy umieścić właściwie cokolwiek (zdjęcie, formularz, napis, linki).
<ul class="musli"> <li> <img src="c-icons/fb.png" /> <div class="musli-facebook">KOD ZAKŁADKI</div> </li> <li> <img src="c-icons/gp.png" /> <div class="musli-google">KOD ZAKŁADKI</div> </li> </ul>
Powyższy kod tworzy dwie zakładki, ale można zrobić jedną albo więcej.
Domyślnie slider wyświetli się z prawej strony, ale możemy dodać do listy dodatkową klasę, która zmieni pozycję slidera:
- musli-left - aby przenieść zakładki na lewą stronę
- musli-top - aby wyświetlać zakładki na górze strony
- musli-bottom - aby wyświetlać zakładki na dole strony
CSS
/* reset */ .musli *{ padding:0; margin:0; list-style:none; } .musli{ position:fixed; right:0px; top:150px; /* tutaj można ustawić odległość
od góry strony dla zakładek znajdujących się po prawej stronie */ z-index:100; list-style:none; } .musli-bottom{ left:300px; /* tutaj można ustawić odległość
od lewej strony dla zakładek znajdujących się na dole */ bottom:0px; right:auto; top:auto; } .musli-top{ left:300px; /* tutaj można ustawić odległość
od lewej strony dla zakładek znajdujących się na górze */ top:0px; right:auto; bottom:auto; } .musli-left{ left:0px; top:200px; /* tutaj można ustawić odległość
od góry strony dla zakładek znajdujących się po lewej stronie */ right:auto; bottom:auto; } .musli > li{ cursor:pointer; width:35px; height:35px; margin-bottom:1px; position:relative; } .musli-bottom > li, .musli-top > li{ margin-right: 1px; margin-bottom: 0; float:left; } /* Zaokrąglone rogi dla obrazków zakładek -
skasuj, jeżeli nie chcesz zaokrąglać rogów przez CSS */ .musli > li > img{ -moz-border-radius: 5px 0 0 5px; -webkit-border-radius: 5px 0 0 5px; border-radius: 5px 0 0 5px; } .musli-bottom > li > img{ -moz-border-radius: 5px 5px 0 0; -webkit-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; } .musli-top > li > img{ -moz-border-radius: 0 0 5px 5px; -webkit-border-radius: 0 0 5px 5px; border-radius: 0 0 5px 5px; } .musli-left > li > img{ -moz-border-radius: 0 5px 5px 0; -webkit-border-radius: 0 5px 5px 0; border-radius: 0 5px 5px 0; } /* Koniec Zaokrąglone rogi dla obrazków zakładek */ .musli > li > div{ padding:5px; background: #fff; float:left; width:286px; height:296px; -moz-border-radius: 0 0 0 8px; -webkit-border-radius: 0 0 0 8px; border-radius: 0 0 0 8px; position:absolute; top:0; left:35px; z-index:100; border: solid #0170cf 3px; } .musli-bottom > li > div{ top:35px; left:auto; -moz-border-radius: 0 8px 0 0; -webkit-border-radius: 0 8px 0 0; border-radius: 0 8px 0 0; } .musli-top > li > div{ bottom:35px; left:auto; top:auto; -moz-border-radius: 0 0 8px 0; -webkit-border-radius: 0 0 8px 0; border-radius: 0 0 8px 0; } .musli-left > li > div{ top:0px; left:auto; right:35px; -moz-border-radius: 0 0 8px 0; -webkit-border-radius: 0 0 8px 0; border-radius: 0 0 8px 0; } .musli-google{ border: solid #cd3c2a 3px !important; } .musli-facebook{ border: solid #0170cf 3px !important; } .musli-twitter{ border: solid #07afee 3px !important; } .musli-nk{ border: solid #8fc44c 3px !important; }
/** transitions **/ /** wymiary diva - width:286px; height:296px; **/ .musli>li{ right:0; -moz-transition:.5s linear; -webkit-transition:.5s linear; transition:.5s linear; } .musli>li:hover{ right:302px; /* szerokosc diva w którym znajduje się LikeBox */ } .musli-left>li{ left:0px } .musli-left>li:hover{ right:auto; left:302px; /* szerokosc diva w którym znajduje się LikeBox */ } .musli-top>li{ top:0; } .musli-top>li:hover{ right:auto; top: 312px; /* wysokosc diva + (paddingi + grubosc ramki) * 2 */ } .musli-bottom>li{ bottom:0; } .musli-bottom>li:hover{ right:auto; bottom: 312px; /* 286px + (10px + 3px) * 2 = 312px */ } /** END transitions **/