background-color li:hover in een li

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Rexomnium
  • Registratie: September 2000
  • Laatst online: 11-09 13:56

Rexomnium

Vincam aut moriar

Topicstarter
Voor een navigatie heb ik de volgende code
HTML:
1
2
3
4
5
6
7
8
9
10
11
<ul>
                    
    <li><a href=""><em>Item 1</em></a></li> (hoofdlistitem)
    <li><a href=""><em>Item 2</em></a> (hoofdlistitem)
        <ul>
            <li><a href=""><em>Subitem 1</em></a></li> (sublistitem)
            <li><a href=""><em>Subitem 2</em></a></li> (sublistitem)
        </ul>
    </li>
    <li><a href=""><em>Item 3</em></a></li> (hoofdlistitem)
</ul>


Deze code is onveranderlijk, aangezien deze door een CMS wordt uitgespuugd. Ik heb geen controle over de HTML die ik kan gebruiken.

Nou wil ik dit aanpassen met behulp van CSS. Dat gaat allemaal redelijk, maar als ik een :hover wil maken voor elk listitem, dan gaat het niet zo als ik wil dat het gaat.

Bij elk listitem afzonderlijk wil ik namelijk een witte achtergrondkleur zien.

Als het om een singlelevel navigatie gaat, is dat eenvoudig te bereiken met:
Cascading Stylesheet:
1
2
3
li:hover a {
background: #fff;
}


Het probleem is dan dat de achtergrondkleur van een hoofdlistitem verandert als ik over een sublistitem hover. Als ik de CSS verander als volgt:
Cascading Stylesheet:
1
2
3
li ul li:hover a {
background: #fff;
}

Dan verandert alleen de achtergrondkleur van de sublistitems, maar dan doen helaas de hoofdlistitems het niet meer.

Als ik de beide CSS-varianten gezamenlijk gebruik, krijg ik hetzelfde resultaat als mijn eerste probleem.

Is dit op te lossen zonder gebruik te maken van Javascript? Kan iemand mij een goede tip geven?

We zijn allemaal vaandeldrager in een optocht van gekwetsten.


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 17:07

MueR

Admin Tweakers Discord

is niet lief

Cascading Stylesheet:
1
li:hover > a { background:#fff; }

Gebruik child selectors :)

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-09 08:45

Bosmonster

*zucht*

Let wel op dat dat niet werkt in IE6, mocht dat een eis zijn.

Het is uiteraard wel de beste oplossing.

Acties:
  • 0 Henk 'm!

  • Rexomnium
  • Registratie: September 2000
  • Laatst online: 11-09 13:56

Rexomnium

Vincam aut moriar

Topicstarter
Geweldig! Dank jullie wel. Het is inderdaad een vrij simpele vraag en dito oplossing. Ik wist alleen hoe en waar ik op moest zoeken in Google.

Toch lijkt het niet helemaal te werken, aangezien bij een hover over een child item het parent item ook een witte achtergrond krijgt. Dit is met name hinderlijk (in mijn ogen) als een parent item maar 1 child item heeft. Is dat ook nog op te lossen?

We zijn allemaal vaandeldrager in een optocht van gekwetsten.


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 17:07

MueR

Admin Tweakers Discord

is niet lief

De hoverstate op de parent blijft uiteraard wel actief ja. Als dat niet het geval zou zijn, zou ook je submenu verdwijnen.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Rexomnium
  • Registratie: September 2000
  • Laatst online: 11-09 13:56

Rexomnium

Vincam aut moriar

Topicstarter
MueR schreef op dinsdag 27 juli 2010 @ 12:37:
De hoverstate op de parent blijft uiteraard wel actief ja. Als dat niet het geval zou zijn, zou ook je submenu verdwijnen.
Goed, maar de bottomline is dat ik dus geen hover kan maken voor elke li afzonderlijk (of het nou een parent is of een child of een child-child)?

We zijn allemaal vaandeldrager in een optocht van gekwetsten.


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 17:07

MueR

Admin Tweakers Discord

is niet lief

Zonder javascript zal dat lastig gaan inderdaad, tenzij ik ergens niet aan denk.

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • LinkinTED
  • Registratie: Juli 2010
  • Laatst online: 19-08 10:53
Probeer dit eens:
Cascading Stylesheet:
1
2
3
4
5
6
7
8
li a {
display: block;
background: #fff;
}

li a:hover {
background: #f90;
}

Mocht dit niet werken, heb je dan een link naar een online voorbeeld?


Pseudo classes (:hover) werken in IE alleen maar op a tags, en niet op andere tags. Beste is om dat te blijven hanteren, en geen pseudo classes te gebruiken op andere tags.

Acties:
  • 0 Henk 'm!

  • R4gnax
  • Registratie: Maart 2009
  • Laatst online: 06-09 17:51
LinkinTED schreef op vrijdag 30 juli 2010 @ 09:37:
Pseudo classes (:hover) werken in IE alleen maar op a tags, en niet op andere tags.
In IE6 werkt de :hover pseudo class alleen op anchor tags. In IE7 werkt deze wèl op alle tags, maar zijn er nog problemen met descendant nodes die niet correct al hun CSS eigenschappen bijwerken. (Bijv. met selectors zoals "li:hover span".) In IE8 werkt deze gewoon goed en is er ook ondersteuning voor de :focus class.
Pagina: 1