CSS3 szelektorok: egyéb pszeudo-osztályok

A CSS3 szerkezeti pszeudo-osztályokról szóló cikkben megtárgyaltuk az elemek kiválasztását a dokumentumfában való elhelyezkedés vagy az elemek egymáshoz való relatív pozíciójuk alapján. A mostani részben az egyéb pszeudo-osztályokat fogjuk végig venni. Részletek a cikkben.

UI elemek állapot alapú pszeudo-osztályai 

Míg a szerkezeti pszeudo-osztályok az elhelyezkedés alapján választottak ki elemeket, addig az állapot alapú pszeudo-osztályok az elemeket az állapotuk alapján választják ki, például, ha egy elem éppen aktív (:active). Ezekkel a pszeudo-osztályokkal már a CSS1 idején megismerkedhettünk (úgy mint: :link, :visited, :hover vagy :active).

A CSS2.1-nél behozták a :focus pszeudo-osztályt ezzel kiterjesztve a pszeudo-osztályokat a linkről a form elemekre úgy, mint az input vagy textarea elemekre. A CSS3 további három állapotalapú pszeudo-osztályt terjeszt ki, ezek a következők: :disabled, :enabled, :checked.

A pszeudo-osztályok használata

Ahogy az előző cikkben már tárgyaltuk, a pszeudo-osztályokat lehet alkalmazni elemekre (e), azonosítókra (#ID) és osztályokra (.osztaly), a következő szintaktikával:

e:pszeudo-osztály {}
.osztaly:pszeudo-osztály {}
#id: pszeudo-osztály {}

Az állapotalapú pszeudo-osztály esetében a böngésző, akkor alkalmazza az adott UI elemre, amikor a kiválasztott állapot bekövetkezik az UI elemen. A következő példában az adott stílus, akkor alkalmazódik a link elemekre, ha a felhasználó az egeret a linkre húzza (hover esemény). Ez minden link elemre igaz lesz.

CSS: a:hover {background-color: red;}

:disabled

A :disabled pszeudo-osztály azokra az elemekre vonatkozik, melyeknek van disabled tulajdonságuk, mely az elemet használhatatlanná, vagy „klikkelhetetlenné” teszi, vagyis letiltja az elemet. Példa az elemre:

<input type="text" name="name" disabled />

Ez esetben a HTML5 boolean tulajdonság szintaktikájával éltünk, de használhatjuk a régebbi formát is:

<input type="text" name="name" disabled="disabled" />

Mind a két esetben a legtöbb böngésző ilyenkor egy letiltott elemet fog készíteni, szürke kerettel (vagy szürke háttérrel, ez böngésző függő), valahogy így:

-

Viszont tudjuk használni a :disabled pszeudo-osztályt, hogy felülírjuk ezt a stílust, valahogy így:

input:disabled {
    background-color: #ccc;
    border: 0;
    padding: 3px 2px;
}

Ezt a hatást elérhetjük a tulajdonság szelektorokkal is, de csak akkor, ha nem a HTML5 boolean típusú disabled tulajdonság szintaktikáját használjuk.

input[disabled="disabled"] {
    background-color: #ccc;
    border: 0;
    padding: 3px 2px;
}

Hogy melyik szelektort használjuk, az a mi döntésünk.

:enabled

Az a pszeudo-osztály az alapállapotú elemeket célozza meg, melyek állapota engedélyezett, vagyis a :disabled ellentéte.

input:enabled {
    background-color: rgb(255, 255, 255);
    border: 1px solid rgb(125,104,99);
}

:checked

A :checked pszeudo-osztály azon radio és checkbox elemeket célozza meg, melyek ki vannak választva (selected/checked). Ez megengedi számunkra, hogy mind az előre kiválasztott, mind a felhasználó által kiválasztott elemeket adott stílussal lássuk el. Jegyezzük meg viszont, hogy ezeket az inputokat a különböző böngészők, különböző képp engedik formázni.

input:checked {
    border: 1px solid rgb(255, 0, 0);
}

Mivel egyéb szelektorokat ki lehet egészíteni pszeudo-osztályokkal, azért még specifikusabban is ki lehet választani egy egy input elemet, például így:

input[type="radio"]:checked {
    border: 1px solid rgb(255, 0, 0);
}

A :target pszeudo-osztály

Az URL-ek végén a # után áll a horgony név, amellyel linkelhetünk, navigálhatunk a dokumentumon belülre. A :target pszeudo-osztály az éppen aktív cél elemen hajtja végre a formázást. A könnyebb érthetőség kedvéért nézzük meg a következő példát:

CSS div:target {background-color: red;}

HTML:
<nav>
    <a href="#egy">1</a>
    <a href="#ketto">2</a>
    <a href="#harom">3</a>
</nav>

<section>
    <div id="egy"><h2>Egy</h2>szöveg ...</div>
    <div id="ketto"><h2>Kettő</h2>szöveg ...</div>
    <div id="harom"><h2>Három</h2>szöveg ...</div>
</section>

A negáció pszeudo-osztály

A negáció pszeudo-osztály formailag a következőképp néz ki:

:not(e)

Kiválasztja azon elemeket, melyek nem egyeznek a zárójelben megadott elemmel (e).

Például, ha van egy div elemünk amiben találunk <p>,<a>,<h1>,<h2> elemeket,de mi a <p> elemeken kívül mindegyikre akarunk egy stílust alkalmazni, akkor azt a következőképp tehetjük meg:

CSS: div:not(p) {background-color: red;}

HTML:
<div>
    <h1>H1 elem, ez piros lesz</h1>
    <p>P elem, ez nem lesz piros</p>
    <span>SPAN elem, ez szintén piros lesz</span>
</div>

Böngésző támogatottság

Egész jól állunk a támogatottság terén, már az Internet Explorer 9 és 10 is támogatja ezeket a pszeudo-osztályokat.

A régebbi böngészők azonban csak korlátozottan támogatják a CSS3 szelektorokat.

tipp: HTML5 és CSS3 támogatás ellenőrzés eszköz: http://caniuse.com/

Ha régebbi típusú Internet Explorerre kell CSS3 szelektor támogatás, akkor egy kis javascriptes segítséggel az is megoldható: http://selectivizr.com/

Avast vírusírtó letöltés ingyen