overflow, relative, z-index nyalánkság
Sziasztok
Túl hosszú idő múlva megint elővettem a css-t, és ebbe a problémába ütköztem:
Az oldalon adottak linkek, de néhány link túl hosszú ahoz, hogy beleférjen abba az oszlopba, ami én szeretném, ezért úgy döntöttem, hogy tördelés helyett egyszerűen csak levágom ott a végüket. amikor a felhasználó a hivatkozás fölé vinné az egeret, a szöveg teljes egészében megjelenne, egy sárgás háttérszínnel.
Itt akadtam el: z-index és absolute párosítás már majdnem ok, de akkor a link alatti szöveg egy sorral feljebb ugrik. relative pedig nem ugrik elő. overflox-x/y-nal ff alatt azt sikerült elérnem, hogy megjelent egy görgetősáv.
Egyik kérdésem a konkrét megoldásra vonatkozik, érdekelnének a böngészőfüggetlen megoldások, és hogy ti milyen hasonló problémával találkoztatok.
Másik kérdésem az, hogy egyáltalán illik csak úgy levágni egy szöveg felét?
A kódom nagyon leegyszerűsítve így néz ki:Válaszaitokat, ötleteiteket várom!
zp
■ Túl hosszú idő múlva megint elővettem a css-t, és ebbe a problémába ütköztem:
Az oldalon adottak linkek, de néhány link túl hosszú ahoz, hogy beleférjen abba az oszlopba, ami én szeretném, ezért úgy döntöttem, hogy tördelés helyett egyszerűen csak levágom ott a végüket. amikor a felhasználó a hivatkozás fölé vinné az egeret, a szöveg teljes egészében megjelenne, egy sárgás háttérszínnel.
Itt akadtam el: z-index és absolute párosítás már majdnem ok, de akkor a link alatti szöveg egy sorral feljebb ugrik. relative pedig nem ugrik elő. overflox-x/y-nal ff alatt azt sikerült elérnem, hogy megjelent egy görgetősáv.
Egyik kérdésem a konkrét megoldásra vonatkozik, érdekelnének a böngészőfüggetlen megoldások, és hogy ti milyen hasonló problémával találkoztatok.
Másik kérdésem az, hogy egyáltalán illik csak úgy levágni egy szöveg felét?
A kódom nagyon leegyszerűsítve így néz ki:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style>
div#Wrapper1 {
width: 180px;
overflow: hidden;
background-color: yellow;
}
div#Wrapper2 {
width: 180px;
overflow: hidden;
background-color: #ddd;
}
a.overlay {
white-space: pre;
background-color: transparent;
}
a.overlay:hover {
white-space: pre;
background-color: #ffd;
}
</style>
</head>
<body>
<div id="Wrapper1">
<div id="Wrapper2">
<ul>
<li>
<a class="overlay">Ez egy link. A link vége kilóg a dobozból. Hover esetén azonban megjelenne a kilógó tartalom.</a>
</li>
<li>
<a class="overlay">Lorem ipsum dolor sit amet consectetuer adipising elit. pr..</a>
</li>
</ul>
</div>
</div>
</body>
</html>
zp
MIt szabad használni?
én ...-oznám a linkek végét, és javascriptel raknék föléjük egy ablakot a hover (onmouseover) -ra. (persze a title tulajdonságot is használhatnád, ha nem túl láma :-)). Ez ie alatt is működik.
FF alatt van olyan lehetőség, hogy
<a class=overlay">Blabalbalbalbalb<span>Nemláthatóbalbalbalblab</span></a>
a.overlay:hover span {
visibility:visible;
position:absolute
pozicionálás;
stb;
}
igazából én is akadtam ilyen hibába, és ha jól emlékszem a két külső div a ludas és az overflow, de már nem emlékszem biztosan, azt tudom, hogy ráhagytam, és megcsináltam javascriptel :-)
FF alatt egyébként működött puszta css-el is.
Csak css-t :)
Javascripttel tényleg egyszerűbb lenne, de az oldalt (csak hobbi) olyan gyönyörűen sikerült megoldanom különösebb js hackek nélkül, hogy nem szeretnék belerondítani. Csak azon aggódom megint, hogy ha a látogatónak nincs javascriptje bekapcsolva (jó, persze, miért ne lenne..), akkor csak egy randa, vagdosott oldalt fog kapni. És ez az, ami az eddigi kódolási stílusommal nem összeegyeztethető :)
Az ötleteket nagyon köszönöm, a title sem rossz ötlet szerintem, a többit még megnézem.
Én is én is!
Pár dolgot leírok, de biztos tudod:
a relative css position-hoz fog viszonyulni az absolute. Ha a div a relative, akkor ahhoz, ha nics,akkor a bodihoz. Egyszer csináltam olyat, hogy tooltipként jelenítettem meg egy span-t, ahogy az előbb is leírtam. Azt is ki lehet próbálni, az tuti műkszik (standard browserek alatt tehát nem ie :))hogy a menüsorod alatt vagy felett vagy mellett kiírod mindig a hiányzó részt pozicionálva.
ja, a spannak display:block, az fontos. és az a-nak is, ha így pozícionálni szeretnéd. (mindkettő inline elem)
OK, köszönöm
Ja és még annyi...
téma
Re: téma
Köszönöm a kódot, már tanulmányozom :-)
Sajnos az én kódkörnyezetembe sehogyan sem fér bele. Nálam a szemantika (valójában design;-) miatt van több wrapper. Bonyolultabban így néz ki:
hát akkor itt van
Nyilvánvalóan csak olyan stratégiát lehet követni, ahol hover eseményre a kilógó elem stílusát változtatjuk. (A konténerével nincs mit csinálnunk, hiszen olyan eseményt nem tudunk elkapni, hogy egy 'elem gyermeke hovert kapott', és itt nem is lenne értelme, hiszen a többi link is hirtelen kilátszódna.)
Marad tehát a link elem stilizálása. Nagyon helyesen beállítottad, hogy a white-space: pre-vel gátolható meg a törés. Mivel, mint írtuk, a konténerhez nem nyúlhatunk, ezért a konténert fel kell készíteni, hogy hoverra megjelenjen a link, azaz a konténer overflow-ját visible-re kell állítani. Ahhoz, hogy ilyen körülmények között alapesetben a link mégis vágva legyen, magán a linken kell beállítani a vágást: display: block, overflow: hidden és egy szélességérték (mondjuk 100%). Hover alatt csak a vágás szabályait kell visszaállítani, azaz: width: auto és display: inline. (A width: auto után nincs overflow, úgyhogy azt fölösleges.)
Szerk: Még annyit, hogy az overflow-értékek öröklődnek, így a #zpBody-ra rakott overflow: hidden kétszeresen is bukta. Egyrészt nem lehet felülbírálni, másrészt leöröklődött.
Másik módszer is
Közben elindultam egy másik irányban is. Úgy csináltam, hogy a li-k állandó magasságot kaptak, így tartották a sortávolságot akkor is, amikor a link abszulút pozíciót kapott.
Ha sikerül, akkor paste-eld már be, hadd tanuljak én is.
Ok
Egyik only firefox megoldás
És van egy másik megoldásom is, ott a css clip tulajdonságot használom.. Szerintetek ezt hogyan lehetne böngészőfüggetleníteni? Lehet?
Eszembe jutott!
Na megoldottam
Kifejtenéd bővebben?
ne haragudj, de röviden összefoglalva nem érzem a kódod tisztaságát, van egy kis gány szaga. Nem hiszem, hogy jó ötlet soronként új osztályokat bevezetni, mint ahogy annak sem látom értelmét, hogy változó szélességű szövegnek fix szélességet adjak. A html kód szemantikájának felborításáért sem vagyok oda, és ezek azok a dolgok, amiket eddig el akartam kerülni. Ne feledd, hogy a css a html-ért van, és nem fordítva!
De ha mégis tévednék, vagy félreértem, amit írsz, javítsatok ki!
Pontosan hol láthatom a működő példádat?
Válaszod várom,
zp
Míg ie lesz, gány szag lesz :-)
Én sem hiszem. Ha nem akarod ie meg firefox alatt használni, akkor van ilyen selector a:nth-child(1) pl az első link. Konqueror alatt működik is tudtommal. Viszont az elején azt írtad, hogy absolute positioning-al akarod megcsinálni, akkor a beálítandó top érték miatt szerintem nincs más választásunk.
ez is igaz. Akkor csináljuk talán a max-width tulajdonsággal (ie6 még nem tudja :-)
Hát, mondjuk egy adatbázis készítő és építő alkalmazásnál, vagy egy levelezőprogramnál tényleg így van, mert ott nem a szépségéért használod. Viszont szerintem ha valami különleges dolgot el akarsz érni (és mindenáron el akarod) akkor szükség van extra markupra, bármilyen csúnyán hangzik is.
Na mindegy nem akarok okoskodni, (de már azt csinálom :-)) lényeg az, hogy megpróbáltam egy absolute positioned menüt eszkábálni, amit a fenti linken meg is nézhetsz (bár még nem működik, és tényleg gány :-)) De ha firebug alatt megnézed a css-ét a <div>-nek meg az <ul>-nek melyek a menüsort foglalják magukba (szemantika éljen :-) meg megnézed az <a>-k css kódját, akkor láthatod hogy van megoldva, ez is egy lehetőség :)
Majdnem tökéletes
időközben elkészült egy használható változat. Szerencsére a fentebb említett hackeket nem kellett használnom (de azért nem kell komolyan venni minden okoskodást, amit írok ;-) Sajnos a kód azonban tele van fölösleges elemekkel, úgyhogy holnap még letisztítom, majd beküldöm.
Jó éjszakát kívánok!
EDIT: elnézéseteket kérem, még nem tökéletes, és technikai nehézségek is akadtak.
EDIT: ...