De slechte hack tegenwoordig


Je moest eens weten hoeveel stylesheets ik zo allemaal zie, en telkens denk ik “waarom schrijven die personen zo rare CSS?”

Dat niet iedereen de shorthand methodes kent kan ik inkomen, alsook het trachten van te positioneren door middel van position: absolute en dan verwondert zijn dat bij verandering van schermresolutie alles opeens anders is.
Het gebruik van px als waarde voor tekst is ook nog goed ingeburgerd.

Maar genoeg over het “slechte CSS schrijven” gedeelte, om dit een beetje op te helderen zal ik eens een andere post schrijven.

Vreemd genoeg zie ik nog steeds personen die !Important gebruiken met de veronderstelling dat het effectief iets zal uithalen.

Wat is/doet !Important ?

!Important bestaat al sinds CSS1, en voor de PHP’ers onder jullie, het wil niet zeggen “niet belangrijk”, vanwege de !.
De bedoeling ervan is ervoor te zorgen dat personen, de user, de weergave bepaald door de webdesigner, de auteur te kunnen overtreffen om zo tekst donkerder en groter weer te geven via de ingebouwde functie in hun browser.

Dus als een webdesigner zegt:

p {
color: #900; /*#990000 ofwel rood */
}

en de user heeft dit in zijn browser-stylesheet:

p {
color: #000; !important /*#000000 ofwel zwart */
}

Dan zal de tekst zwart worden weergegeven aan de gebruiker, juist omwille van de !important.
Juist deze !important zorgt ervoor dat de gebruikers-style voorrang krijgt op de style bepaald door de designer.

Hack of niet ?

Dus als jij als webdesigner nu zegt:

p {
color: #900; !important /*#990000 ofwel rood */
}

Juist omdat je wil dat de tekst altijd rood zal zijn, zal dit enkel en alleen maar effect hebben bij personen die geen locale stylesheet hebben.
Bij CSS1 zou je nog kunnen profiteren van het feit dat de designers stylesheet met !important voorrang zou krijgen ongeacht het feit dat de gebruiker een locale stylesheet zou kunnen hebben.

Maar dit voordeel is niet meer van kracht tegenwoordig, nu heeft de gebruikers stylesheet voorrang op die van de designer, ook al heeft deze bepalingen met !important.

En nu ?

Je hebt het natuurlijk niet in de hand of je gebruiker een locale stylesheet heeft, en er bestaan gelukkig geen scripts om dit uit te schakelen, maar waar je wel voor 100% van zeker kan zijn is dat er CSS wordt verwerkt door de grafische browser.
Als een gebruiker je tekst in het zwart wil lezen in plaats dat jij bepaald dat hij normaal gezien rood moet zijn, dan is het nu eenmaal zo, je kan er niets aan veranderen.

Dus probeer nooit positioneringen te doen met de !important declaratie, je design is om zeep als je website door een minder bedeelde persoon wordt opgevraagd die met een locale stylesheet werkt in zijn/haar browser.

Je weet nooit of het je toekomstige baas had kunnen zijn.

Nog 1 ding

Je hoort het misschien al van kilometers komen maar, Internet Explorer kan er niet goed mee overweg !