Het probleem
Zoals misschien wel bekend zit er in firefox al tijden een bug die het absoluut positioneren van legend elementen binnen fieldsets er niet makkelijker op maakt. Een oplossing zou zijn om een span binnen de legend te plaatsen, maar dan blijft het probleem bestaan dat de padding van het fieldset element wordt meegenomen bij het absoluut positioneren van de legend>span.
Daarnaast vervuilt die span de opmaak, dus die voeg ik liever dynamisch toe.
De berekening voor het positioneren zou als volgt moeten zijn bij legend.style.bottom=0:
Maar firefox lijkt er dit van te maken:
Oplossing?
Ik dacht slim te zijn door een stukje javascript te schrijven wat de positie van het legend element ophaalt, en aan de hand daarvan checked of de positie wel of niet correct is. Wat blijkt: de opgegeven waardes voor offsetTop kloppen wel, en komen daarmee dus niet overeen met de daadwerkelijk gerenderde positie.
Testcase
Dit is hier te zien: http://yourboard.nl/tmp/test.htm
In de textbox kan je de padding van het fieldset element opgeven. Zet er bijvoorbeeld 50 in, en vergelijk firefox eens met opera/chrome/safari. Het verschil moge duidelijk zijn. Interessanter is echter, dat de waardes voor offset & de boudingclientrect wel de goede waardes zijn. Ik kan daarom dus niet detecteren of de legends correct zijn gerendered of niet.
De vraag
Heeft iemand enig idee hoe ik dit zonder gebruik van browser detects kan oplossen?
Zoals misschien wel bekend zit er in firefox al tijden een bug die het absoluut positioneren van legend elementen binnen fieldsets er niet makkelijker op maakt. Een oplossing zou zijn om een span binnen de legend te plaatsen, maar dan blijft het probleem bestaan dat de padding van het fieldset element wordt meegenomen bij het absoluut positioneren van de legend>span.
Daarnaast vervuilt die span de opmaak, dus die voeg ik liever dynamisch toe.
De berekening voor het positioneren zou als volgt moeten zijn bij legend.style.bottom=0:
JavaScript:
1
| legend.offsetTop=fieldset.offsetHeight-legend.offsetHeight |
Maar firefox lijkt er dit van te maken:
JavaScript:
1
| legend.offsetTop=fieldset.offsetHeight-legend.offsetHeight+fieldset.padding |
Oplossing?
Ik dacht slim te zijn door een stukje javascript te schrijven wat de positie van het legend element ophaalt, en aan de hand daarvan checked of de positie wel of niet correct is. Wat blijkt: de opgegeven waardes voor offsetTop kloppen wel, en komen daarmee dus niet overeen met de daadwerkelijk gerenderde positie.
Testcase
Dit is hier te zien: http://yourboard.nl/tmp/test.htm
In de textbox kan je de padding van het fieldset element opgeven. Zet er bijvoorbeeld 50 in, en vergelijk firefox eens met opera/chrome/safari. Het verschil moge duidelijk zijn. Interessanter is echter, dat de waardes voor offset & de boudingclientrect wel de goede waardes zijn. Ik kan daarom dus niet detecteren of de legends correct zijn gerendered of niet.
De vraag
Heeft iemand enig idee hoe ik dit zonder gebruik van browser detects kan oplossen?