ul ... a:hover reageert anders in IE8

Status
Niet open voor verdere reacties.

yammaski

Gebruiker
Lid geworden
9 mrt 2005
Berichten
284
De navigatie links verspringen on "hover" in IE8 (of IE compatibiliteitsweergave).
In IE9 en de andere browsers (FF & Chrome) werkt het zoals het moet.

Testpagina

Het lukt me maar niet om het te fixen.
Zoals je in de css ziet, heb ik al verschillende "hacks" voor IE8 moeten aanpassen.:evil:
Iemand met een idee ?


Groeten,
Yammaski.
 
Hoi yammaski,
Om te kijken wat er precies aan de hand is, ben ik maar eens helemaal opnieuw begonnen het lijstje in Firefox te maken, zonder alle IE-hacks.


  • Alle niet-opgegeven margins en paddings heb ik gereset op nul, zodat IE daarmee niet aan de haal kan gaan.
  • Alle absolute element-hoogtes in px heb ik geschrapt (anders gaat het mis als de bezoeker bv. in FF de lettergrootte opschaalt).
  • Ook de lettergrootte is in de relatieve em-eenheid gezet.
  • Ik heb een expliciete line-height ingevoerd om de hoogte van de list-items cross-browser gelijk te zetten.
  • Voor het gemak, om van extra margin/padding-wisseling bij hoveren af te zijn, heb ik de oranje blokjes niet als border gemaakt, maar toegevoegd aan het background-image.
  • Bij een hover wordt nu van background-position gewisseld om deze css-sprite op de juiste plek te krijgen.
  • De boven- en beneden-borders bij de hovers zijn ook toegevoegd aan de normale toestand van de links, maar dan in wit (de backgroudkleur), zodat daar ook geen narigheid mee kan gebeuren.

En wonder boven wonder:


  • Test: ontspring-ie.htm
  • Deze doet het zonder mopperen of hacks in IE7. :)
  • Werkt verder zoals verwacht in Firefox, Chrome, Opera en Safari.
  • Dus goede hoop dat ook IE8 en IE9 geen gespring geven (die kan ik niet testen).

Met vriendelijke groet,
CSShunter
 
Bedankt weeral ccshunter.
De achtergrond (blokje en gradient) heb ik apart gezet, ik had anders een fijn wit boordje links.
Nu heb ik nog wel 1 probleempje : de links staan "bold", hetgeen ik liever "normal" had gezien.
Dit is omdat de "a:link" zo is ingesteld voor de rest van de site.

Hoe kan ik dit nog fixen ?

Dit werkt, maar is het volgens de regels ?

Code:
.class_NavLeft_Normal a:link {
	font-weight: normal;
}

<li><span class="class_NavLeft_Normal"><a href="eigen-tekst-stickers.asp">eigen tekst</a></span></li>



Groeten,
Yammaski.
 
Laatst bewerkt:
Hoi Yammaski,
Bedankt weeral ccshunter.
Jawel, jawel, ;) maar je hebt m'n suggestie niet overgenomen om de sizes in em's ipv px op te nemen. Dat betekent als de bezoeker in FF de lettergrootte vergroot heeft zonder alles in te zoomen:

yam-no-px.png

De div-kop komt door de harde pixels over de inhoud heen te lopen, en op het eind lopen de items uit de inhoud-achtergrond (+ lijken verdwenen, omdat de tekst-kleur gelijk is aan de background-kleur van de pagina).
Ook door de harde pixels kan de bezoeker met IE als browser niet de lettergrootte aanpassen, als dat nodig is.

=======
Nu heb ik nog wel 1 probleempje : de links staan "bold", hetgeen ik liever "normal" had gezien.
Hoe kan ik dit nog fixen ?
Dit werkt, maar is het volgens de regels ? (...)
Ja, dat is volledig valid volgens de regels. Maar als je de regel "en ook zo eenvoudig mogelijk" aanhangt, kan het zonder een extra <span> in elke <a> te moeten zetten, en zonder de bijbehorende extra class.


  • Als je nog eens naar m'n testpagina van reactie #2 kijkt, zie je dat daarin (behalve een vereenvoudigde html/css-structuur) een
    #NavLeft li {font-weight: normal;}
    zit, die (zonder span) in ruststand de items niet bold maakt.

  • Die heb je weliswaar overgenomen, maar dat werkt niet omdat je verderop in de css hebt staan:
    Code:
    a:link {
        ...
        font-weight: bold;
        }
    Dat is specifieker dan wat in de li wordt opgegeven (de <a>'s zijn children van de <li>'s), en dit gaat dus de normal van de li overrulen.

  • Om dat te verhelpen, moet de normal uit de li gehaald worden, en toegevoegd worden aan de <a>'s van het lijstje:
    Code:
    #NavLeft a {
        ...
        font-weight: normal;
        }
    Nu is dit specifieker geworden dan de algemene link-setting met bold, en in het lijstje wint dus de normal.

=======
De achtergrond (blokje en gradient) heb ik apart gezet, ik had anders een fijn wit boordje links.
Dat kan, maar het hoeft niet.
Je kunt het boordje links (en ook het top-lijntje, om mooi aan te sluiten) opnemen in het combi-image. Dat scheelt weer een vertragende http-request van de browser naar de server:

yam-sprite-2-ill.png

Ik heb er hier een blauw kadertje omheen gezet om het beter te kunnen zien; in het echt is het deze: yam-sprite-2.png.
De onderrandjes van de hover-links zijn echte borders, zodat de hoogte van de achtergrond-afbeelding pijnloos kan meegroeien bij opschalen van de lettergrootte.
Ook in IE is het letterformaat schaalbaar (van "Extra klein" t/m "Extra groot").
In de afbeelding en de css een beetje scharrelen met de afstanden, en dan draait dat.

=======


Met vriendelijke groet,
CSShunter
__________
PS: In een paar pagina-namen van de links stonden spaties. Om die te vermijden (cq. in de links een %20 ipv de spatie te moeten zetten), heb ik die vervangen door - streepjes zoals die ook in de andere pagina's al staan.
 
Hola ... misschien heb ik het verkeerd gelezen, en moest het witte randje aan de linkerkant er juist niet in. :o
Dan kan het met de oude sprite:


 
Hallo csshunter,


sizes in em's ipv px
Op deze page staan de font-sizes toch in em's ?

Als ik de lettergrootte verander bij deze testpages, loopt het idd op een chaos uit. Doch op de site zelf, waar de navbar is ingeplant, is wordt alles goed weergegeven. Je kan weliswaar de lettergrootte wel veranderen, maar het maakt niets uit.

======================


Wat betreft de "links" ... ik versta het, maar dan staan de gewone links weer niet goed op de rest van de site. Dus zal ik toch moeten kiezen voor de <span>-oplossing ?




Groeten,
Yammaski.
 
Hoi Yammaski,
Op deze page staan de font-sizes toch in em's ?
Ja, sorry, dat is correct; ik had 'm niet goed onder de loep gelegd. Wat hier nog niet gebeurt, is een andere opmerking uit reactie #2: "Alle absolute element-hoogtes in px heb ik geschrapt (anders gaat het mis als de bezoeker bv. in FF de lettergrootte opschaalt)."
Op jouw pagina staat er nog in:
Code:
#NavLeft {
	...
	height: 610px;
} 
#NavLeft_Titel {
	...
	height: 10px;
}
Waarom het met deze hoogtes erbij op de complete pagina toch goed gaat, zou ik niet durven gokken: dat lijkt me eigenlijk onwaarschijnlijk. :rolleyes:

=======
Wat betreft de "links" ... ik versta het, maar dan staan de gewone links weer niet goed op de rest van de site.
Hé, dat zou niet mogen gebeuren, want de links in de #NavLeft staan nu volkomen geïsoleerd van de rest.

Vermoedelijk staat er in je algemene stylesheet nog iets wat de styles in de losse testpagina doorkruist.
  • Met een linkje naar een complete pagina valt daar denkelijk wel achter te komen.

Met vriendelijke groet,
CSShunter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan