CSS alapjai III.
A cikksorozat harmadik részében folytatjuk a CSS bemutatását, további kiválasztókat fogunk áttekinteni. Fontosnak tartom továbbra is kihangsúlyozni, hogy a szabványt nézzük végig, és nagyon könnyen előfordulhat, hogy nem minden böngésző tudja kezelni az ismertetett megoldásokat. Ez különös tekintettel igaz az ebben a cikkben bemutatandókra. A teljes böngésző támogatás hiánya azonban továbbra sem akadályozza meg olvasóinkat abban, hogy az ilyen kiválasztókat használó megoldásokat vezessenek be extraként oldalaikon. Csak az a fontos, hogy ne ezen múljon az oldal használhatósága.
Az első sor semmi különöset nem tartalmaz, egy Az első sorban itt sem tettünk semmi különöset, a beviteli mezők tulajdonságait határoztuk meg. A második sorban levő Így az adott betű, vagy az adott sor teljesen úgy fog viselkedni, mintha osztály alapú kiválasztással, például egy Fontos megjegyeznünk, hogy ha a A különbség a két kiválasztó között, hogy ez utóbbi egy táblázatban levő bekezdés elemekre is illeszkedik, míg az előző csak a közvetlenül a Ha a dokumentumunk Ezzel a dokumentumunkban láthatóvá válnak a
■ A sorozatban megjelent
További kiválasztók
A korábbiakban megismerkedtünk az elem, osztály, azonosító és tulajdonság alapú, továbbá a helyzetérzékeny és szülő-gyermek kapcsolatú kiválasztókkal. Ezek azok a kiválasztók, melyek kézzelfogható blokkokat jelölnek ki: egy-egy elemet annak paraméterként rögzített tulajdonságaitól függően. Ezeken túl azonban léteznek az úgynevezett látszólagos (virtuális) kiválasztók is, melyek vagy az adott elem egy részére illenek (látszólagos elemek), vagy az adott elem állapotától teszik függővé a kiválasztást (látszólagos osztályok). Ebben a részben ezeket fogjuk áttekinteni.Linkekkel kapcsolatos látszólagos kiválasztók
Aki már egy kicsit is foglalkozott HTML-lel, készített, vagy egyszerűen csak látogatott már weboldalakat, biztosan tudja, hogy a linkek más-más színnel jelennek meg, ha már voltunk az általuk mutatott oldalon, illetve ha még nem. Ezekre a színekre a HTML-ből, abody
elem tulajdonságainak (link
, vlink
) állításával is hatással lehetünk, azonban CSS-t használva, sokkal több lehetőségünk lesz. Látszólagos kiválasztókkal ugyanis külön-külön meghatározhatjuk a megjelenésüket! Ezeket a kiválasztókat a következőképpen használhatjuk:a { color: #0000FF; text-decoration: underline; }
a:link { text-decoration: none; }
a:visited { font-style: italic; }
link
elemnek határozzuk meg a stílusát. A második sorban azokat a linkeket választjuk ki, melyeket még nem látogattunk meg, a harmadik sorban pedig azokat, melyeket már meglátogattunk (nemrég). A két tulajdonság értelemszerűen kizárja egymást.Dinamikus látszólagos kiválasztók
A HTML dokumentumokat az ember nem szokta egy ültő helyében elolvasni, majd otthagyni. Az egész lényege valahol a dinamizmus: linkekre kattingatunk, adott esetben form elemeket használunk, stb. Az internet már interaktív média, és erre a CSS-t is felkészítették. No, nem kell bonyolult dolgokra gondolni, az eszköztárunk a következő lehetőségeket tartalmazza: az egérkurzor az adott elem felett van, az adott elem éppen aktív, továbbá ha az adott elem éppen fókuszban van.input { font-size: 12px; border: 1px solid #000000; background: #ffffff; }
input:hover { border: 1px solid #0000FF; }
input:active { font-weight: bold; }
input:focus { background: #dddddd; }
:hover
kiválasztó akkor fog működni, ha az adott mező felé visszük az egérkurzort, ekkor kék színnel jelenik meg a kerete. A harmadik sorban azt határozzuk meg, miként jelenjenek meg az aktívelemek. Hogy mit értünk aktív elemen? Azt, amelyikkel éppen csinálunk valamit. Például "megragadjuk", azaz lenyomva tartjuk az egérkurzort, vagy éppen lenyomunk egy gombot, stb. Példánkban ilyenkor az elem betűi vastaggá válnak. Végül a negyedik sorban azt definiáljuk, mi történjen, mikor éppen ki van választva az elemünk, rajta van a fókusz, ebben az esetben éppen a kurzor villog az input mezőnkben. Ehhez a
:focus
kiválasztóhoz rendelt tulajdonságunkkal éppen azt határoztuk meg, hogy a háttérszíne legyen világosszürke. Fontos megjegyezni, hogy bár a példában éppen beviteli mezőt láttunk, de ez a tulajdonság például a linkekre ugyanúgy működik, mint a közönséges bekezdésekre, vagy más elemre!Elemszerű látszólagos kiválasztók
A CSS lehetőséget biztosít kiválasztanunk egy-egy elem tartalmának csak bizonyos részeit, mintha azok külön-külön definiált elemek lennének. Ezekkel a látszólagos kiválasztókkal az adott elem első karakterét, vagy akár az első sorát is kiválaszthatjuk.p:first-letter { font-size: 300%; }
p:first-line { color: #000080; }
div
vagy egy span
elemmel határoltuk volna. A példa első sora egy bekezdés első betűjének kiválasztását (3-szor nagyobb lesz, mint a bekezdés többi betűje), míg a második sor egy bekezdés első sorának (sötétkék színű lesz) kiválasztását mutatja be.Első gyermek látszólagos kiválasztó
További lehetőségünk egy adott gyermek elemről eldöntenünk, hogy első-e a sorban. Azaz például ha abody
elemen belül szeretnénk, hogy az első (bevezető) bekezdésünk vastagon legyen szedve, a first-child
látszólagos osztály kiválasztó ad nekünk lehetőséget erre:body > p:first-child { font-weight: bold; }
body
dokumentumunkban az első bekezdésünk előtt van egy másik elem (például h1
), akkor ez a kiválasztás már nem működik. Azaz nem az első bekezdés elemet, hanem az első bekezdést, amennyiben az az első gyermek elem is, választja ki ez a kiválasztó. Természetesen a következő definíció is elégséges lett volna:p:first-child { font-weight: bold; }
body
-ban levőkre.Nyelv szerinti látszólagos kiválasztó
A HTML-ben, de más leíró nyelveknél is, lehetőségünk van meghatározni hogy milyen nyelven íródott az adott dokumentum (HTML-nélmeta
elem a fejlécben), vagy adott elemekre is külön definiálhatjuk ezeket. A CSS biztosít számunkra erre is kiválasztót. Hogy a gyakorlatban mire jó ez (amellett, hogy az angol szavakat pirossal, a németeket kékkel, stb. írhatjuk), egyetlen épkézláb példát találtam, meg lehet határozni a segítségével, hogy milyen idézőjelek szerepeljenek a dokumentumban. Ehhez egy speciális tulajdonság elemet használatunk fel, a quote
-ot. Íme:
:lang(hu) > q { quotes: '\201E' '\201D' }
:lang(en) > q { quotes: '"' '"' }
Content-Language
értéke hu
, azaz magyar nyelvű dokumentumról van szó, akkor az idézőjelek alul és felül jelennek meg, míg angol nyelvű dokumentumok esetén mind a kettő felül - ha q
elemet használunk az idézésekhez. Elem előtt és után...
Végezetül lássuk a:before
és :after
kiválasztókat. Ezek segítségével az adott elem előtti és mögötti látszólagos részeket választjuk ki (fontos: nem az előtte levő elemeket, hanem az elem és az előtte levő elem közötti 0 hosszúságú részt). Több trükköt is meg lehet vele valósítani, egy egyszerű, de nagyszerű például:b:before { content: '<b>'; }
b:after { content: '</b>'; }
b
elemeink, "mintha" a HTML forrást néznénk.
elavult html példa
A linkeknél jobb mindig megadni a :link kiválasztot mert az
a {}
szabály az oldalon belüli nevesített ugró pontokra is vonatkozik.
Ha valaki probálgatni akarja ezeket a tulajdonságokat akkor IE-t elfeljtheti mert szinte nem támogat ezek közül semmit.
Re: elavult html példa
Ha a linknél megadod a
:link
kiválasztót, akkor az:active
kiválsztót is le kell írnod, nem? Szerencsésebb inkábba[href]
formában hivatkozni talán a linkekre.Az IE sajnos tényleg nem támogatja ezeket... Az IE7 kiegészítővel, vagy Gyuris Gellért oldalán levő HTC-kkel lehet azonban ezeket is használni.
-boogie-
Hibajelentés
Nem kötözködni akarok, csak van egy (tényleg!) kis megjelenítési gond.
Az egész cikk az impresszum alá csúszik, ott kezdődik. A hiba valószínű oka: az egyik példasor, ami gondolm preformatált, túl széles, nem fér be a main contentbe, ezért a szélessége miatt, az oldal legalján kezdődik (xp, explorer, 1024). Nem tudom, standard böngészőben mit csinál, mindegy, a felvetésem, hogy a sort törd meg, hogy ne legyen olyan széles. Ez a bűnös:
input { font-size: 12px; border: 1px solid #000000; background: #ffffff; }
bye
Ki a bűnös?
Zorius: inkább azt írd meg, hogy css-ben mit állítsanak át, hogy helyesen jelenjen meg a két-három évvel ezelőtti böngészőkön is. :D
Hiba
Amúgy már volt egy-két vitánk a srácokkal, szóval nem akarom már őket cseszegetni ilyenek miatt. Ez egy apró, könnyen javítható hibácska lenne csak...
Nem ott van a hiba
Biztos? ;-)
Jo bogaraszast, majd torom en is a fejem.
Poen
Ez tok jo, tetszik. Azert vannak egesz jo otletek es megvalositasok itt, kezd megtetszeni az oldal...
Ki is probalom
Örülök
Megjelenési probléma
Firefox alatt tökéletes a cikk, de IE alatt egy pillanatra feltűnik a helyén, utána a jobb oldali oszlop alatt kezd megjelenni.
:-) TJoe
Nekem is jo opera, firefox, m
--
üdv: kmm...
azokat a hibakat amik vannak
--
üdv: kmm...
Táblázatok css-el
Megoldható css-el, hogy pl. egy 500 soros táblázat 3. oszlopát középre, 4. oszlopát pedig jobbra igazítsuk?
Ez dreamweaver-rel összesen négy kattintás, viszont ilyen méretű táblázatnál már +33 kb kódot jelent és a 4000+ soros kódokat már egy 1,6 GHz gépen is nehézkesen kezeli a DW.
Kitaláltam, hogy legyen az egyik oszlop h5 a másik h6, amelyek tulajdonságait felülbírálom a css-ben, de ez nem tűnik túl kúltúráltnak és persze olyan megoldást keresek, ami IE 5-ön is működik.
Re: Táblázatok css-el
Igen, megoldható, de nem lesz sokkal takarékosabb - mindegyik cellának be kell állítani egy osztályt. A legrövidebb megoldás:
class="c"
,class="r"
, a sima HTML-es ugyealign="center"
ésalign="right"
lenne. Ezután még persze be kell állítani ennek a két osztálynak a stílusát, de az már elenyésző.Ilyen méretek esetén megfontolandó az egészet JS-ből állítgatni, írni egy kis kódot, ami végigmegy a táblázaton, és beállítja az igazítást. Elég sokat tudsz vele spórolni.
-boogie-
col, colgroup
Azonban a stilus definiciok kozul csak nehanyat lehet hasznalni.
Tudni kell, hogy ezek specialis elemek hiszen valojaban a cellak a soroknak a gyermek elemei es a COL vagyis oszlop igy nem jelenik meg a dokumentum faban.
IE alatt szepen megy az igazitas, FireFox alatt nem.
Itt olvashatsz errol többet:
<col> in Mozilla
Mi lehet a content tulajdonság?
Sokminden
Amit a hozzászólásodban írsz formátumot, az két dolog miatt is rossz. Egyrészt a
content
után kettőspont kell, másrészt pedig ha aposztrófok közé teszel valamit, akkor az bizony "string" lesz, s ennek megfelelően meg fog jelenni. A helyes:Dinamikus látszólagos kiválasztók példa
A fenti példában szerintem találtam egy apró hibát, mely a következő:
input:active { font-style: bold; }
A font-style tulajdonságnak nem lehet bold értéke.
Helyesen:
input:active { font-weight: bold; }
vagy
input:active { font-style: italic; }
üdvözlettel: jpeter
Jogos
-boogie-
Kép link-ként
előző óra
látszólagos kiválasztók
Pl. olyat lehet csinálni hogy ha ráviszem az egeret a linkre azaz :hover
akkor tegyen elé > mögé pedig < jelet azaz :before és :after ?
Remélem nem kérdeztem nagy butaságot.
JS megoldás nem érdekel, mindenképpen CSS-el kéne megoldani (ha lehet egyáltalán).
Két szabályban
?
Valahogy így gondoltam, csak nem tudom helyes-e:
.link:hover:before { content: '>'; }
.link:hover:after { content: '<'; }
Igen
igazad lehet...
Egyébként az normális dolog hogy 2 div-et a pozícionálás, margók, szélesség, meg behúzás álítgatásával sehogy sem tudok úgy összepasszintani, hogy az mindkét domináns böngészőben ugyanúgy nézzen ki?
A honlap amin kínódok: www.ti-mi.hu
Van egy fejléce aminek háttere van, és alul pedig egy keretet szeretnék pontosan a háttérhez illeszteni, de akárhogy szenvedek, vagy a firefoxban vagy az IE-ben el van csúszva a jobb oldala.
A vége az lesz hogy megcsinálom táblázatokkal...
erre a problémára (div
Lényeges dolog
Valahogy így nézne ki ha minden rendben van:
és tényleg
Köszönöm.