Du skal vælge den doctype der passer til den type HTML du vil skrive - og den skal defineres på alle sider. Jeg bruger selv html5 til alt nu til dags. Det er også den eneste jeg stadig kan huske ;-) HTML5 doctypen er faktisk også så "bred" at du kan smide den på det meste uden at få problemer - så hvis du er i tvivl smid den på. Selfclosing-tags (<br/> fx) er også ok i html5).
Nu skriver du at du godt vil bruge de nye "smarte" tags - jeg går ud fra at du mener nav, article, header osv - i html5 - og det kan du sagtens. De understøttes bare ikke i oldIE, men det kan du løse ved at bruge html5shiv - code.google.com/p/html5shiv/
Helt generelt, så skal du ikke være bange for at bruge nyere funktioner, i både CSS og HTML. Hvis det er kritisk funktionalitet for din side, så kan du finde et polyfill der gør browserne i stand til at håndtere det (html5shiv er en slags polyfill for html5 tags). På
https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills kan du finde en liste over forskellige polyfills for både nye HTML5, JS og CSS ting.
Men det er ikke altid at det er nødvendigt. For eksempel, så er afrundede hjørner ikke en kritisk detalje - og hvis folk alligevel bruger IE6 er de nok ligeglade med om det er firkantede eller runde hjørner.
I moderne webdesign snakker man om begræber som Progressive Enhancement og Graceful Degradation. I og for sig er det to sider af samme sag. Det handler om at sørge for, at folk kan nå dit indhold selvom deres browser ikke understøtter de funktioner som din side bruger.
Browsere ignorerer kode som de ikke forstår. Så hvis du fx vil have en gradient som baggrund for din side, så kan du gøre det sådan her:
- body {
- background: #bada55; /* fallback bg-color */
- background: -vendorprefix-linear-gradient();
- background: -linear-gradient();
- }
Browserne parser de tre background properties - og bruger den nederste af dem den forstår. Det vil sige, at selvom chrome forstår både background med en hex color og en linear-gradient, så bruger den gradienten. IE6, 7 og 8 vil derimod bruge den farve som du specificerede øverst.
Hjemmesider behøves ikke at se ens ud i alle browsere - det er okay at give folk i gamle browsere en dårligere oplevelse. De sidder generelt også på ældre hardware, og vil også være mindre interesserede/påvirkelige i den fulde grafiske oplevelse...
Så - hvis du tænker dig om når du skriver din CSS og sprøjter lidt JS på de hårde hjørner, så skal det nok gå alt sammen.
Modsat @scootergrisen, så vil jeg ikke anbefale validation - specielt ikke af CSS. W3C's validatorer er ikke en krone værd. Hvis du laver syntaks fejl i din HTML kode, så vil du selv opdage det - og HTML5 er så tilgivende, at hvis det renderer rigtigt i browseren, så er det nok også valid. CSS validatoren er håbløs og du får meget mere ud af at bruge
http://CSSLint.net . Din Javascript kode kan du også med fordel køre gennem
http://JSHint.com (eller
http://JSLint.com - den er skrevet af Douglas Crockford (JS-grand old man) og er lidt mere striks end JSH) .