Diskuze: Header - slideshow
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 10 zpráv z 10.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Jaký efekt chceš? Jak vypadá stránka - screenshot?
dobře, díky, poučím se z toho ... no chci aby měl postupnej náběh.. mám tam zatím jenom 4
obrázky, které mají stejnej rozměr a ty obrázky mají zatím jen různé
barvy, abych viděl jak to funguje. Jinak časem tam budu chtít 3-4 měnící
se obrázky, stejného rozměru. Je to klasickej jednosloupcovej layout (header,
menu, obsah, patička)
Udělej si element #slider, do něho vlož obrázky jakožto img.
Nastyluj #slider, img roztáhni na 100% šířky.
JS:
Nejdříve si musíš udělat funkci, která
-- za čas animace spustíš:
3. poslední obrázek vložíš na index 0 - před "#slider img:eq(0)"
4. první obrázek zobrazíš - bez animace - 0ms
a tuto funkci budeš volat v daném intervalu
Takto nějak by to mělo fungovat aby ti vznikl efekt prolnutí.
Děkujuu, no nejspíš to nezvládnu podle toho, ale zkusím to
no, něco mám. Řekl bych že 2 kroky. Mohl bys mi prosím s tím dalším
pomoc?
HTML:
<div id="header">
<div id="slider">
<img src="img/headers/img1.jpg" />
<img src="img/headers/img2.jpg" />
<img src="img/headers/img3.jpg" />
</div>
</div>
a Javascript:
function slideshow() {
var delka = $('#slider img').length;
$("#slider img:last").fadeOut(2000);
}
$(document).ready(function() {
setInterval( "slideshow()", 1000 );
});
Od délky odečti 1, jelikož chceš pracovat od nuly - s indexy. Délku
vlastně ani nepotřebuješ, když využíváš ":last"...
Co zde nemáš je, že nepřehazuješ poslední, tedy viditelný, obrázek na první, respektive nulté, místo. Tedy něco jako
setTimeout(function(){
$("#slider img:last").insertBefore("#slider li:first");
$("#slider img:first").fadeIn();
}, 2000);
Nyní by jsi měl míti obrázky pod sebou a měly by se ti přehazovat z konce - dole - na začátek - nahoru. Toto pak ještě upravíš přidáním absolutní pozice na obrázky, tzn. se ti hodí všechny na sebe a bude vidět jen spodní. Také nezapomeň přidat na #slider relativní pozici.
Funguje to skoro, děkuju moc. Při scrollování to zůstává na tom
místě kde má, ale nefunguje to prolínání :/
Skáče to jak kdyby tam bylo hide() a show()
Nebude to tím, že animace trvá 2s ale ty voláš funkci tím intervalem po
1s? ... Nevím, musíš si to doladit.
tak, vyřešeno kdyby
někdo řešil podobný problém, tak přikládám zdrojáky.
Díky za pomoc:)
HTML
<div id="header">
<div id="slider">
<img class="header" src="img/headers/img1.jpg" />
<img class="header" src="img/headers/img2.jpg" />
<img class="header" src="img/headers/img3.jpg" />
</div>
</div>
CSS
.header {
position: absolute;
display: none;
}
#slider {
position: relative;
}
a JS:
function slideshow(){
$("#slider img:first").fadeOut();
$("#slider img").hide(1000);
$("#slider img:last").insertBefore("#slider img:first");
$("#slider img:first").fadeIn();
}
$(document).ready(function() {
$("#slider img:first").show();
setInterval( "slideshow()", 5000 );
});
Zobrazeno 10 zpráv z 10.