Autor Zpráva
Mosaic
Profil
Na jakpsatweb.cz som si všimol pozoruhodnú vec, ktorá sa ale nadávala do súvisu s CSS.

<!--[if IE]> obsah téhle poznámky se v Exploreru zobrazí, jakoby to nebyla poznámka <![endif]-->

Používanie hackov je nevalidné. Písať ale ďaľší štýl s takýmto komentárom je absolútne validné. Ostatné prehliadače budú správne komentár ignorovať a IE ho ignorovať nebude vďaka [if IE]
Jake
Profil
Mosaic
to, že říkáš, že používání hacků je nevalidní není pravda (alespoň některých). Třeba "hack zpětného lomítka" (nebo jak se to jmenuje)- ten je validní, protože v novějších prohlížečích projde jako kdyby tam to zpětné lomítko nebylo.
izsak
Profil
"Hack" so spätným lomítkom: toto je je hack ani chyba,je to vlastnosť. Ide o zápis znaku pomocou niečoho, čo by sa dalo nazvať escape sekvencia. Lomítko sa nesmie nachádzať prečíslom a znakmi A-F, pretože tieto označujú hexadecimálnu hodnotu. Až použitie lomítka pred inými, ako týmito, znakmi je validné a použiteľné.

Hack ako
color: red !important;

color: green; /* IE vezme túto hodnotu aj napriek inštrukcii !important */

sú validné. Len využívajú chyby v parsery.

Podmienené komentáre neznamenajú koniec hackom pre IE: hack je akákoľvek oprava pre prehliadač, ktorý niečo zle zobrazuje. I keď to validátor neuvidí a neuvidia to ani ostatné prehliadače, stále sú to hacky - niečo, čo obchádza, využíva, zneužíva atď. chyby v prehliadači.

A menšia ukážka hacku pre Mozillu, Operu a IE, lebo v tomto prípade všetky robili blbosti:

background: transparent url("../images/bg/menu1.jpg") no-repeat 50% 138px; /* Mozilla, not for Opera -> without static */

background: transparent url("../images/bg/menu1.jpg") no-repeat 50% 134px static; /* Opera, not for Mozilla -> static */
_background: transparent url("../images/bg/menu1.jpg") no-repeat 50% 121px; /* IE*/
Mosaic
Profil
_background: transparent url("../images/bg/menu1.jpg") no-repeat 50% 121px; /* IE*/

No myslím, že práve podtržítko validné nie je. Za validné považujem vlastnosti, ktoré sa nachádzajú v špecifikáciách.

_background nie je vlastnosť.

Podmienené komentáre zabezpečujú to, že aj pre IE sa dá napísať validná vlastnosť. Myslím, že je to lepšie riešenie. Ak použijete hack s _vlastnost: xxx; už css validné nebude.
Leo
Profil
Podminene komentare maji jednu vadu z pohledu vyvojare, nedaji se pak stranky testovat pokud si na jeden pc nainstalujete vice verzi IE. Leo
mipo
Profil
2 Mosaic: Hack s podčiarkovníkom je validný v CSS 2.1, via Co je a co není validní CSS.
izsak
Profil
Mosaic
Žiadna debata o validnosti hackov tu nebola. Je už na každom, či považuje _hack za validný alebo nie a nech ho použije podľa vlastného uváženia.
Podľa mňa _hack validný je (viď mipo).

Ak použijete hack s _vlastnost: xxx; už css validné nebude.
Nebude validný podľa validátora, ktorý je ešte stále vo vývoji a nie je neomylný.
W3C si teraz určite nemôže dovoliť "zlegalizovať" použitie _hacku.
Keďže CSS je dopredne kompatibilné (CSS 2 parser musí vynechať CSS 3 vlastnosti - a kto mi zaručí, že nebude existovať _vlastnosť - áno, nebude, ale je to validné) a preto _hack je validný.
llook
Profil
Trochu to shrnu:
- Podmíněný komentář je podle HTML/XHTML poznámka, kterou parsery HTML/XML podle standardů ignorují. Jako by nebyla.
- Vlastnost zapsaná s podtržítkem je podle CSS 2.1 neznámá vlastnost a parsery CSS ji podle standardů ignorují. Jako by nebyla.
Otázka validity spočívá v její definici. Důležitější mi připadá oddělení obsahu od vzhledu. A proto věci týkající se vzhledu je lepší hackovat v CSS.
Takže i zařazení této diskuze do CSS je nesprávné, spadá spíš do HTML, protože jde o hackování HTML.
Mosaic
Profil
Ak je hack s podčiarkovníkom validný v CSS 2.1, o čom som nevedel, tak je to v poriadku. Chcel som poukázať nato, že normálne prehliadače ignorujú _vlasznost: xxx;, lebo taká vlastnosť nie je (a llook píše, že podľa css 2.1 je to neznáma vlastnosť, tak neviem či má pravdu mipo alebo llook). IE to aj tak nesprávne prečíta. V komentári môže byť trebars aj "vgvfgsvgvgfsvfgsdvfvsdhvfgvdsghvfghvsd", jednoducho čokoľvek a stále to bude validné - to, že IE to ignorovať nebude splní svoj účel a hoci podľa štandartov by to ignorovať mal, kód zostane validný. S hackom s podčiarkovníkom ťažko posúdiť, či validný je alebo nie. Preto uprednostňujem tú komentárovú formu, ktorá je určite validná.
Mosaic
Profil
Podminene komentare maji jednu vadu z pohledu vyvojare, nedaji se pak stranky testovat pokud si na jeden pc nainstalujete vice verzi IE. Leo

Prečo by sa nedali testovať na viacerých verziách?
izsak
Profil
Nedajú sa testovať na jednom PC s viacerými verziami IE.

Pokiaľ mám WinXP SP2 a spustím v ňom IE 5, tak spracuváva tieto komntáre tak, ako IE 6. Napr. chyby v CSS však spracováva ako IE 5.
Mosaic
Profil
No ešte je možnosť definovať IE verziu - ale to už je asi príliš nepraktické. Takže podtržítko bude asi lepšie riešenie.
izsak
Profil
Práveže ja používam podmienené konmentáre iba s definovaním verzie IE. Ale ide o to, že sa to ťažko odlaďuje a treba mať niekoľko (Virtual) PC, na ktorých sú samostané verzie IE.
Leo
Profil
"Pokiaľ mám WinXP SP2 a spustím v ňom IE 5, tak spracuváva tieto komntáre tak, ako IE 6. Napr. chyby v CSS však spracováva ako IE 5."

Jenom podotknu ze to neni jen na XP, ale treba i na Win 2000, Leo
mipo
Profil
2 mosaic: Via citát zo špecifikácie CSS 2.1:

In CSS2.1, identifiers may begin with "-" (dash) or "_" (underscore). Keywords and property names, beginning with "-" or "_" are reserved for vendor-specific extensions. ... An initial dash or underscore is guaranteed never to be used in a property or keyword by any current or future level of CSS. Thus typical CSS implementations may not recognize such properties and may ignore them ... However, because the initial dash or underscore is part of the grammar, CSS2.1 implementers should always be able to use a CSS-conforming parser, whether or not they support any vendor-specific extensions.

Z čoho jasne vyplýva, že hack s podčiarkovníkom je validný.
llook
Profil
Heleďte s tou validitou je to sporný. Vlastnost zapsaná s podtržítkem je podle CSS 2.1 tzv. "vendor-specific extension". Všechna klíčová slova a názvy vlastností, který začínaj podtržítkem nebo pomlčkou jsou vyhrazeny právě pro vendor-specific extensions.
Podle specifikace je validní CSS 2.1 takový dokument, který je správně po gramatický stránce a zároveň používá pouze @-pravidla, klíčová slova a vlastnosti definované ve specifikaci CSS 2.1.

To o co se všichni hádají tedy spočívá v tom, jestli tím, že je to vyhrazené (reserved), to lze považovat za definované v této specifikaci (defined in this specification).
Podle mě jo, protože proč by jinak ve specifikaci byli ty názvy vyhrazené, když by se nesměly použít.

Leo
nedaji se pak stranky testovat pokud si na jeden pc nainstalujete vice verzi IE.
Přesněji: ...pokud si na jedny Windows...
Já mám na Linuxu dva konfiguráky WINE a dvojí fake_windows, jeden pro IE 6.0 a druhý pro IE 5.0 a podtržítka běhají jak mají :-)
llook
Profil
Samozřejmě nesporné je, že CSS parser vyhovující specifikaci přeskakuje vlastnosti které nezná, takže používání podtržítek je naprosto bezpečné.
Yuhů
Profil
Jenom stručná reakce na původní příspěvek. Toto poznámkování kódu pomocí podmínených komentářů se může zdát elegantní, ale v praxi mi pro hackování CSS přijde strašně těžkopádné. Většinou je totiž potřeba udělat pouze řádkový hack nějaké vlastnosti -- málokdo má náladu psát celý další stylopis pro Explorer.

Podtržítkový hack a hack zpětného lomítka řeší většinu věcí. A validita je opravdu otázka její definice.
mipo
Profil
2 Yuhů: Ohľadom tej poznámky naprostý súhlas. Je to veľmi ťažkopádne, aj keď efektívne, radšej používam hack s podtržítkom alebo s lomítkom.
llook
Profil
Yuhů
Taky už jsem to tady někde psal - podmíněné komentáře jsou vhodné pro hackování HTML (což není skoro nikdy potřeba), podtržítka na hackování CSS.
Toto téma je uzamčeno. Odpověď nelze zaslat.