Hjälp med hover - går inte hela vägen

Permalänk

Hjälp med hover - går inte hela vägen

Jag har en meny där hover går från första bokstaven till kanten på höger sig av meny diven. Det jag vill är att den ska gå över hela diven - Alltså från vänster kant till höger. Infogar en bild så ni ser mer exakt hur det ser ut!:

free screen capture

HTML:

<div class="menu"><div class="infobox"><h3>Kategorier</h3></div><ul class="leftmenu"> <li><a href="http://thefamily.be/filmer-2">Bilder</a></li>

CSS:

.menu { list-style: none; background-color: #d7ebf9; width: 200px; height: 450px; float: left; -moz-border-radius: 10px; border-radius: 10px; margin-top: 100px; margin-left: 0px; margin-bottom: 100px; border-style:solid; border-color:#8DC6FF; border-width:1px; color: #999; font: bold 12px/25px Arial, Helvetica; text-decoration: none; } h3{ text-align: center; vertical-align: middle; line-height: 50px; font-weight: bold; color: white; text-decoration: none; } .menu a:link { text-decoration:none; display: block; color: #3F4344; font-weight:bold; text-decoration:none; } a:visited { color:#3F4344; } .menu a:hover { background-color:#30ACFF; width:100%; color: white; -moz-border-radius: 10px; border-radius: 10px; } a:active { color:#3F4344; } ul.leftmenu li { list-style-type:none; margin:0; padding:0; }

ni behöver inte ora er för sluttags och sådant i html koden, jag har bara valt att inte ta med hela menyn eftersom jag anser att den är personlig. så lsutdivar och dylikt finns. och resten av menyn ser likadan ut som det ni får se!!

Tack på förhand!

Permalänk
Medlem
Skrivet av Jansson200:

Jag har en meny där hover går från första bokstaven till kanten på höger sig av meny diven. Det jag vill är att den ska gå över hela diven - Alltså från vänster kant till höger. Infogar en bild så ni ser mer exakt hur det ser ut!:

http://s21.postimg.org/3wvkgsnmf/image.png

free screen capture

ni behöver inte ora er för sluttags och sådant i html koden, jag har bara valt att inte ta med hela menyn eftersom jag anser att den är personlig. så lsutdivar och dylikt finns. och resten av menyn ser likadan ut som det ni får se!!

Tack på förhand!

Är det inte lättare att skippa listan och bara köra på vanliga länkar såhär?
http://jsfiddle.net/awbZD/1/

Om du nu vill ha en lista så får någon fixa med din lista, orkade inte fixa nu då jag ska sova.

Permalänk
Skrivet av BuruZ:

Är det inte lättare att skippa listan och bara köra på vanliga länkar såhär?
http://jsfiddle.net/awbZD/1/

Om du nu vill ha en lista så får någon fixa med din lista, orkade inte fixa nu då jag ska sova.

testade att köra utan lista men då vart jag tvungen att ha margin för att få ut texten lite och då vart hoverbaren likadan

Permalänk
Medlem
Skrivet av Jansson200:

Jag har en meny där hover går från första bokstaven till kanten på höger sig av meny diven. Det jag vill är att den ska gå över hela diven - Alltså från vänster kant till höger. Infogar en bild så ni ser mer exakt hur det ser ut!:

http://s21.postimg.org/3wvkgsnmf/image.png

free screen capture

HTML:

<div class="menu"><div class="infobox"><h3>Kategorier</h3></div><ul class="leftmenu"> <li><a href="http://thefamily.be/filmer-2">Bilder</a></li>

CSS:

.menu { list-style: none; background-color: #d7ebf9; width: 200px; height: 450px; float: left; -moz-border-radius: 10px; border-radius: 10px; margin-top: 100px; margin-left: 0px; margin-bottom: 100px; border-style:solid; border-color:#8DC6FF; border-width:1px; color: #999; font: bold 12px/25px Arial, Helvetica; text-decoration: none; } h3{ text-align: center; vertical-align: middle; line-height: 50px; font-weight: bold; color: white; text-decoration: none; } .menu a:link { text-decoration:none; display: block; color: #3F4344; font-weight:bold; text-decoration:none; } a:visited { color:#3F4344; } .menu a:hover { background-color:#30ACFF; width:100%; color: white; -moz-border-radius: 10px; border-radius: 10px; } a:active { color:#3F4344; } ul.leftmenu li { list-style-type:none; margin:0; padding:0; }

ni behöver inte ora er för sluttags och sådant i html koden, jag har bara valt att inte ta med hela menyn eftersom jag anser att den är personlig. så lsutdivar och dylikt finns. och resten av menyn ser likadan ut som det ni får se!!

Tack på förhand!

Kör display:block på a taggen. Eventuellt 100% width på menyn
Här är en jsfiddle jag slängde ihop. http://jsfiddle.net/LCy5T/

Permalänk
Skrivet av joss:

Kör display:block på a taggen. Eventuellt 100% width på menyn

antingen gör jag fel eller så funka inte det heller

Permalänk
Medlem
Skrivet av Jansson200:

antingen gör jag fel eller så funka inte det heller

http://jsfiddle.net/LCy5T/
Som du ser så har jag länkat in en CSS-reset, vilket man alltid bör göra, som nollställer all styling som en browser normalt sett lägger till. Om du inte vill ha den så får du sätta margin och padding till 0 på menyns li element

Permalänk
Skrivet av joss:

http://jsfiddle.net/LCy5T/
Som du ser så har jag länkat in en CSS-reset, vilket man alltid bör göra, som nollställer all styling som en browser normalt sett lägger till. Om du inte vill ha den så får du sätta margin och padding till 0 på menyns li element

Jag vill ju ha texten i mitten men att hovern ska gå över hela menyn. Och jag får hovern att gå så som du visat. men så fort jag flyttar länkarna till mitten av menyn så följer hovern med.

Permalänk
Medlem

Det där ser ut som webbläsarens default-padding på <ul>. Ge din ul padding: 0 så ska det se bra ut.

Visa signatur
Permalänk
99:e percentilen
Skrivet av BuruZ:

Är det inte lättare att skippa listan och bara köra på vanliga länkar såhär?
http://jsfiddle.net/awbZD/1/

Om du nu vill ha en lista så får någon fixa med din lista, orkade inte fixa nu då jag ska sova.

Man ska ha en lista för navigationslänkarna, då de just utgör en lista.

Semantik.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem
Skrivet av BuruZ:

Är det inte lättare att skippa listan och bara köra på vanliga länkar såhär?
http://jsfiddle.net/awbZD/1/

Om du nu vill ha en lista så får någon fixa med din lista, orkade inte fixa nu då jag ska sova.

Det är best-practice att göra menyn som en lista. Det är också SEO.

misspell
Visa signatur

~. Citera så jag hittar tillbaka .~

Permalänk
Medlem

Varför säger ni att det är semantiskt korrekt att göra menyn som en lista? Om något så är man mer specifik genom att inte använda sig utav en lista: varför wrappa sina länkar i två element som inte behövs? HTML5 <nav> eller ARIA roles är mer än tillräckligt för att berätta om länkarnas syfte. Det är lättare att skriva, lättare att skriva stilregler för och lättare för screen readers att ta sig genom.

Visa signatur
Permalänk
Medlem
Skrivet av Jansson200:

Jag vill ju ha texten i mitten men att hovern ska gå över hela menyn. Och jag får hovern att gå så som du visat. men så fort jag flyttar länkarna till mitten av menyn så följer hovern med.

Använd text-align:center på a taggen.
http://jsfiddle.net/LCy5T/3/

Permalänk
Medlem
Skrivet av HurMycket:

Man ska ha en lista för navigationslänkarna, då de just utgör en lista.

Semantik.

Skrivet av KeVVa:

Det är best-practice att göra menyn som en lista. Det är också SEO.

Nu när ni säger det så låter det bekant, brukar använda listor i menyer men kan ha hänt att jag skippat det någon gång.
Bra att man får lära sig gammalt ibland

Permalänk
99:e percentilen
Skrivet av Mest:

Varför säger ni att det är semantiskt korrekt att göra menyn som en lista? Om något så är man mer specifik genom att inte använda sig utav en lista: varför wrappa sina länkar i två element som inte behövs? HTML5 <nav> eller ARIA roles är mer än tillräckligt för att berätta om länkarnas syfte. Det är lättare att skriva, lättare att skriva stilregler för och lättare för screen readers att ta sig genom.

Jag har fått lära mig att det är en lista med länkar, alltså ska man använda <ul> och <li>. Jag gör så här:

<nav> <ul> <li>Start</li> <li>Bilder</li> <li>Videos</li> </ul> </nav>

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Medlem
Skrivet av HurMycket:

Jag har fått lära mig att det är en lista med länkar, alltså ska man använda <ul> och <li>. Jag gör så här:

<nav> <ul> <li>Start</li> <li>Bilder</li> <li>Videos</li> </ul> </nav>

Det är förmodligen inget fel med det ö.h.t.: i princip alla sidor jag bygger till vardags är sådana eftersom vårt CMS genererar navigation med listor, men det behövs definitivt inte.

Det närmaste praktisk nytta man kommer med semantik är att hjälpa sökmotorer att förstå syftet med alla element på en sida, samt att underlätta för synskadade att navigera ens sida genom sina skärmläsare. Att placera sin navigation i en lista tillför förmodligen inget till något av de ändamålen, då sökmotorer får mer än tillräcklig information om länkarnas syfte genom <nav>, och skärmläsare verkar läsa upp navigation utan lista mer effektiv än i lista. Man kan argumentera för att Lynx-ish webbläsare får snyggare navigation om navigationen ligger i en lista, och att riktikgt gamla webbläsare har svårt med att applicera stilregler på vad som initialt varit inline-element... Men ja. Nja.

Personligen tycker jag att rekommendera/använda listor för navigation är att krångla till det i onödan. Varför sitta och nollställa sin <ul> från punkter och paddings, floata sina <li> och sedan skriva den markupen runt alla länkar när det räcker med att bara visa sina <a> som inline-block?

Visa signatur
Permalänk
Medlem
Skrivet av Mest:

Det är förmodligen inget fel med det ö.h.t.: i princip alla sidor jag bygger till vardags är sådana eftersom vårt CMS genererar navigation med listor, men det behövs definitivt inte.

Det närmaste praktisk nytta man kommer med semantik är att hjälpa sökmotorer att förstå syftet med alla element på en sida, samt att underlätta för synskadade att navigera ens sida genom sina skärmläsare. Att placera sin navigation i en lista tillför förmodligen inget till något av de ändamålen, då sökmotorer får mer än tillräcklig information om länkarnas syfte genom <nav>, och skärmläsare verkar läsa upp navigation utan lista mer effektiv än i lista. Man kan argumentera för att Lynx-ish webbläsare får snyggare navigation om navigationen ligger i en lista, och att riktikgt gamla webbläsare har svårt med att applicera stilregler på vad som initialt varit inline-element... Men ja. Nja.

Personligen tycker jag att rekommendera/använda listor för navigation är att krångla till det i onödan. Varför sitta och nollställa sin <ul> från punkter och paddings, floata sina <li> och sedan skriva den markupen runt alla länkar när det räcker med att bara visa sina <a> som inline-block?

Kommer ihåg att jag läste en artikel av Chris Coyier om detta för ett par månader sedan. En helt klart intressant diskussion, då i stort sett alla göra sin menyer efter nav>ul>li-strukturen – utan att egentligen ha ett bra svar på varför.

Permalänk
Skrivet av joss:

Använd text-align:center på a taggen.
http://jsfiddle.net/LCy5T/3/

Skulle du kunna editera min befentliga css kod, så vore du världens gulligaste, har försökt med det du skrivit, men jag får bara inte till det, måste vara någonting jag missar. Ledsen om jag är trög men är fortfarande under upplärningstadiet. Hela css koden till menyen ser ut som följande:

/*menu*/ .menu { list-style: none; background-color: #d7ebf9; width: 200px; height: 450px; float: left; -moz-border-radius: 10px; border-radius: 10px; margin-top: 100px; margin-left: 0px; margin-bottom: 100px; border-style:solid; border-color:#8DC6FF; border-width:1px; color: #999; font: bold 12px/25px Arial, Helvetica; text-decoration: none; } .infobox { position: relative; width: 180px; height: 50px; margin:10px 10px 10px 10px; -moz-border-radius: 10px; border-radius: 10px; z-index: 99999; background: #444; background: -moz-linear-gradient(#444, #111); background: -webkit-gradient(linear,left bottom,left top,color-stop(0, #111),color-stop(1, #444)); background: -webkit-linear-gradient(#444, #111); background: -o-linear-gradient(#444, #111); background: -ms-linear-gradient(#444, #111); background: linear-gradient(#444, #111); color: #999; text-transform: uppercase; font: bold 12px/25px Arial, Helvetica; text-decoration: none; } h3{ text-align: center; vertical-align: middle; line-height: 50px; font-weight: bold; color: white; text-decoration: none; } .menu a:link { text-decoration:none; display: block; color: #3F4344; font-weight:bold; text-decoration:none; text-align: middle; text-align:left; } a:visited { color:#3F4344; } .menu a:hover { background-color:#30ACFF; width:100%; color: white; -moz-border-radius: 10px; border-radius: 10px; display:block; } a:active { color:#3F4344; } ul.leftmenu li { list-style-type:none; margin:0; padding:0; }

Permalänk
Medlem
Skrivet av Jansson200:

Skulle du kunna editera min befentliga css kod, så vore du världens gulligaste, har försökt med det du skrivit, men jag får bara inte till det, måste vara någonting jag missar. Ledsen om jag är trög men är fortfarande under upplärningstadiet. Hela css koden till menyen ser ut som följande:

Skrivet av Mest:

Det där ser ut som webbläsarens default-padding på <ul>. Ge din ul padding: 0 så ska det se bra ut.

Detta räcker:

.menu ul { padding: 0; }

Sedan så deklarerar du följande:

.menu a:link { text-decoration:none; display: block; color: #3F4344; font-weight:bold; text-decoration:none; text-align: middle; text-align:left; }

Ta bort text-align: middle för det är inte ett existerande CSS property och ändra text-align: left till text-align: center.

Visa signatur
Permalänk
Skrivet av Mest:

Detta räcker:

.menu ul { padding: 0; }

Sedan så deklarerar du följande:

.menu a:link { text-decoration:none; display: block; color: #3F4344; font-weight:bold; text-decoration:none; text-align: middle; text-align:left; }

Ta bort text-align: middle för det är inte ett existerande CSS property och ändra text-align: left till text-align: center.

äntigen, tack så mycket! Om jag vill ha texten lite mer åt vänster sida, hur gör jag då? när jag testar med typ margin-left: 20px; så blir hoverbaren dum igen! och kategorierna blev centrerade med varandra också, vill ha dom typ så att första bokstaven i varje kategori ligger i kant med varandra

Permalänk
Medlem
Skrivet av Jansson200:

äntigen, tack så mycket! Om jag vill ha texten lite mer åt vänster sida, hur gör jag då? när jag testar med typ margin-left: 20px; så blir hoverbaren dum igen! och kategorierna blev centrerade med varandra också, vill ha dom typ så att första bokstaven i varje kategori ligger i kant med varandra

Jaså, jag trodde du ville ha den centrerad. Ta bort text-align: center då och skriv till ett padding-värde på <a>. Chansar ut ett värde på 20px padding åt vänster:

.menu a:link { text-decoration:none; display: block; color: #3F4344; font-weight:bold; text-decoration:none; padding: 0 0 0 20px /* shorthand för padding, siffrorna står för padding-top right bottom left */ }

Visa signatur
Permalänk
Skrivet av Mest:

Jaså, jag trodde du ville ha den centrerad. Ta bort text-align: center då och skriv till ett padding-värde på <a>. Chansar ut ett värde på 20px padding åt vänster:

.menu a:link { text-decoration:none; display: block; color: #3F4344; font-weight:bold; text-decoration:none; padding: 0 0 0 20px /* shorthand för padding, siffrorna står för padding-top right bottom left */ }

Ja jag testade det där också, och nu är allt bra, förutom att hovern går utanför diven på höger sida. hoppas jag inte är jobbig med dig nu

Permalänk
Medlem
Skrivet av Jansson200:

Ja jag testade det där också, och nu är allt bra, förutom att hovern går utanför diven på höger sida. hoppas jag inte är jobbig med dig nu

Ta bort width: 100% från a och a:hover. Block-element fyller automatiskt det tillgängliga utrymmet, så att be den vara 100% bred gör att den blir 100% + de 20px vi satte i padding pga hur boxmodellen fungerar.

Alternativt (och enligt mig rekommenderat) kan du byta boxmodellen för din sida från content-box till border-box. Med border-box räknas paddings och borders inuti ett elements bredd istället att adderas utanför så som vi ser här. Använd border-box genom att lägga till följande i din CSS:

* { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }

Visa signatur
Permalänk
Skrivet av Mest:

Ta bort width: 100% från a och a:hover. Block-element fyller automatiskt det tillgängliga utrymmet, så att be den vara 100% bred gör att den blir 100% + de 20px vi satte i padding pga hur boxmodellen fungerar.

Alternativt (och enligt mig rekommenderat) kan du byta boxmodellen för din sida från content-box till border-box. Med border-box räknas paddings och borders inuti ett elements bredd istället att adderas utanför så som vi ser här. Använd border-box genom att lägga till följande i din CSS:

* { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; }

Nu fungerar det som jag tänkt mig! Tusen tack för hjälpen!