verticaal navigatiemenu met andere hover lukt niet

Status
Niet open voor verdere reacties.

damnsharp

Terugkerende gebruiker
Lid geworden
6 jan 2012
Berichten
1.414
Goedemiddag,
Ik ben bezig met een verticaal navigatiemenu en er gaan een paar dingen niet zoals ik wil.
Eerst linkje: www.albuswebdesign.nl/helpmij

1. De hover moet een grijze rand bij hoofdmenu geven en een oranje rand bij submenu maar hoe ik de hover regel bij het submenu weet ik niet.

1. als ik over menu ga met muis schiet logo_links naar beneden. Dat is vast vanwege de top-margin die ik bij de #navigation ul heb ingesteld maar hoe anders? Als ik bijv. de a:hover van het menu in plaats van een "border" een "outline" geef gaat het wel goed maar dat ziet er weer anders uit.

2. het submenu wil ik letters wit maar ik krijg dat niet ingesteld.

3. laatste, submenu grijs is in eerste instantie wat te smal, hoe breder maken? Wordt wel breder bij hover.

Nou, ik ga weer verder proberen maar als er tips zijn, graag!!!
 
Hoi (alweer :p)

1. ul.sub-level li:hover ?
de tweede 1. Probeer aan #navigation li een vaste height zoals height:30px; want nu past hij zich aan aan de border.
2. Voeg .sub-level a { color:#ffffff; } toe aan je stylesheet
3. Door bij ul.sub-level li de width aan de passen.

Ik zou btw je submenu systeem wat verbeteren, want bij mij kan ik niet naar de submenu toe dan verdwijnt hij al (Chrome)

Succes :)
 
Ah goedemiddag Casss! Gezellig :) En bedankt voor het meedenken, echt top. :thumb:
Ja, weer lekker met CSS bezig. Al doende leert men toch.

Inderdaad ik schiet ook nogal eens uit het menu. Komt denk ik doordat er bij de menu items te veel ruimte omheen zit. Da's wel jammer want ik wil het eigenlijk zo laten. Heb nu maar paar pixels gedaan en dan gaat het bij mij wel beter.

Vraag 1 lukt half, althans ik krijg nu een mooie oranje border maar om een grijze border heen van de 1e hover.

Super, de tweede vraag 1 is opgelost, dank je!

Mijn vraag 2, de letters wit door middel van een van de volgende lukt me niet:
Code:
.sub-level a { color:#ffffff; } /* sub-level tekst wit */
of nog wat anders geprobeerd
Code:
.ul.sub-level li a { color:#ffffff; } /* sub-level tekst wit */
Lastig ik probeer met Firebug het uit te rafelen maar die wil niet goed naar submenu natuurlijk toe, beetje krom gezegd maar misschien snap je wat ik bedoel.

Vraag 3 oplossing gaat nu ook goed.
 
Doordruppelen van bovenuit de waterval: de C van Cascade !

Hoi damnsharp,

Algemene zaken!
  • Tip 1: Probeer met zo min mogelijk classes en id's te werken, dat geeft heldere html en css.
  • Tip 2: Zorg in de html-code voor goed inspring-werk, dan is simpel te zien op welk niveau een bepaald element zich in de cascade bevindt.
  • Tip 3: Elementen op hetzelfde niveau die allemaal dezelfde opmaak moeten krijgen, hebben geen class of id nodig: die zijn allemaal tegelijk te benaderen. Classes of id's zijn alleen nodig als er onderlinge verschillen moeten optreden (of soms als aangrijpingspunt voor javascript-bewerkingen).

Nu staat er dit:
HTML:
...
	<div id ="navigation"> 
	<ul class="top-level">
			<li ><a href="#">Home</a> </li>
			<li ><a href="#">Over</a>
		<ul class="sub-level">
			<li><a href="#">Sub Menu Item 1</a></li>
		<li><a href="#">Sub Menu Item 2</a></li>
			<li><a href="#">Sub Menu Item 3</a></li>
		<li><a href="#">Sub Menu Item 3</a></li>
		</ul>
</li>
<li ><a href="#">Contact</a></li>
			<li ><a href="#">FAQ</a>
                <ul class="sub-level">
	                	<li><a href="#">Sub Menu Item 1</a></li>
			<li><a href="#">Sub Menu Item 3</a></li>
			</ul>
</li>
...enz.
	</ul>
	</div>
Wat hetzelfde is als dit:
HTML:
<div id ="navigation">
	<ul class="top-level">
		<li><a href="#">Home</a></li>
		<li><a href="#">Over</a>
			<ul class="sub-level">
				<li><a href="#">Sub Menu Item 1</a></li>
				<li><a href="#">Sub Menu Item 2</a></li>
				<li><a href="#">Sub Menu Item 3</a></li>
				<li><a href="#">Sub Menu Item 3</a></li>
			</ul>
		</li>
		<li><a href="#">Contact</a></li>
		<li><a href="#">FAQ</a>
			<ul class="sub-level">
				<li><a href="#">Sub Menu Item 1</a></li>
				<li><a href="#">Sub Menu Item 3</a></li>
			</ul>
		</li>
		...enz.
	</ul>
</div>
Waarin je meteen kunt zien (a) dat sommige submenu-items verkeerde namen hebben, en (b) waar zich elementen op gelijk niveau bevinden, die geen class nodig hebben.
Zodat het kan worden:
HTML:
<div id ="navigation">
	<ul>
		<li><a href="#">Home</a></li>
		<li><a href="#">Over</a>
			<ul>
				<li><a href="#">Sub Menu Item 1</a></li>
				<li><a href="#">Sub Menu Item 2</a></li>
				<li><a href="#">Sub Menu Item 3</a></li>
				<li><a href="#">Sub Menu Item 4</a></li>
			</ul>
		</li>
		<li><a href="#">Contact</a></li>
		<li><a href="#">FAQ</a>
			<ul>
				<li><a href="#">Sub Menu Item 1</a></li>
				<li><a href="#">Sub Menu Item 2</a></li>
			</ul>
		</li>
		...enz.
	</ul>
</div>
De css-benadering is nu als volgt:

De hele box van het menu is aan te vatten met: #navigation {...}

De <ul> van het hoofdmenu is te bereiken met: #navigation ul {...}
  • NB: zonder tegenbericht gelden deze styles ook voor de <ul>'s van de submenu's, want dat zijn ook <ul>'s die nat worden onder de waterval van de #navigation.

Alle list-items van het hoofdmenu: #navigation li {...}
  • Dat is hetzelfde als: #navigation ul li {...}
  • Maar de <ul> heeft geen onderscheidend vermogen voor wat er onder die waterval zit, en kan weggelaten worden.
  • NB: zonder tegenbericht gelden deze styles ook voor de <li>'s in de submenu's.

Alle links van het hoofdmenu: #navigation a {...}
  • Is hetzelfde als #navigation ul a {...} of #navigation li a {...} of #navigation ul li a {...}
  • Omdat dit de enige eerstvolgende <a>'s in de #navigation zijn, kan de ul en/of li gevoeglijk weggelaten worden.
  • NB: zonder tegenbericht gelden deze styles ook voor de <a>'s in de submenu's.

Alle hover-toestanden van de hoofdmenu-<li>'s: #navigation li:hover {...}
  • NB: zonder tegenbericht ook voor de hovers over de <li>'s in de submenu's.

Alle hover-toestanden van de hoofdmenu-links: #navigation a:hover {...}
  • NB: zonder tegenbericht ook voor de link-hovers in de submenu's.

De <ul>'s van de submenu's: #navigation li ul {...}
  • Is hetzelfde als #navigation ul ul {...} of #navigation ul li ul {...}
  • Hier kunnen de tegenberichten komen: een paraplu tegen de waterval van boven!
  • De hier opgegeven styles tasten niet die van de <ul> van het hoofdmenu aan, want de hoofdmenu-<ul> heeft geen <li> en/of <ul> boven zich in de waterval vanaf de #navigation.

Op dezelfde manier voor de tegenberichten:
De <li>'s van de submenu's: #navigation li li {...}
De links van de submenu's: #navigation li li a {...}
De hovers van de submenu's: #navigation li li a:hover {...}

Attentie:
Er is een aanzienlijk verschil tussen #navigation a:hover {...} en #navigation li:hover {...}.
  • Dat gaat bv. spelen bij het optoveren van de submenu's.
  • Met #navigation a:hover ul {display:block} wordt het submenu niet meer getoond als je vanaf de link het submenu binnen hovert: op het submenu ben je van de link zelf af, dus van de hoverstaat weg; en dan klapt het submenu weer dicht.
  • Met #navigation li:hover ul {display:block} blijft het submenu openstaan zo lang je binnen het bereik van het list-item van het hoofdmenu zit. Dwz inclusief al zijn afstammelingen; ook als je over een submenu-link hovert, zit je nog steeds onder de <li>-druppels van het hoofdmenu, en blijft het submenu dus overeind.

Tot zover!
Op deze manier moet het ook niet moeilijk zijn om de tekst van de submenu-links wit te krijgen. ;) *)

Met vriendelijke groet,
CSShunter
______________
*)
Waarom het bij jou niet lukt:
Je hebt weliswaar: ul.sub-level li a {color: #FFFFFF;}
... maar je hebt ook: #navigation a { color: #666666;}

De eerste geldt voor alle links in een lijst met de class="sub-level": waar ze ook op de pagina zitten.
De tweede geldt alleen voor links die binnen de #navigation zitten, dwz dat is specifieker dan de links in het algemeen.
De tweede wint dan volgens de css-voorrangsregels (hoe specifieker, hoe meer voorrang), en de links blijven dan grijs.

Als je de eerste laat voorafgaan door #navigation, dan is de eerste specifieker, en worden ze wel wit.
Maar het kan dus ook als boven, met weglating van de class.

<edit>
O ja, Tip 4: Begin pas aan de submenu's als alles in het hoofdmenu goed geregeld is.
Als je alvast aan het submenu begint zonder dat het hoofdmenu in orde is, en dan later iets in de hoofdmenu-styles gaat aanpassen, kan dat via de waterval ernstige gevolgen hebben voor de submenu-styles!
</edit>
 
Laatst bewerkt:
Nou CSShunter, ik krijg een goede uitleg voor het maken van menu's en programmeren in CSS zeg! Ik ben er helemaal stil van. :thumb:
Ik ga het een paar keer doorlezen want er staat veel info in, waarvoor hartelijk dank! En ik wil het graag allemaal kunnen snappen. :cool:
Grappig, ik had al het idee dat ik best gestructureerd programmeerde maar het kan nog veel netter en inderdaad daardoor wordt het wel duidelijker.
Ik moet me ook goed realiseren merk ik dat er best wat CSS voorrangsregels zijn die ik niet in de gaten had. En de manier van items benaderen vond ik ook lastig maar dat wordt met jouw uitleg veel helderder.
Ik weet niet of je het al hebt gedaan maar je zou een boek moeten schrijven! Of al je tips die je al hebt geschreven bundelen. Ik bewaar ze in ieder geval goed :)
 
Eerste vraag die ik hier stelde zie ik boven al staan bij Attentie... :o dus haal hem weg.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan