
maj 1, 2005

Hur får jag IE att bortse ifrån vissa attribut som jag har i en CSS?
Exempel:
CSS
.menupopup {
Z-INDEX: 3000;
POSITION: absolute;
DISPLAY: none;
(detta ska inte =<IE7 se)
MARGIN-BOTTOM: 17px
BOTTOM: 0px;
RIGHT: 1px;
(/detta)
(detta ska bara =< IE7 se)
MARGIN-LEFT: 55px;
LEFT: 1px;
TOP: 0px;
(/detta)
}
Jag kan ju givetvis lägga in det som
generic.css
.menupopup {
Z-INDEX: 3000;
POSITION: absolute;
DISPLAY: none;
}
<!--[if !lte IE 7]>
non-ie_crap.css
<![endif]-->
.menupopup {
MARGIN-BOTTOM: 17px
BOTTOM: 0px;
RIGHT: 1px;
}
<!--[if lte IE 7]>
ie_crap.css
<![endif]-->
.menupopup {
MARGIN-LEFT: 55px;
LEFT: 1px;
TOP: 0px;
}
Men det blir sÃ¥ klöddigt med tre filer. En huvudfil som det ska vara i moderna webbläsare och sen en anus-fil för IE7 och äldre vore najs. GÃ¥r det sÃ¥ att säga radera attribut som har laddats in i en tidigare CSS och bortse ifrÃ¥n dessa, vilket isf skulle göras i ie_crap.css? För det funkar inte att exempelvis sätta ”RIGHT: 0px” i efterhand för dÃ¥ existerar attributet och ställer till problem i renderingen.
Några idéer?

mars 14, 2001

Det går ju alltid att lösa det genom att ha två css-filer, en för alla vettiga browser och en annan för IE.
Om jag minns rätt.
<link rel="stylesheet" type="text/css" href="not-ie.css" />
<link rel="stylesheet" type="text/css" href="ie.css" />
Annars ska det inte vara några problem att ha flera css attribut eftersom de skrivs över av nästa, så länge man det specifika för IE sist. Så har jag själv gjort flera gånger.
En annan lösning är att göra tex såhär:
body
{
background: white; /* all browsers */
*background: black; /* black on ie7 only */
_background: blue; /* blue on ie 6 only */
}

maj 1, 2005

Snorch wrote: Det går ju alltid att lösa det genom att ha två css-filer, en för alla vettiga browser och en annan för IE.
Om jag minns rätt.
<link rel="stylesheet" type="text/css" href="not-ie.css" />
<link rel="stylesheet" type="text/css" href="ie.css" />
Jo, men då har du en extra CSS för den generiska koden som funkar i båda webbläsarna, därav tre filer totalt. Om man bara har de ovanstående så har man två uppsättningar kod där 99% är identiskt, och det blir extra arbete att underhålla två filer som ska ha samma innehåll.
Snorch wrote: Annars ska det inte vara några problem att ha flera css attribut eftersom de skrivs över av nästa, så länge man det specifika för IE sist. Så har jag själv gjort flera gånger.
En annan lösning är att göra tex såhär:body
{
background: white; /* all browsers */
*background: black; /* black on ie7 only */
_background: blue; /* blue on ie 6 only */
}
Njae, att skriva över ett attribut är inte samma sak som att bortse ifrÃ¥n det. Säg att den generiska koden har ”BOTTOM: 0px;” för en klass, sÃ¥ kan jag inte fÃ¥ ie att bortse ifrÃ¥n denna i efterhand. Att sätta ”BOTTOM: null;” funkar ju inte. För sÃ¥ fort jag sätter ett värde pÃ¥ ett attribut sÃ¥ sätter det ett constraint, och sen gÃ¥r det bara att ändra värde pÃ¥ det, inte fÃ¥ det att försvinna.

mars 14, 2001

Nej jag tänkte mer att du använder tvÃ¥ filer med allt i, mer arbete blir det sÃ¥klart (om man nu ändrar sÃ¥ mycket när det väl är klart) men man har Ã¥ andra sidan allt samlat, inga ”include”-filer.
Inser att jag inte läste dina exempel ordentligt.
Ska det inte gå att använda [if IE] före själva css-koden, likt det nedan. Har för mig jag sett något sånt exempel tidigare. Prova släng in det på varje rad i första koden du har i först inlägget.
[if ! IE] MARGIN-BOTTOM: 17px
[if lte IE] MARGIN-LEFT: 55px;
osv.

Most Users Ever Online: 694
Currently Online:
83 Guest(s)
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Andreas Galistel: 16287
Jonas Klar: 15897
ilg@dd: 10810
Nyhet: 10607
Mind: 10550
Ctrl: 10355
Gueno: 9881
Guest: 9344
Snorch: 8881
Callister: 8468
Newest Members:
evarus2
evarus
Alex Aleksandra
Streetslevel
absorc
Termin_ruleZ2
angsamerah
mrbeardsweden
landfarm
ipesodozect
Forum Stats:
Groups: 11
Forums: 59
Topics: 146630
Posts: 1300967
Member Stats:
Guest Posters: 2
Members: 78407
Moderators: 0
Admins: 11
Administrators: nordicadmin, Henrik Berntsson, Anton Karmehed, Carl Holmberg, Joel Oscarsson, Mikael Linnér, Mikael Schwartz, Andreas Paulsson, Nickebjrk, Mattias Pettersson, EmxL