Permalänk

Hjälp med listor!

Hejhej

Håller på med en hemsida i skolan.

Menyn ska vara en horisontell lista av bilder där bilderna ska ligga i CSS filen.

Alltså måste jag använda mig av "list-style-image".

Jag har fått fram bilderna, men jag får dom inte att lägga sig rätt. De hamnar antingen vertikalt och delade i hälften, snett och jävligt eller helt åt helvete...

HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Namnlöst dokument</title> <link href="stilmall.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="container"> <div id="logo"> <!-- Här börjar logo, sidans logo --> <li id="logo"></li> </div> <!-- Här slutar logo --> <div id="menu"> <!-- Menyn, menyknapparna --> <ul> <li id="meny_a"></li> <li id="meny_b"></li> <li id="meny_x"></li> <li id="meny_m"></li> <li id="meny_p"></li> </ul> </div> <!-- Här slutar menu --> <div id="rubrik"> <!-- Början av rubrik, rubriken till innehållet --> </div> <!-- Här slutar rubrik --> <div id="content"> <!-- Innehållet på sidan --> </div> <!-- Här slutar content --> </div> <!-- Här slutar container --> </body> </html>

CSS:

@charset "utf-8"; body{ background-color: #333; } #content{ height:564px; width:963px; margin-top:0px; margin-left:32px; float:left; } #container{ margin-top:10px; height:768px; width:1024px; margin-left:auto; margin-right:auto; } #logo{ float:left; width:404px; height:142px; margin-top:20px; margin-left:32px; } #menu{ margin-top:66px; width:507px; height:49px; float:left; } #rubrik{ } #meny_a{ list-style-image:url(bilder/analyser.png); float:left; } #meny_b{ list-style-image:url(bilder/bilder.png); float:left; } #meny_x{ list-style-image:url(bilder/xhtml.png); float:left; } #meny_m{ list-style-image:url(bilder/multimedia.png); float:left; } #meny_p{ list-style-image:url(bilder/projekt.png); float:left; } #logo{ list-style-image:url(bilder/logo.png); }

Har ändrat en massa fram och tillbaka så det ser säkert jättekonstigt ut på något ställe nu

Finns det något annat sätt man kan göra på? Bilderna måste dock ligga i CSS filen.

Skulle vara schysst om någon kunde hjälpa mig. Säg till om det är nå mer ni behöver veta.

Tack på förhand
Alexandberg

Visa signatur

Stationär: [Intel i5 750 2,66Ghz]-[XFX Radeon HD5770 1GB DDR5]-[ASRock P55 Extreme]-[Corsair 2x2GB DDR3]-[WD Black 640GB]-[Corsair TX 650W]
Bärbar:  MacBook Pro 13" 2011 - Unboxing - Galleri
TV-spel: Playstation 3 40GB, Xbox 360 Elite, Wii, Gamecube, N64, NES

Permalänk
Medlem

Använd background-image istället för list-style-image; det sistnämnda har historiskt sett varit mindre plattformsoberoende.

PS: det korrekta sättet är att använda <img> eftersom du uttryckligen vill ha en lista av bilder.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av Teknocide:

Använd background-image istället för list-style-image; det sistnämnda har historiskt sett varit mindre plattformsoberoende.

Så det är bara att köra background och no repeat? Men hur fixar jag så att de lägger upp sig rätt då? Alltså såhär:

BILD BILD BILD BILD BILD

Nu är det typ såhär

BILD BILD BILD BILD

BILD

Hoppas du förstår

Visa signatur

Stationär: [Intel i5 750 2,66Ghz]-[XFX Radeon HD5770 1GB DDR5]-[ASRock P55 Extreme]-[Corsair 2x2GB DDR3]-[WD Black 640GB]-[Corsair TX 650W]
Bärbar:  MacBook Pro 13" 2011 - Unboxing - Galleri
TV-spel: Playstation 3 40GB, Xbox 360 Elite, Wii, Gamecube, N64, NES

Permalänk
Medlem

Att den ena lägger sig under beror på att du har för lite horisontellt utrymme för att alla ska få plats på en rad.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av Teknocide:

Att den ena lägger sig under beror på att du har för lite horisontellt utrymme för att alla ska få plats på en rad.

Testade med att öka men det hjälpte inte.

Nu ser det iaf ut såhär:

  • BILD

  • BILD

  • BILD

  • BILD

  • BILD

och det är bara en bit av bilden som syns.

Visa signatur

Stationär: [Intel i5 750 2,66Ghz]-[XFX Radeon HD5770 1GB DDR5]-[ASRock P55 Extreme]-[Corsair 2x2GB DDR3]-[WD Black 640GB]-[Corsair TX 650W]
Bärbar:  MacBook Pro 13" 2011 - Unboxing - Galleri
TV-spel: Playstation 3 40GB, Xbox 360 Elite, Wii, Gamecube, N64, NES

Permalänk
Medlem

det har inget med dina margins att göra då?

Visa signatur

Gaming: Asus 3080 Ti + 5900X
ESXI: Intel NUC,i7-8559U 32GB Ram,1TB
Rojter: Edgerouter 4, WAN 1000/1000

Permalänk
Medlem

Om du använder <img> så kommer hela bilden garanterat att synas ^^,

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av qhrizz:

det har inget med dina margins att göra då?

Vilka tänker du på?

Det känns som att bara en rad ryms på listan, och det som inte ryms tas bort, alltså syns inte hela bilden.
Hur kan man fixa det?

Sen antar jag väl att man ska köra float:left för att få dom bredvid varann på något sätt?

Visa signatur

Stationär: [Intel i5 750 2,66Ghz]-[XFX Radeon HD5770 1GB DDR5]-[ASRock P55 Extreme]-[Corsair 2x2GB DDR3]-[WD Black 640GB]-[Corsair TX 650W]
Bärbar:  MacBook Pro 13" 2011 - Unboxing - Galleri
TV-spel: Playstation 3 40GB, Xbox 360 Elite, Wii, Gamecube, N64, NES

Permalänk
Medlem
Skrivet av Alexandberg:

Vilka tänker du på?

Det känns som att bara en rad ryms på listan, och det som inte ryms tas bort, alltså syns inte hela bilden.
Hur kan man fixa det?

Sen antar jag väl att man ska köra float:left för att få dom bredvid varann på något sätt?

hmm läste fel i css:en

prova ta bort float?

Visa signatur

Gaming: Asus 3080 Ti + 5900X
ESXI: Intel NUC,i7-8559U 32GB Ram,1TB
Rojter: Edgerouter 4, WAN 1000/1000

Permalänk
Skrivet av qhrizz:

hmm läste fel i css:en

prova ta bort float?

Det är ju bara #menu och alla #meny_* som påverkar listan.

Testade att ta bort float:left i #menu men det blev bara fel.

Visa signatur

Stationär: [Intel i5 750 2,66Ghz]-[XFX Radeon HD5770 1GB DDR5]-[ASRock P55 Extreme]-[Corsair 2x2GB DDR3]-[WD Black 640GB]-[Corsair TX 650W]
Bärbar:  MacBook Pro 13" 2011 - Unboxing - Galleri
TV-spel: Playstation 3 40GB, Xbox 360 Elite, Wii, Gamecube, N64, NES

Permalänk
Medlem
Skrivet av Alexandberg:

Det är ju bara #menu och alla #meny_* som påverkar listan.

Testade att ta bort float:left i #menu men det blev bara fel.

#meny_a{
list-style-image:url(bilder/analyser.png);
float:left;
}

#meny_b{
list-style-image:url(bilder/bilder.png);
float:left;
}

#meny_x{
list-style-image:url(bilder/xhtml.png);
float:left;
}

#meny_m{
list-style-image:url(bilder/multimedia.png);
float:left;
}

vad händer om du tar bort float ur bilderna? för nu sätter du väl att alla bilder ska alignas till vänster?

Visa signatur

Gaming: Asus 3080 Ti + 5900X
ESXI: Intel NUC,i7-8559U 32GB Ram,1TB
Rojter: Edgerouter 4, WAN 1000/1000

Permalänk
Skrivet av qhrizz:

#meny_a{
list-style-image:url(bilder/analyser.png);
float:left;
}

#meny_b{
list-style-image:url(bilder/bilder.png);
float:left;
}

#meny_x{
list-style-image:url(bilder/xhtml.png);
float:left;
}

#meny_m{
list-style-image:url(bilder/multimedia.png);
float:left;
}

vad händer om du tar bort float ur bilderna? för nu sätter du väl att alla bilder ska alignas till vänster?

Oj sorry, jag bytte ut allt i #meny_* mot background-image och no repeat, så det är så det ser ut utan float.

Lägger jag till float så försvinner allt.

Visa signatur

Stationär: [Intel i5 750 2,66Ghz]-[XFX Radeon HD5770 1GB DDR5]-[ASRock P55 Extreme]-[Corsair 2x2GB DDR3]-[WD Black 640GB]-[Corsair TX 650W]
Bärbar:  MacBook Pro 13" 2011 - Unboxing - Galleri
TV-spel: Playstation 3 40GB, Xbox 360 Elite, Wii, Gamecube, N64, NES

Permalänk
Medlem

Det är inte så konstigt eftersom dina li-element är tomma. Ett tomt flutet element tar som standard upp 0 pixlar + paddings.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av Teknocide:

Det är inte så konstigt eftersom dina li-element är tomma. Ett tomt flutet element tar som standard upp 0 pixlar + paddings.

Aha.

Testade att lägga padding och margin på #menu li och då syntes hela bilderna.

Ska det gå att lägga in float i #meny_* nu eller hur ska jag göra?

Edit: La in float:left i #menu li också och nu ligger dom på rad, men ny syns inte hela bilderna på bredden, antar att jag måste lägga in nå margin eller padding där med.

Visa signatur

Stationär: [Intel i5 750 2,66Ghz]-[XFX Radeon HD5770 1GB DDR5]-[ASRock P55 Extreme]-[Corsair 2x2GB DDR3]-[WD Black 640GB]-[Corsair TX 650W]
Bärbar:  MacBook Pro 13" 2011 - Unboxing - Galleri
TV-spel: Playstation 3 40GB, Xbox 360 Elite, Wii, Gamecube, N64, NES

Permalänk
Medlem

Ett riktigt sätt är att ha img-taggar inuti dina listor. Eftersom en bild har en bredd och en höjd så anpassas det automatiskt och allt är frid och fröjd.

Det andra sättet som OCKSÅ är riktigt, speciellt om du använder bilder som representerar ett textinnehåll, är att lämna ursprungstexten i dina LI-element och dölja den genom ett negativt textindrag. Detta har den (stora) fördelen att dina menylänkar faktiskt betyder något för sökmotorer.

I det andra fallet behöver du ange bredd och höjd för varje listelement beroende på hur stor bild du vill använda.

Varför vill du länka in bilder genom CSS?

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av Teknocide:

Ett riktigt sätt är att ha img-taggar inuti dina listor. Eftersom en bild har en bredd och en höjd så anpassas det automatiskt och allt är frid och fröjd.

Det andra sättet som OCKSÅ är riktigt, speciellt om du använder bilder som representerar ett textinnehåll, är att lämna ursprungstexten i dina LI-element och dölja den genom ett negativt textindrag. Detta har den (stora) fördelen att dina menylänkar faktiskt betyder något för sökmotorer.

I det andra fallet behöver du ange bredd och höjd för varje listelement beroende på hur stor bild du vill använda.

Varför vill du länka in bilder genom CSS?

Min lärare sa att vi skulle göra det så att det blev lättare sen så vi slapp lägga in bilder på varje undersida vi gör. Men tyckte det var lite konstigt för vi måste ju ändå lägga in alla listor igen, så då kan väl bilderna lika gärna ligga där? Men jag vet inte...

Edit: Har en annan fråga; När man lägger bilderna i en lista så åker dom ju iväg en bit för att göra plats för prickarna, indrag och allt vad det är... Kan man skriva in så att den tar bort allt sånt eller måste man göra margin -*px för att bilderna ska hamna rätt?

Visa signatur

Stationär: [Intel i5 750 2,66Ghz]-[XFX Radeon HD5770 1GB DDR5]-[ASRock P55 Extreme]-[Corsair 2x2GB DDR3]-[WD Black 640GB]-[Corsair TX 650W]
Bärbar:  MacBook Pro 13" 2011 - Unboxing - Galleri
TV-spel: Playstation 3 40GB, Xbox 360 Elite, Wii, Gamecube, N64, NES

Permalänk
Medlem
Skrivet av Alexandberg:

Min lärare sa att vi skulle göra det så att det blev lättare sen så vi slapp lägga in bilder på varje undersida vi gör. Men tyckte det var lite konstigt för vi måste ju ändå lägga in alla listor igen, så då kan väl bilderna lika gärna ligga där? Men jag vet inte...

Både din lärares tanke och din egen iakttagelse stämmer.

Om det är en lista med bilder så ska dessa bilder representeras av ett img-element. Det säger sig ju mer eller mindre självt. Ett bra exempel på detta är ett bildgalleri, vilket är en förskönande term för en lista med bilder.

Om det istället är en tillsnyggad meny man vill skapa där varje menyval representeras av en egen bild, så är CSS-lösningen praktisk. Jag skulle vilja påstå att den inte är korrekt varje gång; ibland är det faktiskt just en lista med bilder man är ute efter och inte en meny där varje menyval visas som en grafisk bild. Jag förstår att detta kanske låter som ordvrängeri, men skillnaden är större än man först kan ana.

Om du vill skapa en meny rekommenderar jag att du börjar med att göra en textbaserad version av din lista i HTML:

<ul id="fiskmeny"> <li id="fisk_1">Torsk</li> <li id="fisk_2">Sej</li> <li id="fisk_3">Kolja</li> <li id="fisk_4">Piggvar</li> </ul>

Styla dina element till den bredd och höjd du vill ha (jag antar att du vill att alla element ska ha samma höjd):

#fiskmeny li {height:30px;} #fisk_1 {width:100px;} #fisk_2 {width:90px;} #fisk_3 {width:100px;} #fisk_4 {width:120px;}

För att de ska lägga sig sida vid sida kan du till exempel använda float:left:

#fiskmeny li {height:30px; float:left;}

Skrivet av Alexandberg:

Edit: Har en annan fråga; När man lägger bilderna i en lista så åker dom ju iväg en bit för att göra plats för prickarna, indrag och allt vad det är... Kan man skriva in så att den tar bort allt sånt eller måste man göra margin -*px för att bilderna ska hamna rätt?

Sätt margin:0; padding:0; på ul-elementet och display:block; på de li som inte ska ha prickar. Om du floatar element så är display:block; underförstått och du behöver inte använda det.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av Teknocide:

Både din lärares tanke och din egen iakttagelse stämmer.

Om det är en lista med bilder så ska dessa bilder representeras av ett img-element. Det säger sig ju mer eller mindre självt. Ett bra exempel på detta är ett bildgalleri, vilket är en förskönande term för en lista med bilder.

Om det istället är en tillsnyggad meny man vill skapa där varje menyval representeras av en egen bild, så är CSS-lösningen praktisk. Jag skulle vilja påstå att den inte är korrekt varje gång; ibland är det faktiskt just en lista med bilder man är ute efter och inte en meny där varje menyval visas som en grafisk bild. Jag förstår att detta kanske låter som ordvrängeri, men skillnaden är större än man först kan ana.

Om du vill skapa en meny rekommenderar jag att du börjar med att göra en textbaserad version av din lista i HTML:

<ul id="fiskmeny"> <li id="fisk_1">Torsk</li> <li id="fisk_2">Sej</li> <li id="fisk_3">Kolja</li> <li id="fisk_4">Piggvar</li> </ul>

Styla dina element till den bredd och höjd du vill ha (jag antar att du vill att alla element ska ha samma höjd):

#fiskmeny li {height:30px;} #fisk_1 {width:100px;} #fisk_2 {width:90px;} #fisk_3 {width:100px;} #fisk_4 {width:120px;}

För att de ska lägga sig sida vid sida kan du till exempel använda float:left:

#fiskmeny li {height:30px; float:left;}

Tack för all information.

Så här ser det ut nu:

Det är så jag hade tänkt att ha det. Är det bäst att köra bilderna i CSS då?

Citat:

Sätt margin:0; padding:0; på ul-elementet och display:block; på de li som inte ska ha prickar. Om du floatar element så är display:block; underförstått och du behöver inte använda det.

Det fixade saken, tack

Visa signatur

Stationär: [Intel i5 750 2,66Ghz]-[XFX Radeon HD5770 1GB DDR5]-[ASRock P55 Extreme]-[Corsair 2x2GB DDR3]-[WD Black 640GB]-[Corsair TX 650W]
Bärbar:  MacBook Pro 13" 2011 - Unboxing - Galleri
TV-spel: Playstation 3 40GB, Xbox 360 Elite, Wii, Gamecube, N64, NES

Permalänk
Medlem

Ja där tycker jag att du ska köra med CSS. Jag tycker dock att du ska ha med de faktiska orden i din lista! Du kan "gömma" textinnehåll i listan genom att sätta ett stort negativt indrag på varje li i menyn, text-indent:-99999px; exempelvis

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av Teknocide:

Ja där tycker jag att du ska köra med CSS. Jag tycker dock att du ska ha med de faktiska orden i din lista! Du kan "gömma" textinnehåll i listan genom att sätta ett stort negativt indrag på varje li i menyn, text-indent:-99999px; exempelvis

Ok, tack för tipset, ska göra det. Och tack för allt annat du har hjälpt mig med.

Visa signatur

Stationär: [Intel i5 750 2,66Ghz]-[XFX Radeon HD5770 1GB DDR5]-[ASRock P55 Extreme]-[Corsair 2x2GB DDR3]-[WD Black 640GB]-[Corsair TX 650W]
Bärbar:  MacBook Pro 13" 2011 - Unboxing - Galleri
TV-spel: Playstation 3 40GB, Xbox 360 Elite, Wii, Gamecube, N64, NES

Permalänk
Medlem
Skrivet av Alexandberg:

Ok, tack för tipset, ska göra det. Och tack för allt annat du har hjälpt mig med.

Kul att vara till nytta

Visa signatur

Kom-pa-TI-bilitet