offsetHeight és offsetWidth
Üdv mindenkinek!
Van egy nagyon idegesítő problémám. Szóval csináltam magamnak kis lenyíló listákat JavaScript-tel. Olyanokat mint a HTML <select> eleme, de azért nem azzal mert az nem tetszett nekem.(Tudom hogy CSS-sel lehet alakítani azt is, de az se volt jó megoldás) Szóval alapvetően vannak gombjaim, melyekre kattintva előugranak ezek a listák. Ezeket a listákat előre beszúrtam a HTML dokumentumba csak a display értéküket CSS-ben "none" -ra állítottam ezért nem látszanak. A script azt csinálja, hogy megkeresi az x és y koordinátát ahonnan a lista gombja kezdődik és ahhoz viszonyítva (alatta) jeleníti meg a listát.(Ez azért jó, mert a gombokat akárhova áthelyezhetem a listák "követni fogják" őket). Nah ez volt a bemelegítő csak hogy tisztában legyen mindenki hogy miért kell nekem az ami kéne :-)
Szóval ezek a listák ugye position: absulute; - helyzetmegadásúak, hogy takarják az alattuk levő tartalmat. Egyébként hibátlanul működnek, ezekkel nincs baj. Viszont én szeretnék alájuk "árnyékot" is, hogy jobban nézzenek ki :-) És ezzel van a bajom. A listáimnak nincsen megadva a magasságuk és a szélességük, hanem csak akkorák amekkora a tartalmuk. Így ha azt megváltoztatom nem kell ezekkel az értékekkel bajlódnom. Az árnyékot úgy képzeltem el, hogy egy <div id='lista_arnyek'></div> elemmel valósítom meg, aminek a helyzete szintén position: absolute; lesz, és z-index értéke 1 -el kisebb lesz a listákénél, mivel alájuk kéne kerülnie. (és mondjuk szürke színű lesz de ez most lényegtelen) Idáig minden működik is, csak az a baj hogy a magasságát és a szélességét nem tudom hozzáigazítani a listák dinamikus magasságához és szélességéhez. Tudom hogy van az object.offsetHeight és offsetWidth tulajdonság de ezek sajnos 0 -át adnak vissza mikor lekérdezem velük a lista magasságát és szélességét, és azt nem értem hogy miért ? Ha valaki tudja a megoldást akkor szivesen várom, és a segítséget előre is köszönöm :-) (meg bocs a hosszú problémáért :D )
■ Van egy nagyon idegesítő problémám. Szóval csináltam magamnak kis lenyíló listákat JavaScript-tel. Olyanokat mint a HTML <select> eleme, de azért nem azzal mert az nem tetszett nekem.(Tudom hogy CSS-sel lehet alakítani azt is, de az se volt jó megoldás) Szóval alapvetően vannak gombjaim, melyekre kattintva előugranak ezek a listák. Ezeket a listákat előre beszúrtam a HTML dokumentumba csak a display értéküket CSS-ben "none" -ra állítottam ezért nem látszanak. A script azt csinálja, hogy megkeresi az x és y koordinátát ahonnan a lista gombja kezdődik és ahhoz viszonyítva (alatta) jeleníti meg a listát.(Ez azért jó, mert a gombokat akárhova áthelyezhetem a listák "követni fogják" őket). Nah ez volt a bemelegítő csak hogy tisztában legyen mindenki hogy miért kell nekem az ami kéne :-)
Szóval ezek a listák ugye position: absulute; - helyzetmegadásúak, hogy takarják az alattuk levő tartalmat. Egyébként hibátlanul működnek, ezekkel nincs baj. Viszont én szeretnék alájuk "árnyékot" is, hogy jobban nézzenek ki :-) És ezzel van a bajom. A listáimnak nincsen megadva a magasságuk és a szélességük, hanem csak akkorák amekkora a tartalmuk. Így ha azt megváltoztatom nem kell ezekkel az értékekkel bajlódnom. Az árnyékot úgy képzeltem el, hogy egy <div id='lista_arnyek'></div> elemmel valósítom meg, aminek a helyzete szintén position: absolute; lesz, és z-index értéke 1 -el kisebb lesz a listákénél, mivel alájuk kéne kerülnie. (és mondjuk szürke színű lesz de ez most lényegtelen) Idáig minden működik is, csak az a baj hogy a magasságát és a szélességét nem tudom hozzáigazítani a listák dinamikus magasságához és szélességéhez. Tudom hogy van az object.offsetHeight és offsetWidth tulajdonság de ezek sajnos 0 -át adnak vissza mikor lekérdezem velük a lista magasságát és szélességét, és azt nem értem hogy miért ? Ha valaki tudja a megoldást akkor szivesen várom, és a segítséget előre is köszönöm :-) (meg bocs a hosszú problémáért :D )
google?
offsets are figured from the rendered size of an element- the space it takes up in the browser window. If the display is none, it has no offset size, or 0.
ha nem ez a problémád akkor bemásolhatnál valami kódot/linket.
Position: relative
positition: relative
, és az elemeket ahhoz képest rakodpositition: absolute
-ba. A szélességet, és magasságot pedigouterWidth
ésouterHeight
és nemoffsetWidth
/offsetHeight
tulajdonságokat kell lekérdenzi.lehet hogy nem jquery
Igaz
offsetWidth
ésoffsetHeight
lehet a megoldás a megfelelő DOM elemre. De persze ez csak látható elemekre működik.Igen..
Edit : És valóban !
Ott a pont az első HSZ - nél :-) Tényleg az volt a baj hogy mielőtt block -ra állítottam a display-t, az előtt kérdeztem le az értékeket. :-) Egyébként köszönöm szépen a segítséget mindenkinek.