Avatar billede tjacob Juniormester
14. april 2012 - 07:56 Der er 21 kommentarer og
1 løsning

Hjælp til CSS menu

Jeg har bikset denne side sammen fra forskellige kilder, hvor jeg har barberet kraftigt i koden. Se siden her: http://www.mhtips.dk/EkspX.htm

Mit problem er tekstfarven på links. Når et top-level menupunkt har subitems, skal farven på top-level menupunktet fortsat være hvid når der hoves på sub-level menupunkterne.

Jeg har prøvet at sætte "color: #fff;" ind i mange forskelige comboer, men kan ikke få det til at spille.

Nogen forslag?
Avatar billede NielsErikP Mester
14. april 2012 - 12:49 #1
Hej...

Kan du ikke gøre sådan :



.Top-level:hover li {
    color: #fff;
}

Avatar billede tjacob Juniormester
14. april 2012 - 13:08 #2
Hej Niels Erik

Tak for forsøget. Det gør desværre ingen forskel.
Problemet er at stylingen af <a> overrider de andre styles.
Avatar billede tjacob Juniormester
14. april 2012 - 13:09 #3
Hovsa -skulle have været en kommentar.......
Avatar billede olebole Juniormester
14. april 2012 - 17:05 #4
<ole>

Drop dine A elementer. Du har ikke noget at bruge dem til. I stedet kan du bruge li:hover.

Derudover er float fortrinligt til f.eks. at lave tekstomløb omkring et billede eller en boks. Til at lægge block elementer ved siden af hinanden, bør man i stedet bruge display:inline-block.

Den er skabt og skræddersyet til opgaven, og du undgår at flå elementer ud af sidens naturlige flow - samt at 'hacke' dig ud af de deraf følgende problemer med clear.

Det er ikke uden grund, at float af flere og flere bliver kaldt tabellernes afløser, når det gælder element-abuse i HTML  *o)

/mvh
</bole>
Avatar billede tjacob Juniormester
14. april 2012 - 17:34 #5
Tak for dine bemærkninger ole -jeg vil lave det om til inline-block.

Nu skulle jeg bruge <a>'erne til at loade sider i content_container.

-Det hele skal ligge i asp, så content_container er i virkeligheden en ASP NET ContentPlaceHolder.

Men siderne kan selvfølgelig loades uden <a> med noget onclick i code-behind eller med javascript.
Avatar billede olebole Juniormester
14. april 2012 - 17:57 #6
Så lad A'erne ligge - men brug li:hover
Avatar billede tjacob Juniormester
17. april 2012 - 16:43 #7
Det ser ikke ud til at vi kommer nærmere en løsning.......

Jeg har besluttet mig for at bruge <A>, og så leve med at toplevel menuen ikke bliver præcis som den skulle.

Så hvis i vil lægge nogle svar? -så jeg kan få lukket.

olebole: Nu har jeg eksperimenteret lidt med inline-block, og det er heller ikke helt uproblematisk, da der tilsyneladende kommer skjulte margener på div'erne pga whitespace i markup'en.
Så enten er man nødt til stille sin kode lidt kunstigt op, eller bruge float (og dermed clear) alligevel. Eller kender du bedre løsninger?
Avatar billede olebole Juniormester
17. april 2012 - 17:50 #8
"Jeg har besluttet mig for at bruge <A>" >> Jamen, så er den potte jo ude - for så får du det ikke til at virke, som du ønsker.

Nej, der opstår ikke 'skjulte marginer', men det kan vel ikke komme bag på nogen, at der opstår mellemrum mellem inline elementer, der står på hver sin linje.

At slette linjeskift mellem inline elementer for at få dem til at stå lige ved siden af hinanden, er ikke spor kunstigt. Det har været helt almindelig praksis siden begyndelsen af 90'erne, da HTML kom til verden.

At flå elementer ud af sidens naturlige flow er derimod kunstigt. Det bliver vi nok ikke enige om, men sådan er det nu engang. Jeg har gennem mange år vænnet mig til at diskutere med folk, om det hensigtsmæssige i at undlade at bruge tabeller til layoutformål. Det er der også mange, der synes, er 'kunstigt' og uoverskueligt ... tjahh.

Hvis jeg havde haft bedre løsninger end at bruge HTML, som det er tænkt, og som man altid har gjort, ville jeg have givet dig dem  =)
Avatar billede olebole Juniormester
17. april 2012 - 17:51 #9
Jeg samler ikke point, så det må være NielsErikP's - men tak for tilbudet  =)
Avatar billede tjacob Juniormester
17. april 2012 - 19:33 #10
"for så får du det ikke til at virke, som du ønsker."

Nej, det gør jeg desværre ikke, men det jo fordi der ikke er kommet bedre forslag. A overrider jo også div eller li der er formateret med inline-block, som jeg i øvrigt da HAR tænkt mig at bruge.
Og jo, det KAN komme bagpå nogen (mig!) at linieskift tæller med,
-især fordi sproget i alle mulige andre sammenhænge komplet ignorerer det.
Avatar billede olebole Juniormester
17. april 2012 - 19:39 #11
"Nej, det gør jeg desværre ikke, men det jo fordi der ikke er kommet bedre forslag" >> Jo, det er der da!

"A overrider jo også div eller li der er formateret med inline-block" >> Det forstår jeg ikke. Hvad mener du?

"Og jo, det KAN komme bagpå nogen (mig!) at linieskift tæller med,
-især fordi sproget i alle mulige andre sammenhænge komplet ignorerer det."
>> Nej, tværtimod. Det er lige efter bogen/standarden  =)

<span style="background:red">Blabla</span>
<span style="background:red">Blabla</span>
<hr>
<span style="background:red">Blabla</span>
<span style="background:red">Blabla</span>

Det er der ikke spor mærkeligt i  =)
Avatar billede olebole Juniormester
17. april 2012 - 19:40 #12
Sådan skulle det selvfølgelig se ud:

<span style="background:red">Blabla</span>
<span style="background:red">Blabla</span>
<hr>
<span style="background:red">Blabla</span><span style="background:red">Blabla</span>
Avatar billede olebole Juniormester
17. april 2012 - 19:43 #13
Det svarer fuldstændig til, at:

Ole
Bole

- renderes som:

Ole Bole
Avatar billede NielsErikP Mester
17. april 2012 - 22:25 #14
Hej...

Som ole siger i #6 må det absolut være :



li:hover {
  color: #fff;
}



Sku du bruge et svar, så er det her!
Avatar billede tjacob Juniormester
18. april 2012 - 18:39 #15
OK olebole, point taken omkring linieskift.

For at vende tilbage til det tråden handler om:

Det må være mig der er tungnem, for jeg kan ikke få det til at virke.

Jeg har strippet siden for alt undtagen menuen: http://www.mhtips.dk/

Som i kan se hjælper det INTET at sætte en color i li:hover, da stylen på A-tagget overrider den.
Og hvis jeg udelader stylen på A-tagget, så bliver den bare blå.

Hvis en af jer har løsningen kunne i så ikke vise den fulde kode?
-Nu fylder den ikke meget...

PS Du får pointene for forsøget Niels Erik, da olebole ikke vil have nogen
Avatar billede olebole Juniormester
18. april 2012 - 19:04 #16
Har du prøvet noget i stil med:

li:hover a {
  color: #fff;
}
Avatar billede olebole Juniormester
18. april 2012 - 19:06 #17
- og så skal du formodentlig også bruge noget à la:

li:hover li a {
  color: #000;
}
Avatar billede tjacob Juniormester
18. april 2012 - 19:17 #18
Ja, jeg havde prøvet li:hover a

Det giver det ønskede resultat på toplevel, men som du korrekt formoder så gør det alle sublevelmenupunkter hvide.

Jeg havde ikke forsøgt li:hover li a, men den gør dem alle sorte igen (altså ingen hover effekt).

Men nu har jeg da en ny retning at teste i, så mange tak for forslaget!
Avatar billede olebole Juniormester
18. april 2012 - 19:36 #19
li:hover a,
li:hover li:hover a {
  color: #fff;
}
li:hover li a {
  color: #000;
}
Avatar billede tjacob Juniormester
18. april 2012 - 19:51 #20
Ja, der var den sgu!!!!!

MANGE tak for hjælpen olebole.

Nu har jeg jo givet Niels Erik points, men skal jeg ikke oprette et spm. med points til dig?
Avatar billede olebole Juniormester
18. april 2012 - 19:59 #21
Ellers tak, jeg samler ikke point - men tak for tilbudet  =)
Avatar billede NielsErikP Mester
18. april 2012 - 21:47 #22
Hej...

Tak for point :-)
Godt du fandt en løsning!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester