Kom ihåg mig?
Home Menu

Menu


Problem med float i MSIE

Ämnesverktyg Visningsalternativ
Oläst 2008-02-24, 11:08 #1
turborakettis avatar
turboraketti turboraketti är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 76
turboraketti turboraketti är inte uppkopplad
Medlem
turborakettis avatar
 
Reg.datum: Feb 2008
Inlägg: 76
Jag har en meny uppbyggd som en lista, typ:
Kod:
<div id=menu>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
...snip...
</ul>
<br clear=all />
</div>
Jag vill ha alla li flytande i div:en, så jag använder denna CSS (borders tillagda i debugsyfte):
Kod:
div#menu { margin: 10px auto; padding-right: 100px; width: 690px; border: 1px solid blue; }
ul { margin: 0; padding: 0; margin-right: 100px; border: 1px solid green; }
li { list-style: none; float: left; padding: 2px 30px; border: 1px solid red; }
Jag behöver ha utrymme till höger i div:en för en absolut positionerad bild, därav padding-right och/eller margin-right.

I Firefox ser det ur som förväntat:


Men i MSIE (både 6 & 7) verkar inte varken padding-right för div#menu eller margin-right för ul respekteras:


Jag får inte ordning på detta. Har surfat och hittat tipsen att wrappa med en extra div eller att li måste vara display:inline, men inget av detta har hjälpt. En testsida finns här: natbyggarna.se/test-iefloat.php och där jag använder det skarpt är: concreta.se

Några idéer?
turboraketti är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-25, 09:54 #2
turborakettis avatar
turboraketti turboraketti är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 76
turboraketti turboraketti är inte uppkopplad
Medlem
turborakettis avatar
 
Reg.datum: Feb 2008
Inlägg: 76
Efter idogt letande och forumande har jag nu lösningen på detta. Svaret finns i fenomenet hasLayout, en egenskap i MSIE som jag tidigare inte ägnat så mycket uppmärksamhet, men som uppenbarligen gäckat webbutvecklare i många år. Jag löste det med en variant av the Holly Hack, dvs jag lade till följande CSS:
Kod:
ul { height: 1%; }
vilket gör att ul-elementet får layout-egenskaper i MSIE, vilket i sin tur innebär att flytande elements rörelsefrihet inuti ul:en blir begränsad av dess bredd, marginaler och paddings. Verkligheten överträffar ibland dikten.

Ett tack till Centauri på webdeveloper.com, som löste mitt problem.

För den som inte känner till hasLayout så väl rekommenderar jag denna grymt utförliga artikel:
http://www.satzansatz.de/cssd/onhavinglayout.html
turboraketti är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-27, 09:05 #3
Tarass avatar
Taras Taras är inte uppkopplad
Medlem
 
Reg.datum: Jan 2005
Inlägg: 135
Taras Taras är inte uppkopplad
Medlem
Tarass avatar
 
Reg.datum: Jan 2005
Inlägg: 135
Hack hit o hack dit..

testa med ul { width:100%}
Taras är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-27, 09:33 #4
turborakettis avatar
turboraketti turboraketti är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 76
turboraketti turboraketti är inte uppkopplad
Medlem
turborakettis avatar
 
Reg.datum: Feb 2008
Inlägg: 76
Det är ju samma sak, dvs det ger ul-elementet hasLayout. Dock ger det bieffekten att min ul får fel bredd (eftersom jag har en margin-right!=0 på ul), så jag föredrar nog height:1%. Inget av detta ska ju egentligen behövas, men eftersom man ibland behöver åtgärda brister i vissa webbläsare måste det till ett och annat "hack".
turboraketti är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-27, 10:06 #5
MMCs avatar
MMC MMC är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jan 2008
Inlägg: 560
MMC MMC är inte uppkopplad
Mycket flitig postare
MMCs avatar
 
Reg.datum: Jan 2008
Inlägg: 560
Citat:
Originally posted by turboraketti@Feb 27 2008, 10:33
Det är ju samma sak, dvs det ger ul-elementet hasLayout. Dock ger det bieffekten att min ul får fel bredd (eftersom jag har en margin-right=0 på ul), så jag föredrar nog height:1%. Inget av detta ska ju egentligen behövas, men eftersom man ibland behöver åtgärda brister i vissa webbläsare måste det till ett och annat hack.
Nu är jag inte bombsäker på det här och hinner inte pröva, men räcker det inte med height: auto för att ge ett element layout?
MMC är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-27, 11:36 #6
turborakettis avatar
turboraketti turboraketti är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 76
turboraketti turboraketti är inte uppkopplad
Medlem
turborakettis avatar
 
Reg.datum: Feb 2008
Inlägg: 76
Har inte provat heller, men:
Citat:
height: any value other than 'auto'
height: 1% is used in the Holly Hack.
säjer Ingo Chao i sin artikel. Han verkar ha koll.
turboraketti är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-27, 12:29 #7
Roberts avatar
Robert Robert är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jan 2004
Inlägg: 2 103
Robert Robert är inte uppkopplad
Klarade millennium-buggen
Roberts avatar
 
Reg.datum: Jan 2004
Inlägg: 2 103
Min första tanke var att li är av typen inline och kan därför inte ha marginaler och liknande och att det skulle räcka att sätta display:block på den?
Robert är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-27, 13:48 #8
turborakettis avatar
turboraketti turboraketti är inte uppkopplad
Medlem
 
Reg.datum: Feb 2008
Inlägg: 76
turboraketti turboraketti är inte uppkopplad
Medlem
turborakettis avatar
 
Reg.datum: Feb 2008
Inlägg: 76
Nja, li är ju faktiskt ett block-element default... Hursomhelst, enligt standarden ska ju alla värden på display utom 'none' ignoreras för element som är floating, men det finns ju någon bug i MSIE som går ut på att så inte är fallet. Lösningen skulle då vara att sätta display:inline på li, men det testade jag och det hjälpte inte.

-- Tillägg --
Här läste jag om det förresten:
http://www.positioniseverything.net/...oatIndent.html
http://www.positioniseverything.net/...ed-margin.html
turboraketti är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-02-27, 19:24 #9
Aerpe Aerpe är inte uppkopplad
Medlem
 
Reg.datum: Oct 2006
Inlägg: 221
Aerpe Aerpe är inte uppkopplad
Medlem
 
Reg.datum: Oct 2006
Inlägg: 221
Detta funkar för mig

Nu tog jag in lite css från min reset.css.

Med andra ord så behövs något i[*] elementen som man lägger stilarna på istället för[*] om det ska vara en "meny" liknande sak. Kan säkert ersätta[*] med[*]<span></span>

Kod:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>
<title>Test</title>
<style><!--

body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td {
margin:0;
padding:0;
}

ol,ul {
list-style:none;
}

#container{
	width:690px;
	margin:0 auto;
}

#navigation{float:left;width:690px;}
	#navigation ul{float:left;width:450px;}
	#navigation li{display:inline;}
	#navigation li a{float:left;border:1px solid #000;padding:5px 10px;margin:1px;height:30px;line-height:30px;width:50px;text-decoration:none;}
 *#navigation a:link{}
 *#navigation a:visited{}
 *#navigation a:hover{}
 *#navigation a:active{}

--></style>
</head>
<body>
	<div id="container">
 * *<div id="navigation">
 * * *<ul>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * * *<li><a href="#">Item</a></li>
 * * *</ul>
 * *</div>
 *</div>
</body>
</html>
Aerpe är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 04:07.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017