webForumDet fria alternativet

Hur fördelar man en horisontell list-menu jämnt?

HTML & CSS

6 svar · 667 visningar · startad av Danne V

Medlem sedan aug. 20068 090 inlägg
Frågan#1

Förr, på gamla goda tabell-tiden gick det ju lätt som en plätt. Men hur gör man med en lista och CSS?

Har en sajt sopm är 850px bred. Just nu ska en horisontell menu med 9 list-items in (kan bli allt från 6 till 13 senare). Men hur jag än bär mig åt så blir menyn antingen några pixlar för bred eller några pixlar för smal.

Alternativet är att ge varje <li> sin egen bredd och "fuska bort" eller "fuska till" någar pixlar här och där, eller?

Kan man inte få list-taggarna att snällt dela upp en given totalbredd på <ul> mellan sig?

Medlem sedan feb. 20041 816 inlägg
#2

Du kan ange bredden för dina <li> i procent. Dock behöver du gå in och ändra i CSS:n så fort det tillkommer eller tas bort menyval.

IE har lite problem med avrundningen så du kan nog behöva trixa lite med decimaler o grejer för att det ska rulla där också.

Medlem sedan maj 20007 492 inlägg
#3
ul {
	width:850px;
	display:table;
	}

ul li {
	display:table-cell;
	}

:f

Medlem sedan feb. 20041 816 inlägg
#4

Relaterat:

If you've ever wondered why your nicely-aligned navigation doesn't fill up the full contents of a container in these browsers, now you know why.

The especially strange part, in all of this, is that there's really no right, or wrong, here. How this behavior is supposed to play out by the rendering engine isn't dictated by the CSS specification, having it be left up to the implementation to render as it sees fit.

Källa: http://ejohn.org/blog/sub-pixel-problems-in-css/

Medlem sedan mars 200484 inlägg
#5

Jag vet inte riktigt om jag borde fortsätta i den här tråden, men den var klart närmast det jag sökte så jag provar.

Jag vill göra en horisontell lista, med 4 listalternativ (enbart text) som jag vill sätta på jämna mellanrum på 700px.

Går det inte att göra varje <li> till display:block på något sätt och få dessa att ha 175px var? Allt blir bara pannkaka när jag gör det, vore bussigt om någon kunde flika in. Har för mig att detta har funkat förut, men jag har lagt css-skillsen på hyllan för något år sedan tyvärr och försöker komma igång igen :)

Medlem sedan aug. 20068 090 inlägg
#6

Gör <a> till display:block och 175px bredd - inte <li>.
Om du sen lägger till borders på sidorna, så glöm inte att reducera bredden motsvarande.
Varning för att IE6 kan behöva nån conditional comment om du försöker göra menyn pixel-perfekt.

Medlem sedan mars 200484 inlägg
#7

Ah! Givetvis, det var där skon klämde. Strålande med snabb hjälp! Tack så mycket!

251 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
115 ms — ändringar (db)