Diskuze: Automatické posouvání ScrollBaru
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 8 zpráv z 8.
//= 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.
Zni to jako bys mel v tech elementech scrollbary a potreboval v nich sem tam
zascrollovat, pak se ti asi bude hodit tohle: (pokud jde o vertikalni
scrollovani)
https://developer.mozilla.org/…nt/scrollTop
mozna taky tohle:
https://developer.mozilla.org/…nt/offsetTop
mozna bych to pochopil lip, kdyby tenhle text:
Aktuálně používám metodu tagování a to tím způsobem, že posunu stránku na scrollbar "/#playlist" tím dojde k posunutí a zpětně to vracím na přehrávač "/#prehravac". Jenže, když chcete číst třeba článek a ona se přepne skladba, tak to není moc žádoucí. Potřebuji tedy nějaký efektivnější způsob co posune scrollbar v tichosti.
daval lepsi smysl, posunes stranku na kotvu #playlist?? predpokladam, metoda tagovani??, zminka o cteni clanku a prepinani skladby - netusim jak to spolu souvisi.
tak to zkus kdyztak upresnit.
Již jsem to udělal za pomocí funkce scrollTop a posouvám scrollBar přidanou hodnotou. Ale stále to není úplně ideální a raději bych to posouval podle divu.
A ano napsal jsem, že používám metodu tagování, která není úplně ideální.
Věděl by jsi jak to udělat na div?
Muzu se jen zeptat, co presne si predstavujes pod "a raději bych to posouval podle divu" - mam to chapat, tak, ze rekneme mas kontejner, v nem kdesi vysi div element s id='chytme' a ty bys rad zascrolloval presne tak, aby horni roh elementu chytme byl v hornim roku obrazovky?
Ja vim, ze jsi napsal, ze pouzivas metodu tagovani, ale co je metoda tagovani? Muzes mi to nejak priblizit? Pravdepodobne to budu znat pod jinym nazvem.
Jiste jsem schopnej ti vymyslet reseni na miru, ale to bych potreboval opravdu presne popsat jak stranka vypada a jak se ma podle tvych pozadavku to scrollovani chovat. Takhle jen hadam, ani jsi mi nepopsal, jestli je scrollovaci element na strance jedinej, nebo jich je tam vic, jestli scrollujes cely window, nebo nejaky kontejnery? To vsechno si jen muzu domyslet a hadat.
Malý výpis generovaného playlistu skladeb
JS
function scrolling(height,ele){
this.stop().animate({ scrollTop: height}, 1000, function () { });
};
function run(height){
var wtf = $('.tab-content');
scrolling.call(wtf,height, this);
}
CSS
#scroll{
overflow-y: scroll;
height: 334px;
width: 100%;
}
HTML
<div id='scroll' class="tab-content">
<div class="tab-pane active" id="tab1">
<p><div class="playlist">
<ul>
<li id='0' class='jsDeactive' name='0'>
<a href="javascript:loadVideo('0')">
<div class='title'>
<div class='playlist-thumbnail'>
<img id='playlist' src='http://i.ytimg.com/vi/wx1RNRJRG-s/default.jpg'>
</div>
<span class='title'>(1) We Are Loud - Stay High (Ft. Ida)</span>
<div class='playtime'><span>3:45</span></div>
</div>
</a>
</li>
<li id='1' class='jsDeactive' name='0'>
<a href="javascript:loadVideo('0')">
<div class='title'>
<div class='playlist-thumbnail'>
<img id='playlist' src='http://i.ytimg.com/vi/wx1RNRJRG-s/default.jpg'>
</div>
<span class='title'>(2) We Are Loud - Stay High (Ft. Ida)</span>
<div class='playtime'><span>3:45</span></div>
</div>
</a>
</li>
<li id='2' class='jsDeactive' name='0'>
<a href="javascript:loadVideo('0')">
<div class='title'>
<div class='playlist-thumbnail'>
<img id='playlist' src='http://i.ytimg.com/vi/wx1RNRJRG-s/default.jpg'>
</div>
<span class='title'>(3) We Are Loud - Stay High (Ft. Ida)</span>
<div class='playtime'><span>3:45</span></div>
</div>
</a>
</li>
<li id='3' class='jsDeactive' name='0'>
<a href="javascript:loadVideo('0')">
<div class='title'>
<div class='playlist-thumbnail'>
<img id='playlist' src='http://i.ytimg.com/vi/wx1RNRJRG-s/default.jpg'>
</div>
<span class='title'>(4) We Are Loud - Stay High (Ft. Ida)</span>
<div class='playtime'><span>3:45</span></div>
</div>
</a>
</li>
</ul>
</div></p>
</div>
</div>
Dobre, zda se, ze jsi to popsal dostatecne, zkusim to shrnout:
mas kontejner, ktery obsahuje seznam videi
kontejner ma overflow: scroll - naprosto logicky
kdyz zacne hrat dalsi skladba, chces aby se list skladeb poscrolloval o neco
niz, protoze aktualni skladba ma byt vzdy nahore
problem je:
kdyz vyska elementu jednoho prvku listu neni cele cislo postupem casu se
odchilis pri scrollovani
navrhuju reseni na zaklade pozice video elementu v seznamu a nikoliv jeho rozmeru
tim chci rict, misto toho abys scrolloval na principu krokovani (dalsi skladba -> scroll o fixni vzdalenost) udelas tohle:
zmena skladby -> je treba aktualizovat list -> zjistit jak daleko od horniho leveho rohu se nachazi pozadovana aktualni skladba -> zascrollovat v kontejneru na presne tuto hloubku ...
vlastne jsem ti vsechno potrebne napsal uz v prvnim postu, ale ty pouzivas jQuery a ja to budu respektovat , takze se domnivam ze ti bude stacit tohle http://api.jquery.com/offset/
vyhoda tohohle reseni je asi ta, ze v momente, kdy uzivatel klikne v listu na jakoukoliv skladbu, vyvola to ten samy sled udalosti, tedy vzdy bude mit nahore v seznamu na prvnim miste prave hrajici skladbu..
Tak já ti moc děkuji za vodítko, které jsi mi dal a již jsem to dal do kupy. Odečtu 1 rozměr od druhého a získám tak reálný a správný rozměr. Díky tomu jsem dosáhl i toho, že si to posunu o tolik skladeb o kolik chci.
var offset_a = $('#'+indexMinus).offset().top - $(".playlist").offset().top;
Zobrazeno 8 zpráv z 8.