piątek, 8 listopada 2013

Facebook slider bez JS

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 **/

I to wszystko. Szczegóły na temat wykorzystania grafik znajdujących się na bloggerze opisałem w ostatnim wpisie. Znajdziesz tam również szczegółowe informacje na temat jak edytować Twój wybrany motyw, oraz jak i gdzie umieścić kod.