Archív Inet.sk Pôvodný autor: Tomáš Gluchman
19. 12. 2006 o 00:00 8004x

Z archívu: Ako na validné CSS aj s nevalidnými vlastnosťami

Dnešné webové prehliadače dokážu okrem štandardných CSS vlastností (špecifikovaných W3C) interpretovať aj "vlastné". Keďže ale nie sú definované v CSS špecifikácií, sú vlastne "chybné". Existuje však jednoduché a elegantné riešenie ako takéto vlastnosti skryť pred validátorom.
Z archívu: Ako na validné CSS aj s nevalidnými vlastnosťami

Trocha teórie

Moderné prehliadače webových stránok obsahujú takmer plnú podporu kaskádových štýlov - CSS, znamená to, že dokážu spracovať väčšinu (neexistuje prehliadač, ktorý by zvládol 100%) vlastností CSS, ktoré sú schválené v CSS špecifikácií vydanej W3C. Posledná vydaná špecifikácia je CSS 2.1, pripravuje sa ale už jej tretia verzia (resp. tretí level).

Takisto existujú aj vlastnosti CSS, ktoré neboli špecifikované konzorciom W3C, ale špecifikovali ich dodávatelia UA programov, teda programov, ktoré interpretujú webové dokumenty, tzv. užívateľských agentov. UA programy sú napríklad internetové prehliadače, hlasové čítačky, atď. Samozrejme, keďže tieto rozširujúce vlastnosti nie sú definované vo W3C norme, nie sú ani validné. Napriek tomu vám však fungovať budú, ale s obmedzením na daný prehliadač.

Takéto rozširujúce vlastnosti musia byť podľa CSS špecifikácie jasne odlišné, znamená to, že by mali začínať pomlčkou "-" (alebo podtržníkom "_"), aby sa odlíšili od štandardných vlastností, za ktorou nasleduje reťazec definujúci výrobcu programu, pre ktorý je daná vlastnosť vyvinutá.

Rozširujúce CSS vlastnosti od Opera Software sa začínajú prefixom -o- (napríklad -o-link alebo -o-replace) alebo od Mozilla Foundation prefixom -moz- (napríklad -moz-border-radius, či -moz-binding). Spoločnosť Microsoft vytvorila takéto rozširujúce vlastnosti ešte pred špecifikáciou tohto názvoslovia a začala pridávať k svojim CSS vlastnostiam prefixy mso- (ktoré sú známe z generovania HTML stránok programom MS Word) alebo žiadne (tieto vlastnosti sa podobajú na vlastnosti W3C, napríklad scrollbar-track-color, či filter).

Niektoré vlastnosti primárne vyvinuté pre jeden druh internetového prehliadača, môžu byť funkčné aj v prehliadači inom - je to ale už vec konkrétnych vývojárov (napr. niektoré MSIE štýly fungujú aj v Opere, či v Konquerori). Presne špecifikovať jednotlivé vlastnosti štýlov tu teraz nebudem, ukážem vám ako tieto vlastnosti v dokumente použiť bez toho, aby kvôli nim validátor nevypisoval chyby.

Keďže na pridanie štýlu použijeme JavaScript, je dôležité, aby bola webová stránka prístupná a plne funkčná aj v prípade, že tieto vlastnosti definované nie sú. Nechceme predsa spôsobovať problémy užívateľom s vypnutým JavaScriptom.

A teraz prax

Štýly sa dajú JavaScriptom definovať (alebo priradzovať) viacerými spôsobmi (podrobnejšie je rozpísané ďalej):

  • DOM (objektový model dokumentu) objektom style, ktorému definujeme požadovanú CSS vlastnosť napr. this.style.width = "200px"; (viď. nižšie).
  • pomocou metódy setProperty(), napr. this.style.setProperty("width","200px",null);. Túto funkciu ale nepodporuje MSIE.
  • pre MSIE metódou addRule(), napr. document.styleSheets[1].addRule("div","width:200px");. Funguje iba v MSIE a nevýhodou je, že vlastnosti sa dajú HTML elementom pridávať len globálne - v tomto prípade priradíme všetkým elementom DIV šírku 200px.

V prvom prípade takto môžme definovať len CSS vlastnosti, ktoré majú svoj ekvivalent v objektovom modeli dokumentu, tzv. DOM (viď. príklad 1.). Tu je zoznam vlastností CSS v objektovom modeli v

Pozor! Všetky CSS vlastnosti DOM sú case-sensitive, t.j. rozlišujú sa malé a veľké písmená!

V prípade, že daná CSS vlastnosť svoj ekvivalent v DOM nemá, je nutné ho priradiť JS metódou, teda napríklad funkciou setProperty() a v prípade MSIE funkciou addRule(). Obe majú svoje klady a zápory - setProperty() priradzuje CSS vlastnosti každému elementu zvlášť, zatiaľčo addRule() priradzuje vlastnosti všetkým elementom naraz (podobne ako ich definujeme v CSS súbore).

Príklad

Pozn.: tieto príklady sú len ilustračné a nemusia fungovať správne vo všetkých prehliadačoch, v bežných podmienkach je možné dané riešenie previesť inak, alebo, z hľadiska prístupnosti, neriešiť vôbec.

Príklad 1.: Chceme prisposobiť šírku elementu DIV s id="stranka" rozlíšeniu užívateľa. Kód JavaScriptu bude vyzerať napríklad takto:

function ResizeBox() {
if (document.documentElement.clientWidth <= 800) { // zistime si sirku okna
// a pomocou objektu style definujeme prvku s id='stranka' novu sirku: document.getElementById('stranka').style.width = '770px'; // zaroven zmenime aj jeho farbu pozadia: document.getElementById('stranka').style.backgroundColor = '#aaa';
}
else {
document.getElementById('stranka').style.width = '990px';
}
}

// pri nacitani okna zmenime sirku elementu:
window.onload = ResizeBox;

To bola demonštrácia príkladu v prípade, že daná CSS vlastnosť má v objektovom modeli svoj ekvivalent - všimnite si vlastnosť backgroundColor, ktorá je ekvivalentom k CSS vlastnosti background-color.

Príklad 2.: Chceme všetkým elementom DIV s class="radius" priradiť vlastnosť špecifikovanú Mozilla Foundation -moz-border-radius:

function BorderRadius() {
// zistime, ci dana funkcia je pristupna if (document.getElementsByTagName('div')) {
// prejdeme kazdy element DIV a skontrolujeme nazov triedy for (i=0; (doc = document.getElementsByTagName('div')[i]); i++) {
if (doc.className == 'radius') {
doc.style.setProperty("-moz-border-radius","10px",null);
}
}
}
}

window.onload = BorderRadius;

 

Tento príklad nebude fungovať v MSIE (samozrejme zmena - zaoblenie rohov sa prejaví len v Mozille), pre tento prehliadač je nutné použiť funkciu addRule, napr:

function ScrollBarColors() {
// definujeme farby posuvníka: document.styleSheets[1].addRule("body", "scrollbar-face-color: red");
.
.
.
atď.
}

window.onload = ScrollBarColors;
Pozn. pre scrollbar-face-color (atď.) môžme použiť aj this.style.scrollbarFaceColor, keďže táto CSS vlastnosť má svoj ekvivalent v DOM (jedná sa stále o DOM pre MSIE).

 

V konečnom dôsledku už záleží na vás, aké riešenie zvolíte na svojej web-stránke. V tomto prípade je nutná aspoň mierne pokročilá znalosť JavaScriptu a samozrejme aj CSS. JavaScript je len doplnkom pre webové stránky a tak by sa mal aj používať - v prvom rade je dôležité myslieť na to, že výpočty sa prevádzajú na strane klienta a teda stránka, ktorá obsahuje takýchto skriptov príliš veľa môže spôsobiť problémy užívateľovi s pomalším počítačom.

Zároveň, ako som už spomínal, je dôležité prihliadať na fakt, že stále existuje percento vašich návštevníkov, ktorí JavaScript majú zakázaný a preto by sa ním nemali generovať prvky, ktorých nefunkčnosť môže zneprístupniť vašu stránku.

Tomáš Gluchman (http:gluchman.sk)

Nemáte čas tvoriť web sami? Vytvoríme vám ho na mieru, rýchlo a bez starostí.
Webstránka na kľúč

Novinky a inšpirácie

Z nášho blogu

Prečítajte si novinky, inšpirácie a dôležité informácie zo sveta webhostingu a technológií.

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami Oznamy
21. 10. 2026

Bezpečnostné aktualizácie PHP: Chráňte svoj web pred hrozbami

Vývojársky tím PHP vydal dôležité bezpečnostné záplaty pre všetky oficiálne podporované verzie PHP 8. Na našich serveroch sme nezaváhali ...

Čítať viac
Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás? Oznamy
01. 10. 2026

Gmail končí s funkciou „Odoslať ako“ pre cudzie e-mailové adresy. Čo to znamená pre vás?

Google oznámil, že v januári 2027 zruší v Gmaile funkciu „Odoslať ako“ (Send as) pre e-mailové adresy od iných poskytovateľov. Ak ste si ...

Čítať viac
Večerná „prestávka“ pre server VIP033 Oznamy
25. 09. 2026

Večerná „prestávka“ pre server VIP033

Neustále pracujeme na tom, aby vaše weby bežali hladko, rýchlo a bezpečne. Technológie idú míľovými krokmi vpred a my v Inet.sk s nimi dr...

Čítať viac
Novinky na Inet.sk (09 / 2026) Novinky
09. 09. 2026

Novinky na Inet.sk (09 / 2026)

Posledné mesiace sme v Inet.sk nevenovali len stabilite serverov, ale najmä počúvaniu vašich reálnych skúseností z každodennej praxe. Výs...

Čítať viac

Podpora klientom

Máte ďalšie otázky?

Nezúfajte, pripravili sme pre Vás jednoduché odpovede na najdôležitejšie otázky, ktoré od našich klientov dostávame.

Zistiť viac

Naše výhody

Prečo si nás vybrať?

Našim klientom ponúkame až 30-dňovú záruku vrátenia peňazí.

Sme skutočný slovenský webhosting

Slovenská
firma

Nepatríme pod žiadnu nadnárodnú spoločnosť, sme malá rodinná firma.

Na nás sa môžete kedykoľvek spoľahnúť

Dlhoročné
skúsenosti

Na slovenskom trhu pôsobíme už viac ako 20 rokov, sme overená značka.

Naši prví zákazníci sú stále s nami

Spokojní
zákazníci

Naši zákazníci sú ako naša rodina, preto nám verí už viac ako 1250 klientov.

Maximálna bezpečnosť

Maximálna
bezpečnosť

Chránime Vás pred útokmi i SPAMom. U nás sú Vaše dáta v bezpečí.

Prozákaznícka podpora

Ochotná
podpora

Zakladáme si na individuálnom prístupe, preto Vám vždy radi pomôžeme.

Kvalita a dobrá cena

Férová
cena

Cena pri obnove je rovnaká ako pri objednávke. Nezdražujeme po prvom roku a bez skrytých poplatkov.

U nás sa Vám nič nestratí

Pravidelné
zálohovanie

Vaše dáta zálohujeme každý deň, dostupné sú aj zálohy z pred niekoľkých mesiacov.

Svižný Admin Panel nájdete len u nás

Prehľadný
Admin Panel

Máme rýchly a prehľadný Admin Panel, ktorý zvládne používať naozaj každý.

Správa používateľov

Správa
používateľov

Spravujte svoje projekty bez akýchkoľvek obáv s kolegami alebo externými partnermi.

Máme zľavy pre verných klientov

Vernostné
zľavy

Verní klienti u nás automaticky získavajú 15 % zľavu na každú ďalšiu objednávku.

My Vás nebudeme obmedzovať

Bez
obmedzení

Neobmedzujeme počet databáz, e-mailov, ftp a ani prenos dát.

Hosting pre WordPress

WordPress
na 1 klik

Nainštalujte si obľúbené redakčné systémy rýchlo a jednoducho.

Referencie

Spokojní zákazníci

Pozrite sa, čo o nás povedali naši klienti. Neváhajte a pridajte sa k nám ešte dnes.

Auto 100
Bystricoviny
eCall Slovakia
Filip Jančík
Frost
Merkury Broker
Mi:Su Design
Mesto Nitra
Pro Clienta
Schneider Lekáreň
Vego Marketing
Mesto Zlaté Moravce

Všetky ceny sú uvádzané bez DPH
© 2006 - 2026, Inet.sk, s. r. o., Všetky práva vyhradené

Na našej stránke používame "cookies". Vďaka nim sledujeme návštevnosť, prispôsobujeme reklamu a používateľské nastavenia, čo zlepšuje Váš zážitok z našej stránky. Súhlasíte s ich spracovaním?
Vlastné nastavenia cookies