News & Blog

CSS trükkök – Sorszámozatlan lista másképp

News & Blog

Az alábbi sorszámozatlan lista CSS formázás alapötletét a CSS trükkök oldalon találtam: link Kicsit átalakítva, lépésről lépésre kerül bemutatásra a lista formázása. Végeredményben egy, a könyvtárak és állományok listázásához hasonlító elrendezéshez fogunk jutni, ahogyan ezt az alábbi linken megnézhetjük:

Induljunk ki egy teljesen átlagos sorszámozatlan listából. A listaelemek egy-egy (jelenleg sehová nem mutató) hivatkozást tartalmaznak, és hogy érdekes legyen, az egyik listaelemben egy újabb sorszámozatlan listát helyeztünk el.

A továbbiakban kizárólag a CSS stílusokat írjuk le. Annak érdekében, hogy követhetőbb legyen a formázás logikája, minden új stílusnál az előzőeket is feltüntetjük. Az újonnan létrehozott stílusokat mindig a végéhez illesztjük, de többször fogjuk módosítani a már meglévőket is.  

Első lépésben tüntessük el a listaelemek elől a jelölőket. Ez megtörténik a kiinduló listára, és minden <ul> utódjára is.

#hwlist, #hwlist ul {list-style: none;}

Ezután nullázzuk le az egyes listaelemek alapértelmezett behúzását, a későbbiekben a nekünk megfelelő módon fogjuk ezeket majd beállítani:

#hwlist, #hwlist ul {list-style: none; margin: 0px; padding: 0px;}

Jól néz ki, ha az első szintű listaelemek után nagyobb térközt hagyunk (a margó méretét megnöveljük), és a betűméretüket is nagyobbra állítjuk. 

#hwlist, #hwlist ul {list-style: none; margin: 0px; padding: 0px;}
#hwlist>li {margin-bottom:15px;font-size: 20px} 

Ha megnézzük az eredményét, a távolság beállítása rendben megtörtént, de a betűméret mindenhol megnőtt az öröklődés miatt. Állítsuk vissza az alsóbb szintűek betűméretét:

#hwlist, #hwlist ul {list-style: none; margin: 0px; padding: 0px;}
#hwlist>li {margin-bottom:15px;font-size: 20px}
#hwlist>li li {font-size: 16px}

Most, hogy a betűmérettel és a távolságokkal rendben vagyunk, kódoljuk le a behúzásokat. Ehhez a sorszámozott listákat (vagyis az <ul> tag-ek) baloldali padding értékét módosítjuk.

#hwlist, #hwlist ul {list-style: none; margin: 0px; padding: 0px;}
#hwlist>li {margin-bottom:15px; font-size: 20px;}
#hwlist>li li {font-size: 16px; padding-left:20px;}

Most már egészen jól néz ki a lista, csupán a függőleges és vízszintes vonalakat kell valahogyan megoldanunk. Ehhez egy trükköt vetünk be: Egy összesen 1 pixelből álló képet a függőleges vonalnál y irányban, a vízszintes vonalnál x irányban ismétlünk meg az <ul> elemek háttérképeként. (Ezt megtesszük mind a legfelső szintű <ul> elemnél, mind az utódainál.) Egy kis kozmetikázás után már hamar elérjük a kívánt végeredményünket. Kezdjük a függőleges vonalakkal. A pixel.png ismételjük y irányban, és baloldalról 5 pixellel behúzzuk. Emiatt a vonal az első betű alatt fog középtájon kezdődni.

#hwlist, #hwlist ul {list-style: none; margin: 0px; padding: 0px; background: url("pixel.png") repeat-y 5px;}
#hwlist>li {margin-bottom:15px; font-size: 20px;}
#hwlist>li li {font-size: 16px; padding-left:20px;}

Ha megnézzük az eredményt azt látjuk, hogy a vonal kettémetszi az kezdőbetűket. Ennek megakadályozására a hivatkozások háttérszínét fehérre állítjuk, és így kitakarjuk a háttérkép vonalat. Ha már a hivatkozásokat formázzuk, levesszük róluk az aláhúzást, és beállítjuk a színeit. Ehhez 2 stílust is definiálnunk kell.

#hwlist, #hwlist ul {list-style: none; margin: 0px; padding: 0px; background: url("pixel.png") repeat-y 5px;}
#hwlist>li {margin-bottom:15px; font-size: 20px;}
#hwlist>li li {font-size: 16px; padding-left:20px;}                
#hwlist a {background:white; text-decoration: none; color:#725b00;}
#hwlist a:hover {color:#bc9b05;}

Most húzzuk meg a vízszintes vonalakt. Ehhez az első szintű listaelemek utód listaelemeinél (tehát az első szintűeknél nem, ott nincsen vízszintes vonal) a háttérképnél x irányban ismételve helyezzük el az egyetlen pixelből álló háttérképünket y irányban 8 pixellel lefelé eltolva (annak érdekében, hogy a sorok közepénél kezdődjenek a vonalak).

#hwlist, #hwlist ul {list-style: none; margin: 0px; padding: 0px; background: url("pixel.png") repeat-y 5px;}
#hwlist>li {margin-bottom:15px; font-size: 20px;}
#hwlist>li li {font-size: 16px; padding-left:20px; background: url(pixel.png) repeat-x 0 8px;}                
#hwlist a {background:white; text-decoration: none; color:#725b00;}
#hwlist a:hover {color:#bc9b05;}

Nem lehetünk elégedettek a végeredménnyel, mivel a vonal túl korán kezdődik, és ráadásul folytatódik a hivatkozások szövege után is. Ez utóbbi megakadályozásához a hivatkozásokat blokk szintű elemekké kell alakítanunk:

#hwlist, #hwlist ul {list-style: none; margin: 0px; padding: 0px; background: url("pixel.png") repeat-y 5px;}
#hwlist>li {margin-bottom:15px; font-size: 20px;}
#hwlist>li li {font-size: 16px; padding-left:20px; background: url(pixel.png) repeat-x 0 8px;}            
#hwlist a {background:white; text-decoration: none; color:#725b00; display:block;}
#hwlist a:hover {color:#bc9b05;}

Még a vízszintes vonalunkat kell megfelelően pozicionálnunk a baloldali margójának állításával:

#hwlist, #hwlist ul {list-style: none; margin: 0px; padding: 0px; background: url("pixel.png") repeat-y 5px;}
#hwlist>li {margin-bottom:15px; font-size: 20px;}
#hwlist>li li {font-size: 16px; padding-left:20px; background: url(pixel.png) repeat-x 0 8px; margin-left: 6px;}                
#hwlist a {background:white; text-decoration: none; color:#725b00; display:block;}
#hwlist a:hover {color:#bc9b05;}

Készen is vagyunk.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük