webForumDet fria alternativet

Hjälp med meny i två frames

JavaScript

2 svar · 265 visningar · startad av Obbelix

Medlem sedan okt. 2002257 inlägg
Frågan#1

Håller på med en drop-down meny där "huvudvalen" ska ligga i en frame och undermenyerna ska komma upp i en annan frame.
Har kommit så långt att allt funkar som jag vill utom att när sidan där undermenyerna ska komma upp i är "nerscrollad" typ till hälften så funkar ju det inte med att sätta "top:5px;" på div:en.
Hur gör man för att få reda på hur mycket sidan är scrollad så man kan addera det med standardvärdet?

Medlem sedan aug. 20039 340 inlägg
#2

Moderna webbläsare (Mozilla-baserade samt Opera) har stöd för CSS-attributet position: fixed, vilket gör att ett element ligger kvar på en plats hur dokumentet än skrollas.
Tyvärr använder de flesta en omodern webbläsare (Internet Explorer) vilket gör att man måste göra en special lösning för dem. Den består i att läsa av document.body.scrollTop och addera den till top-värdet om Internet Explorer används, samt att sätta position: fixed; om Internet Explorer används. Här är lite exempelkod.

<style type="text/css">
.menuclass	{position: fixed; left: 50px; top: 0px; background: green;}
</style>
<script type="text/javascript">
function fixMenu(){
	if (document.getElementById("menuid").style.position!="absolute")
		document.getElementById("menuid").style.position="absolute";

	document.getElementById("menuid").style.top = (document.body.scrollTop+5) + "px"

}

window.onload = function(){
	if (document.all && !window.opera){
		window.onscroll = fixMenu;
		fixMenu();
	}else{
		document.getElementById("menuid").style.position="fixed";
	}
}
</script>
Medlem sedan okt. 2002257 inlägg
#3

Tackar!

257 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)