Like assholes

Wat ze over opinies zeggen: dat ze gelijk achterwerken zijn, in dat iedereen er één heeft. Daar is iets voor te zeggen, natuurlijk, en iedereen zijn waarheid ook.

Ik heb respect voor veel opinies: of deze dan wel gene muziekgroep, schilder, dichter, schrijver, beter is. Of Guernica lelijke brol is dan wel geniaal, dat soort zaken.

Maar hoe ouder ik word, hoe vreemd genoeg méér stellige overtuigingen ik heb, en hoe minder ik voor sommige zaken bereid ben om te relativeren. En ik die dacht dat het net de jeugd was die in absoluten denkt, en de oudere jongere die het allemaal in een ruimer perspectief ziet.

Het kan zijn dat ik binnen een jaar of tien opnieuw milder ga worden, maar nu: nee dus. Mijn bloed kan koken als ik mensen manifest verkeerde dingen hoor verkondigen, of manifest onrecht zie gebeuren, of manifest idiotieën weet gebeuren.

“Manifest” volgens mij, natuurlijk, dat spreekt.

Deze opinie over conditional comments maakte mij helemaal spinnijdig: hoe kan iemand zó verkeerd zijn?

Waar het over gaat. Webpagina’s worden tegenwoordig voor het grootste deel structuur gegevenin HTML en vorm in CSS. Allerlei verschillende browsers interpreteren die CSS op allerlei verschillende manieren. Soms helemaal anders, soms subtiel anders. Internet Explorer doet notoir moeilijk, vaak.

En dan zijn er ruwweg drie mogelijkheden om daar mee om te gaan:

  1. Niets doen, ‘t is te zeggen, één versie maken van de CSS-file en ervoor zorgen dat alles zo goed en zo kwaad mogelijk in alle browsers goed werkt,
  2. conditionele comments gebruiken,
  3. css hacks gebruiken.

De meneer van de link hierboven zei, ondertussen trouwens een hele tijd geleden, ik ben er maar op gevallen via een recentachtig artikel op A List Apart, dat conditionele comments evil zijn.

Die dingen zien er zo uit:

<link rel="stylesheet" href="styles.css" />
<!--[if lt IE 7]>
<link rel="stylesheet" href="ie.css" />
<![endif]--> 

Laad in alle geval styles.css in, en als het een andere browser is dan Internet Explorer, dan staat de rest uitgecommentarieerd: <!-- is het begin van een comment, –> het einde. Enkel Internet Explorer doet iets met die [if] en [endif], in dit geval: als de browser een versie van Internet Explorer minder dan 7 is, laad dan ie.css in.

Dus met andere woorden: het gros van de css staat in styles.css, en voor die paar dingen waar het in Internet Explorer 5 en 6 de mist in gaat, staan de uitzonderingsregels gespecificeerd in ie.css.

Proper, toch? En binnen een paar jaar zal dat nog altijd werken, want geen enkele andere browser zal ooit diezelfde syntax gebruiken: in het slechtste geval is het een comment en wordt het allemaal links gelaten.

En wat stelt die Jens Meiert? Dat CSS hacks te verkiezen zijn boven conditionele comments. Dat is zó verkeerd, zo patent absurd, zo nonsensicaal, dat ike r haast geen woorden voor heb.

CSS hacks werken door bugs te exploiteren in de verschillende implementaties van CSS door de verschillende browsers. Ze maken de CSS onleesbaar wegens overal verspreid en uit hun aard lelijk, en ze zijn onbetrouwbaar want (a) de bugs in kwestie kunnen uiteraard gefixed worden — wat gebeurde met Internet Explorer 7, die maakte gehakt van zowat alle hacks — en (b) ze zorgen voor nachtmerries omdat het nooit duidelijk is welke hack nu precies in welke browser wat deed, en hoe een bepaalde hack andere dingen al dan niet gaat breken.

Een voorbeeld van zo’n ding:

strong { color: #f00; } 
html:not([dummy]) strong { color: #0f0; }
@media all and (min-width: 0px) { strong { color: #00f; } }

Die eerste regel zorgt ervoor dat in Internet Explorer <strong> rood zal zijn, de tweede dat <strong> in Firefox en Safari groen zal zijn, en die derde dat <strong> in Opera blauw zal zijn. A la bonne heure!

Nog een voorbeeld, de box model hack:

.meta { 
  width: 300px; 
  voice-family: "\"}\""; 
  voice-family:inherit;
  width: 250px;
}
html>body .meta {
  width:250px;
} 

Dat zorgt ervoor dat pakweg een div met class=“meta” op Internet Explorer (5.0–6.0) 300 pixel breed is en op Firefox en Opera en zo 250 pixels. En in het “echt” zullen ze dan misschien allemaal even breed uitzien, wegens een afwijkende manier van met border om te gaan.

O ja, absoluut. Véél eenvoudiger.

Nijdig word ik daarvan.

Elders over misschien hetzelfde

16.12.2013: Links van 15 december 2013 tot 16 december 2013 | 16.11.2013: Links van 14 november 2013 tot 15 november 2013 | 18.07.2012: Links van 25 juni 2012 tot 18 juli 2012 | 22.02.2012: Links van 11 februari 2012 tot 22 februari 2012 | 05.12.2011: Links van 12 november 2011 tot 5 december 2011 | 09.03.2011: Links voor 9 maart 2011 | 29.09.2008: CSS Systems | 25.09.2008: Kunsten en erfgoed | 06.05.2008: CSS Confessions | 21.12.2007: All’s well that ends well

9 Comments

Zeg uw gedacht

Navigatie

Vorige entry:

Volgende entry:

» homepagina, archief

Vriendjes

<insert standard disclaimer>

Alles wat hier staat is mijn eigen opinie. Het wordt niet nagelezen of goedgekeurd door mijn werkgever voor het on-line komt, en ik bied geen enkele garantie voor kwaliteit of correctheid.

Mijn werkgever is het niet noodzakelijk eens met wat ik schrijf, en het spreekt vanzelf dat hij dan ook op geen enkele wijze aansprakelijk kan zijn voor wat ik hier publiceer.