ugrás a tartalomhoz

javascript slider menu

mr.anonymous · 2011. Júl. 31. (V), 11.49
Sziasztok!

Az alabbi kerdessel fordulok hozzatok, mivel nem vagyok tul jartas javascriptben:
-javascripttel kene egy slidert megoldanom, viszont nem tudom, merre induljak el.
-jquery nem jatszik!!! :(

Amit tudok, hogy kellhet, de javitsatok ki, ha rosszul gondolom:
- egy css div, ami abszolut pozicioban van. Tehat ez lenne a keret, ami eltakar.
- Mellette felsorolva legyenek a tobbi divek a tartalommal. De hogy? display none?

Ket nyil, mely onmouseover/out ill. onclick esemenyre csinalna meg a mozgatast.
Mondjuk onmouseover-re a belso ido szamlalojat felgyorsitana, es igy uszna be a kovetkezo div. Onclickre pedig egybol valtana a kovetkezo div-re. Az meg csak plussz pont, ha az aktualis megjelenitett divhez kepest az elozo es a kovetkezo divbol belog egy kis resz.

Most kicsit utananeztem, nekem egy pontosan ilyet kene leprogramoznom: http://css-tricks.com/examples/MovingBoxes/

Arra a kinagyulasra feltetlenul nincs szuksegem. Kerlek segitsetek elindulnom valamerre, mert tanacstalan vagyok. Koszonom.

udv:
Anonym.
 
1

Miért

Poetro · 2011. Júl. 31. (V), 12.18
Miért nem játszik a jQuery? Ha valami más keretrendszert használsz, akkor mi az? Ez azért elég nagy feladat, hogy valaki pusziért megcsinálja neked, főleg ha NEKED kellene megvalósítani. Valamilyen keretrendszer mindenképp jól fog jönni, legalább az események kezelésére és az animációra. Érdemes a Carousel szóra keresni, szerintem azzal jobb találatokat fogsz kapni a témára.

De ahogy én csinálnám:

Egy doboz, ami overflow: hidden. Abban van egy lista (OL ill. UL, kinek mi a szimpatikus, amiben vannak a képek). A listának adnék egy megfelelően nagy szélességet, mondjuk 32000px, így tutira nem fognak több sorba törni benne a képek. Az LI elemeket pedig float: left-tel pakolnám benne egymás mellé, megfelelő margin-t illetve padding-ot választva. Az egész listát úgy pozicionálnám (position: absolute), hogy az előző és a következő képből látszon még valamennyi. Ezek után a gombok megnyomására az egész elmozdulna (left CSS tulajdonság) annyi pixelt (természetesen valamilyen animáció keretei között), hogy a következő kép legyen a középpontban (ekkor jó szolgálatot tehet, ha minden LI ugyanolyan széles).

Arra a kinagyulasra feltetlenul nincs szuksegem.

Ezek szerint egyáltalán nem kell, vagy nem feltétlenül kell?
3

Poetro, koszonom az eddigi

mr.anonymous · 2011. Júl. 31. (V), 13.54
Poetro, koszonom az eddigi valaszodat!
En nem azt kertem, hogy valaki irja meg helyettem, hanem hogy valaki segitsen. Pl A Te leirasod alapjan a css-t tok frankon osszeraktam, es koszonom is! Most probalkozok az animacioval. Ehhez tudsz esetleg mondani olyan fuggvenyt, ami kelleni fog? A bajom az, hogy js-ben nagyon nem vagyok otthon, ezert is kertem + feladatot, hogy tanulak belole. Gugliban szamomra normalis tutorial nem volt, magamtol jo par oran keresztul nem tudtam elindulni, ezert fordultam hozzatok.

jQuery-t es mas js frameworkot nem hasznalunk itt a cegnel, igy beszeltuk meg, csupan elvi okai vannak. Kerlek, most ne menjunk bele a reszletekbe. ( en azzal csinaltam volna meg es mar reg kesz lennek vele es soroznek.... :))
7

Émile

Poetro · 2011. Júl. 31. (V), 14.50
Használd az Émile nevű animációs keretrendszert, vagy legalább olvad el a forrását. Csak 51 sor az egész.

És kérlek áruld el, milyen elvi okok vezetnek ahhoz, hogy nem használtok keretrendszert. Magatokat szeretitek szívatni?
8

Atnezem, koszi. Igy

mr.anonymous · 2011. Júl. 31. (V), 15.01
Atnezem, koszi.

Igy dontottek a cegnel, hogy sajat kodot hasznalunk, mert azt teljesen ismerjuk, es ha kell turkalni benne ( ami eleg gyakori, mondvan a vezetoseg kitalal mindig valami ujat ) akkor egyszerubb a modositasa, kevesebb programsorbol all, es nyilvan ismered a sajat kododat. Valahol van benne igazsag.
4

így tutira nem fognak több

H.Z. v2 · 2011. Júl. 31. (V), 14.02
így tutira nem fognak több sorba törni benne a képek.

Eszerint feleslegesen keresgélek, nincs rá kulturált módszer, hogy minden kép egy sorba kerüljön?
Vagy ez, vagy táblázat egy sorral?
5

ezt ide akartad irni? Amugy

mr.anonymous · 2011. Júl. 31. (V), 14.07
ezt ide akartad irni? Amugy keret szelesseg es abban kepekre float left nem segit?
6

Miután Poetro hozzászólásából

H.Z. v2 · 2011. Júl. 31. (V), 14.10
Miután Poetro hozzászólásából idéztem...
9

white-space: nowrap

pkadam · 2011. Júl. 31. (V), 16.53
Nálam a white-space: nowrap használata a CSS-ben tökéletesen megoldja a problémát, amennyiben a float: left nem szükségszerű.
10

Hm. Köszi, erre nem

H.Z. v2 · 2011. Júl. 31. (V), 16.58
Hm. Köszi, erre nem gondoltam... egyre a positioning/floating/layout témákban keresgéltem
2

Olvasd el a példához tartozó cikket

Kevlar · 2011. Júl. 31. (V), 13.21
És ha elolvasod a cikket?
http://css-tricks.com/2223-moving-boxes/

Letötlheted a fileokat és átalakíthatod. Igaz ez jQuery, de azt nem tudtuk meg, hogy miért "nem jatszik".
11

A feladvány kapcsán volt egy

H.Z. v2 · 2011. Aug. 1. (H), 15.05
A feladvány kapcsán volt egy ötletem, de rájöttem, meghaladja a tudásomat a kivitelezése:
Ha jól értem, a feladat annyi, hogy néhány képet kell megjeleníteni egy csíkban úgy, hogy mozgatni lehessen diafilmszerűen a csíkot.
Úgy képzeltem a kivitelezést, hogy egy külső div fix szélességgel, overflow:hidden attribútummal, benne egy másik div, ami az összes képet tartalmazza, ezért jóval szélesebb, mint a külső. Ennek a belsőnek a relatív pozícióját javascript-ből állítgatnám (hogy mi váltaná ki a pozíció változtatását - kattintás v. csak az egér kurzor megfelelő elem fölé állítása - az most mellékes).

Ez eddig tetszik v. eleve hibás valahol az elmélet?
Ha tetszik, akkor itt a buktató: fogalmam sincs, hogyan lehetne a css-ben megadott poziciót növelni/csökkenteni úgy, hogy az kulturáltnak legyen nevezhető.
Ugyanis az elem.style.left értékét kellene változtatni, de ez string és az aktuális érték mögé oda kell írni a mértékegységét is (pl. elem.style.left="-200px").
Ráadásul, ha nem javascriptből állítom be, akkor nekem null stringet ad vissza a fenti attribútum lekérdezése... :-(

Persze lehet, hogy csak a maximalizmusom áldozata vagyok, mert nem akarok olyan megoldást, hogy kiveszem a style.left értékét, lecsapom a végéről a px-t, növelem/csökkentem valamennyivel, a kapott értékhez hozzácsapom a px-t és visszaírom.


Update: kicsit gányolva bár, de csak összehoztam! :-)
Íme a nagy mű!
Ha szépen megkérem a tisztelt errejárókat, megköpködnétek az alkotásomat? :-)
Ami biztos: FF3.6 és IE9 alatt működni látszik, IE9 compatibility módban biztosan nem megy, ez biztosan hiba, de nem volt türelmem (se tudásom egyelőre), hogy ilyen szinten rendbe tegyem.