/ Forside / Teknologi / Udvikling / HTML / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
HTML
#NavnPoint
molokyle 11184
Klaudi 5506
bentjuul 3377
severino 2040
smorch 1950
strarup 1525
natmaden 1396
scootergr.. 1320
e.c 1150
10  miritdk 1110
hjælp til forskellige CSS i IE og FF
Fra : Martin S. D: Møller


Dato : 16-11-05 10:36

Kan det lade sig gøre at have forskellige CSS i IE og FF.

Vis det kan. Kan det så lade sig gøre ved hjælp med en <!--[ifxx]
xxx [endif]-->
Eller er der en anden metode der er beder.

Det skal siges at siderne stort set koder i ren html, men med
lidt php blandet ind i. Men designet i CSS.

På forholdene tak


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jens Gyldenkærne Cla~ (16-11-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 16-11-05 12:56

Martin S. D: Møller skrev:

> Kan det lade sig gøre at have forskellige CSS i IE og FF.

Ja. Det normale er dog at lade dem deles om hovedparten og så blot
servere "rettelseskode" i det omfang det er nødvendigt. Det er
besværligt at vedligeholde den samme kode i flere versioner -
derfor bør man kun lave browserspecifik css-kode i det omfang det
er nødvendigt.

> Vis det kan. Kan det så lade sig gøre ved hjælp med en <!--[ifxx]
> xxx [endif]-->

Ja, til IE kan man bruge en såkaldt Conditional Comment. Se den og
andre muligheder her: <http://www.hintzmann.dk/articles/skjulecss/>


> Eller er der en anden metode der er beder.

En god forudsætning for at få IE og Firefox m.fl. til at opfatte
css-kode ens er at sørge for at bruge en standardsættende
doctypeerklæring. Det kan du se mere om her:
<http://www.hintzmann.dk/articles/doctype/>.

Der skal man så bare huske at ældre IE-udgaver (IE5 og tidligere)
kun kan vise sider i quirksmode - derfor kan det være nødvendigt
med specifik rettekode til dem (det kan så igen laves med en
conditional comment).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jørgen Farum Jensen (16-11-2005)
Kommentar
Fra : Jørgen Farum Jensen


Dato : 16-11-05 16:48

Martin S. D: Møller wrote:
> Kan det lade sig gøre at have forskellige CSS i IE og FF.
>
> Vis det kan. Kan det så lade sig gøre ved hjælp med en <!--[ifxx]
> xxx [endif]-->
> Eller er der en anden metode der er beder.
>

Jeg tror, du spørger om du kan lave speciel kode til
IE ved hjælp af Microsofts betingede kommentarer
(conditional comments).

Og svaret på det er ja, du omslutter det, som kun
IE skal ha' serveret, med disse kommentarer:

<!--[if lt IE 7]>
<style type="text/css" media="screen">
Dine IE-only formdeklarationer
</style>
<![endif]-->

Hvis du indsætter det i headdelen af siden /efter/ dit
normale stylesheet, vil kun IE læse det, og du kan
dermed sætte dine IE-only værdier her.

Jeg tror dog nok, det er mere almindeligt i det normale
stylesheet at indsætte såkaldte hacks, mere venligt
kaldet CSS/IE filtre. Eksempel:

#box {
width:200px;
float:left;
margin-left:20px;
}
* html #box {
margin-left:10px;
}

der ta'r vare på IE's dobbelt margin bug.


--

Med venlig hilsen

Jørgen Farum Jensen
http://www.webdesign101.dk


Jens Gyldenkærne Cla~ (16-11-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 16-11-05 23:48

Jørgen Farum Jensen skrev:

> Og svaret på det er ja, du omslutter det, som kun
> IE skal ha' serveret, med disse kommentarer:
>
> <!--[if lt IE 7]>

Ovenstående læses "Hvis browseren er en Windowsudgave af IE, mindre
end version 7. Da IE7 er under udvikling i øjeblikket, bør man ikke
bruge "lt IE 7" medmindre man virkelig vil skelne mellem IE7 og
tidligere IE-udgaver. I standardmode vil det ofte være mere logisk
at skelne mellem IE4/IE5.x og IE6/IE7 - hvad der kan gøres med
"lt IE 6"


> Jeg tror dog nok, det er mere almindeligt i det normale
> stylesheet at indsætte såkaldte hacks,

Måske, men de er ofte mere usikre.

> * html #box {

Ovenstående hacks er fx et af dem der ikke vil virke i IE7. Det kan
måske være tilsigtet (hvis IE6 m.fl. skal bruge hacket, mens IE7
ikke skal se det) - men man skal være klar over at der er denne
forskel.

Ved at bruge conditional comments har man bedre styr på hvilke IE-
versioner der påvirkes - der står det direkte i if-sætningen.

Se evt. følgende blog-indlæg vedr. IE7 og css-hacks:
<http://blogs.msdn.com/ie/archive/2005/10/12/480242.aspx>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jørgen Farum Jensen (17-11-2005)
Kommentar
Fra : Jørgen Farum Jensen


Dato : 17-11-05 10:59

Jens Gyldenkærne Clausen wrote:


>><!--[if lt IE 7]>
>
> Ovenstående læses "Hvis browseren er en Windowsudgave af IE, mindre
> end version 7. Da IE7 er under udvikling i øjeblikket, bør man ikke
> bruge "lt IE 7" medmindre man virkelig vil skelne mellem IE7 og
> tidligere IE-udgaver. I standardmode vil det ofte være mere logisk
> at skelne mellem IE4/IE5.x og IE6/IE7 - hvad der kan gøres med
> "lt IE 6"

Jeg går sådan set ud fra, at MS med IE7 vil fikse mange af
de ting, hvor tolkningen af css-egenskaberne også i IE6 i
standard modus er mangelfulde eller forkerte i forhold til
w3c-standarden.

Mit eksempel var vist dobbelt-margin bug'en på float'ede
elementer

>>Jeg tror dog nok, det er mere almindeligt i det normale
>>stylesheet at indsætte såkaldte hacks,
>
>
> Måske, men de er ofte mere usikre.
>
>
>>* html #box {

Jeg ved ikke hvad du mener med usikre, men et hack
er et hack, noget der ikke burde være der.

> Ovenstående hacks er fx et af dem der ikke vil virke i IE7. Det kan
> måske være tilsigtet (hvis IE6 m.fl. skal bruge hacket, mens IE7
> ikke skal se det) - men man skal være klar over at der er denne
> forskel.
>

Men i henseende til mange eksempler, inklusive det
netop nævnte, er denne typisk: Hvis MS retter både
dobbelt-margin-bug'en og den forkerte tolkning at
#box er barn af html, vil værdien i denne hack
jo ikke blive læst af IE7, men fortsat af IE6


> Ved at bruge conditional comments har man bedre styr på hvilke IE-
> versioner der påvirkes - der står det direkte i if-sætningen.

Men i hovedsagen er jeg da enig med dig, man skal
selvfølgelig være nogenlunde klar over konsekvenserne
af den kode man skriver. Det gælder vel her som altid...


--

Med venlig hilsen

Jørgen Farum Jensen
http://www.webdesign101.dk


Jens Gyldenkærne Cla~ (17-11-2005)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-11-05 11:41

Jørgen Farum Jensen skrev:

> Jeg går sådan set ud fra, at MS med IE7 vil fikse mange af
> de ting, hvor tolkningen af css-egenskaberne også i IE6 i
> standard modus er mangelfulde eller forkerte i forhold til
> w3c-standarden.

Det er også intentionen fra IE-teamet - men det er svært at vide
præcis hvor meget der bliver fikset.


> Mit eksempel var vist dobbelt-margin bug'en på float'ede
> elementer

Det eksempel jeg kommenterede havde kun pseudokode ("Dine IE-only
formdeklarationer") - og det var et svar på et generelt spørgsmål
om browserspecifik css-kode.

Derfor mener jeg det er uheldigt at angive "if lt IE 7" som en
generel løsning, uden at forklare hvad if-sætningen egentlig dækker
over.


>> Måske, men de er ofte mere usikre.

> Jeg ved ikke hvad du mener med usikre, men et hack
> er et hack, noget der ikke burde være der.

Der er to grunde til at jeg mener at et hack er mere usikkert end
en conditional.

For det første kan et hack påvirke alle browsere, mens en
conditional kun rammer IE/Win. Det kan selvfølgelig tænkes at en
browserproducent vælger at implementere understøttelse af IE-
conditionals, men så vidt jeg er orienteret er det ikke tilfældet,
og det er heller ikke planlagt.

For det andet er hacks følsomme over for browseropdateringer. Man
kan gå ind på en liste og tjekke hvilke browsere der rammes af et
givent hack i dag, men så snart en af browserne kommer i en ny
version - eller en helt ny browser kommer på banen - skal man
tjekke hvordan hacket nu fungerer. I IE6 og tidligere fungerer
child-selektoren fx ikke - derfor har mange angivet IE-specifik
kode med "html>body #foo". Når IE7 nu får fikset problemet med
childselektoren, virker den pludselig i IE. Det er fint hvis den
kode der hidtil har været skjult for IE7 så også virker i IE7, men
det kan man bare ikke være sikker på.

En conditional comment er (hvis den bruges korrekt) langt mere
stabil, fordi den bygger på versionsnumre. Det eneste man skal
huske, er at undgå at sætte lighedstegn mellem "nyeste IE-version i
dag" og "nyeste IE-version".


> Men i henseende til mange eksempler, inklusive det
> netop nævnte, er denne typisk: Hvis MS retter både
> dobbelt-margin-bug'en og den forkerte tolkning at
> #box er barn af html, vil værdien i denne hack
> jo ikke blive læst af IE7, men fortsat af IE6

Korrekt - men så skal man have tiltro til at MS enten fikser begge
problemer (hacket + css-fejlen) eller ingen af problemerne.
Hvis man bruger en conditional, er det let at ændre betingelsen når
man finder ud af om IE har rettet css-fejlen - man behøver kun at
bekymre sig om selve css-fejlen, og ikke om hack-understøttelsen.

Det er også hurtigt at indføre et nyt tjek, hvis der skulle være
brug for specialkode direkte til IE7.


> Men i hovedsagen er jeg da enig med dig, man skal
> selvfølgelig være nogenlunde klar over konsekvenserne
> af den kode man skriver. Det gælder vel her som altid...

Netop. Og mit hovedargument for at anbefale conditionals er da også
at det er let at afgøre hvilke browsere der rammes af det - det kan
simpelthen aflæses direkte i if-sætningen. Med et hack skal man
enten kunne huske hvilke browsere det rammer i hovedet, eller også
slå det op fra gang til gang.
Hacks kan ikke undgås helt, da andre browsere end IE/Win jo også
kan have brug for specialkode (det ville egentlig være fedt hvis FF
og Opera havde deres egen conditional-understøttelse). Men i det
omfang at man kan bruge en conditional i stedet for et hack, vil
jeg foretrække conditionalen.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste