Ovako, malo je komplicirano za objasniti. Napravio sam Wordpress widget koji ubacuje članke u obliku thumbnaila. No problem mi je odrediti širinu thumbnaila. Npr. ako se widget nalazi unutar elementa koji ima width do 150px, tu bi thumbnail trebao imati width 100%. Ukoliko se widget nalazi unutar elementa širine 150px do 225px, tu bi trebao imati dva thumbnaila širine 50%. Shvaćate?
U CSS-u imam sljedeći style (ovo dolje su classes koji bi se dodavali i micali ovisno o širini parent elemenata. Nazivi su davani na temelju 12-ogridnog layout. Npr. w12 => 12/12 tj. cjelokupna širina, w6 => 6/12 tj. pola širine itd…
Ovaj gore kod radi i jQuery prepozna širinu elementa, no kada resizeam prozor te se širina mjenja, jQuery ne dodaje/briše razrede sukladno if/else funkciji. Tj. jQuery se izvrši samo jednom pri otvaranju…
Ne znam kako bi ovo bolje objasnio, pa ako ima pitanja, vičite…
E sad, da si ne dupliciras kod, najbolje ti je da si napravis funkciju za to, i onda ju pozoves kad se stranica loada, i unutar resize eventa kao ja gore.
To je “set” mode i on ti zamijeni cijeli class atribut tog elementa sa onim sta si ti stavio iza zagrade. U ovom konretnom slucaju na kraju dobijes element sa klasama .thumbnail i .wloop_item_w2
E, a sad imam drugi problem. Naime, sad ja taj widget stavim u 3 različita area koji su svi tri različite širine. JS prati kako se prvi div.thumbnail na stranici ponaša, tj. kako se ponaša njegov parent, i onda svim elementima s .thumbnail klasom daje istu širinu. Kako napraviti to da nove classes dodaju ovisno o njihovim parent elementima, a ne parent elementu prvog div.thumbnail?
Znači, umjesto .thumbnail je .wloop_item… sve ostalo je isto…
Fora je u tome da imam pagebuilder (SiteOrigin) i elementi se putem widgeta ubacuju u njega. Ja želim napraviti hrpu različitih petlji koje korisnici mogu staviti kako bi sami dizajnirali svoj page, bio on portfolio heavy ili više na magazine. E sad, ako oni ubace isti widget više puta u layout, a parent element je drugačije širine, meni će se pojedini članci (koji su u obliku thumbnaila) drugačije loadati i ponašati ovisno o širini prozora/devicea. Tj. loadat će se ovisno o parentu prvog loadanog widgeta…
Imam još jedno pitanje, nevezano uz ovo gore. Kako u jQueryju napisati funckiju da mi određeni linkovi (koje ja selektiram) imaju animirani (fadeIn) hover efekt, ali ja pritom ne mogu predvidjeti koji je to točno hover efekt.
e sad, kako napraviti da prijelaz mišem napravi fadeIn efekt iz a:link u a:hover putem jQueryja, a da pritom izričito ne naglasim kako je krajnji rezultat link s crvenom podlogom.
Laički bi to bilo ovako:
$('a.nekilink ').mouseenter(function () {
$(this).fadeIn(/* this:hover */);
});
$('.a.nekilink').mouseleave(function () {
$(this).fadeOut(/* nazad na početko stanje */);
});
Ne treba ti za to jQuery, mozes koristiti ovaj css:
a {
-webkit-transition: all .2s ease-in-out;
-moz-transition: all .2s ease-in-out;
-ms-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out;
}
Ako radis css3 efekte sa css-om radit ce na svim modernim browserima i IE 10+, ako radis sa jQuery-em animacije radit ce na svim browserima.
S druge strane css animacije imaju puno bolje performanse tako da ti je moj savjet ako su animacije samo “animacija radi” da to napravis sa css-om.