25. februar 2008 - 10:38Der er
23 kommentarer og 1 løsning
CSS kode som Opera læser og IE og FF undgår
Hej!
I min css koden har jeg brugt for at dele koden op så jeg kan lave en slags kode til explore, en slags kode til firefox og sidst, en slags kode til opera.
Indtil videre fungere det fint med explore og firefox.
Explore læser hele koden, og firefox det jeg vil have den til med...
html>body .minklasse a { font-size: 11px; font-family: verdana; osv... }
Men hvordan laver jeg afsnit i koden som kun opera læser og explore og firefox undgår !??
Desværre er det ikke helt så lige til at skelne mellem andet end IE og ikke-IE, da kun IE understøtter conditional comments...
...du kan bruge User-Agent sniffing for at se om browseren siger den hedder Opera, og så tilføje et stylesheet, eller du kan kigge efter et CSS hack der kun påvirker Opera - desværre er ingen af de to ting særligt holdbare løsninger, da User-Agent nemt kan spoofes (Opera har endda som standard mulighed for at fremstå som IE!), og årsagen til at et CSS hack virker er urelateret til årsagen til at du BRUGER et CSS hack...
...en mere holdbar løsning er at tilføje en stylesheet-fil med JavaScript, baseret på hvad de forskellige browsere kan på det punkt, men det er ikke ligefrem pænt, og alt afhængigt af hvad du finder kan du ende med at du fanger mere eller mindre end det der var meningen...
...i langt de fleste tilfælde er det dog nok at håndtere to tilfælde; IE og ikke-IE, da de andre browsere renderer stort set ens, og netop der er conditional comments perfekte - lav et stylesheet der dækker alle browsere, og lav så nogle "fix"-stylesheets der overskriver de ting IE skal have anderledes, og er inkluderet med en conditional comment efter det primære stylesheet...
...SKAL det absolut være som du hentyder til i spørgsmålet, så tag evt. et kig på http://centricle.com/ref/css/filters/ for at se hvad der virker på de enkelte browsere - men bemærk at eks. Opera 9 ikke er med, og det derfor kan være andet der skal til for netop den!
Det er den bedste løsning du finder, hvis du har brug for at differentiere yderligere end IE/ikke-IE, ja.
Den er stadig ikke god, fordi den streng, som nævnt foroven, let kan spoofes (og Opera endda tillader det out-of-the-box), men den er dog betydeligt bedre end et CSS hack, og der er faktisk ikke nogle fejlsikre løsninger for andet end lige IE (uden at man inddrager ting der ikke er relaterede, og dermed upålidelige i forbindelse med nye versioner af browseren).
- og endelig kan man tilpasse sit design til den virkelighed, man arbejder med. Det kan godt være en paraply, lavet i fiskenet, ville se fiks ud, meeeeeen ...... ;o)
Ved bevidst at forsøge at undgå hacks (hovedsageligt da jeg synes, de er enormt grimme), og ved at bruge lidt ekstra tid, når noget drillede i en browser, så er det altid lykkedes mig at få designs til at spille i samtlige browsere. Jeg har endnu aldrig måtte bruge et CSS-hack.
Det kræver bare, at man gider ofre lidt ekstra tid på at finde en løsning, der holder, cross-browser, for det er der næsten altid.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.