webForumDet fria alternativet

Meny - fast "uppochned"

5 svar · 206 visningar · startad av jimpa

jimpaMedlem sedan jan. 2001361 inlägg
#1

Hej
Hittade en "fold out menu" som jag skulle vilja använda, men vill ändra lite.
Jag vill att istället för att menyn fälls ut neråt skulle jag vilja att den fälls ut uppåt!
Gör det att ändra på ett smidigt sätt?
Kolla här: http://www.dhtmlcentral.com/script/script.asp?id=22

<style type="text/css">
#divCont {position:absolute; z-index:1; left:50px; top:200px; height:400px; width:170px; visibility:hidden;}
.clTop   {position:absolute; z-index:1; width:170px; line-height:17px;}
.clSub   {position:absolute; z-index:1; left:0px; top:20px; width:170px; line-height:14px;}

/*** This sets the style for the links inside the menu. ***/
#divCont .clTop a {color:#000000; font-family:verdana,arial,helvetica,sans-serif; font-size:14px; font-weight:bold; text-decoration:none;}
#divCont .clTop a:hover {color:#000000; text-decoration:none;}
#divCont .clTop .clSub a {color:#777777; font-family:verdana,arial,helvetica,sans-serif; font-size:12px; font-weight:normal; text-decoration:none;}
#divCont .clTop .clSub a:hover {color:#333333; text-decoration:none;}  
</style>
<script language="JavaScript" type="text/javascript">
/**********************************************************************************   
FoldoutMenu 
*   Copyright (C) 2001 <a href="/dhtmlcentral/thomas_brattli.asp">Thomas Brattli</a>
*   This script was released at DHTMLCentral.com
*   Visit for more great scripts!
*   This may be used and changed freely as long as this msg is intact!
*   We will also appreciate any links you could give us.
*
*   Made by <a href="/dhtmlcentral/thomas_brattli.asp">Thomas Brattli</a> 
*********************************************************************************/

function lib_bwcheck(){ //Browsercheck (needed)
	this.ver=navigator.appVersion
	this.agent=navigator.userAgent
	this.dom=document.getElementById?1:0
	this.opera5=this.agent.indexOf("Opera 5")>-1
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; 
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
	this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
	this.ie=this.ie4||this.ie5||this.ie6
	this.mac=this.agent.indexOf("Mac")>-1
	this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
	this.ns4=(document.layers && !this.dom)?1:0;
	this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
	return this
}
var bw=new lib_bwcheck()

/*** variables you can configure ***/
			       
FoldNumber = <%=CountFoldNumber%>       //How many toplinks do you have?
var stayFolded = false			//Stay open when you click a new toplink?
foldImg = 1						//Do you want images (if not set to 0 and remove the images from the body)?
mainOffsetY = 0					//Vertical space adjustment between the main items, in pixels.

//This is the default image.
//Remember to change the actual images in the page as well, but remember to keep the name of the image.
var unImg=new Image();
unImg.src='foldoutmenu_arrow.gif'

var exImg=new Image();					//Making an image variable...
exImg.src='foldoutmenu_arrow_open.gif'	//...this is the source of the image that it changes to when the menu expands.

// NOTE: if you change the position of divCont from absolute to relative, you can put the foldoutmenu in a table.
// HOWEVER it will no longer work in netscape 4. If you wish to support netscape 4, you have to use absolute positioning.

/*** There should be no need to change anything beyond this. ***/

// A unit of measure that will be added when setting the position of a layer.
var px = bw.ns4||window.opera?"":"px";

if(navigator.userAgent.indexOf('Opera')>-1 && document.getElementById){ //Opera 5 resize fix.
	scrX= innerWidth; scrY= innerHeight;
	document.onmousemove= function(){
		if(scrX<innerWidth-10 || scrY<innerHeight-10 || scrX>innerWidth+10 || scrY>innerHeight+10){
			scrX = innerWidth;
			scrY = innerHeight;
			initFoldout();
		}
	};
}

//object constructor...
function makeMenu(obj,nest){
	nest= (!nest)?"":'document.'+nest+'.';
	this.el= bw.ie4?document.all[obj]:bw.ns4?eval(nest+'document.'+obj):document.getElementById(obj);	
   	this.css= bw.ns4?this.el:this.el.style;
	this.ref= bw.ns4?this.el.document:document;		
	this.x= (bw.ns4||bw.opera5)?this.css.left:this.el.offsetLeft;
	this.y= (bw.ns4||bw.opera5)?this.css.top:this.el.offsetTop;
	this.h= (bw.ie||bw.ns6)?this.el.offsetHeight:bw.ns4?this.ref.height:bw.opera5?this.css.pixelHeight:0;
    this.vis= b_vis;
	this.hideIt= b_hideIt;
    this.showIt= b_showIt;
    this.moveIt= b_moveIt;
	return this
}
//object methods...
function b_showIt(){this.css.visibility='visible'}
function b_hideIt(){this.css.visibility='hidden'}
function b_vis(){if(this.css.visibility=='hidden' || this.css.visibility=='HIDDEN' || this.css.visibility=='hide') return true;}
function b_moveIt(x,y){this.x=x; this.y=y; this.css.left=this.x+px; this.css.top=this.y+px}

/************************************************************************************
This is the function that changes the sub menus to folded or unfolded state.
************************************************************************************/
function menu(num){
	if(bw.bw){
		if (!stayFolded){
			for (var i=0; i<oSub.length; i++){
				if (i!=num){
					oSub[i].hideIt()
					if (foldImg)oTop[i].ref["imgA"+i].src = unImg.src
				}
			}
			for(var i=1; i<oTop.length; i++){
				oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].h)
			}
		}
		if (oSub[num].vis()){
			oSub[num].showIt()
			if (foldImg)oTop[num].ref["imgA"+num].src = exImg.src
		}else{
			oSub[num].hideIt()
			if(foldImg)oTop[num].ref["imgA"+num].src = unImg.src
		}
		for(var i=1; i<oTop.length; i++){ 
			if (!oSub[i-1].vis()) oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].h+oSub[i-1].h+mainOffsetY) 
			else oTop[i].moveIt(0,oTop[i-1].y+oTop[i-1].h+mainOffsetY)
		}
	}
}

/*********************************************************************
The init function... there should be no need to change anything here.
*********************************************************************/
function initFoldout(){
	//Fixing the browsercheck for opera... this can be removed if the browsercheck has been updated!!
	bw.opera5 = (navigator.userAgent.indexOf("Opera")>-1 && document.getElementById)?true:false
	if (bw.opera5) bw.ns6 = 0

	oTop = new Array()
	oSub = new Array()
	//Making the objects and hiding the subs...
	for (var i=0; i<FoldNumber; i++){
		oTop[i] = new makeMenu('divTop'+i,'divCont')
		oSub[i] = new makeMenu('divSub'+i,'divCont.document.divTop'+i)
		oSub[i].hideIt()
	}
	
	//Positioning the top objects...
	oTop[0].moveIt(0,0)
	for (var i=1; i<oTop.length; i++){
		oTop[i].moveIt(0, oTop[i-1].y+oTop[i-1].h+mainOffsetY)
	}
	
	//Making the containing menu object and showing it...
	oCont = new makeMenu('divCont')
	oCont.showIt()
}

// If the browser is ok, the script is started onload...
if(bw.bw) onload = initFoldout;
</script>

.....

<div id="divCont"> <!-- These are the contents of the foldoutmenu. -->

<div id="divTop0" class="clTop"><a href="#" onclick="menu(0); return false" onfocus="this.blur()"><img src="foldoutmenu_arrow.gif" name="imgA0" width=12 height=12 alt="" border="0"> [choice 0]</a><br>
<div id="divSub0" class="clSub">
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
</div><br>
</div>

<div id="divTop1" class="clTop"><a href="#" onclick="menu(1); return false" onfocus="this.blur()"><img src="foldoutmenu_arrow.gif" name="imgA1" width=12 height=12 alt="" border="0"> [choice 1]</a><br>
<div id="divSub1" class="clSub">
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
</div><br>
</div>

<div id="divTop2" class="clTop"><a href="#" onclick="menu(2); return false" onfocus="this.blur()"><img src="foldoutmenu_arrow.gif" name="imgA2" width=12 height=12 alt="" border="0"> [choice 2]</a><br>
<div id="divSub2" class="clSub">
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
</div><br>
</div>

<div id="divTop3" class="clTop"><a href="#" onclick="menu(3); return false" onfocus="this.blur()"><img src="foldoutmenu_arrow.gif" name="imgA3" width=12 height=12 alt="" border="0"> [choice 3]</a><br>
<div id="divSub3" class="clSub">
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
</div><br>
</div>

<div id="divTop4" class="clTop"><a href="#" onclick="menu(4); return false" onfocus="this.blur()"><img src="foldoutmenu_arrow.gif" name="imgA4" width=12 height=12 alt="" border="0"> [choice 4]</a><br>
<div id="divSub4" class="clSub">
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
</div><br>
</div>

<div id="divTop5" class="clTop"><a href="#" onclick="menu(5); return false" onfocus="this.blur()"><img src="foldoutmenu_arrow.gif" name="imgA5" width=12 height=12 alt="" border="0"> [choice 5]</a><br>
<div id="divSub5" class="clSub">
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
</div><br>
</div>

</div> <!-- Here ends the foldoutmenu. -->
Jesper TMedlem sedan nov. 20017 144 inlägg
#2

Det är väl bara att byta plats på divarna...eller?

<div id="divTop1" class="clTop"><div id="divSub1" class="clSub">
	<a href="#">This is a link</a><br>
	<a href="#">This is a link</a><br>
</div><<a href="#" onclick="menu(1); return false" onfocus="this.blur()"><img src="foldoutmenu_arrow.gif" name="imgA1" width=12 height=12 alt="" border="0"> [choice 1]</a><br>
br>
</div>
jimpaMedlem sedan jan. 2001361 inlägg
#3

Jag har provat det, men då syns ingenting!?

Jesper TMedlem sedan nov. 20017 144 inlägg
#4

Ok, men om du låt säga på "Länken" Choice 5 ändrar onclick="menu(5); till onclick="menu(4); då får du ju effekten av att menyn går uppåt.

jimpaMedlem sedan jan. 2001361 inlägg
#5

Jo visst det är ju en lösning, men det blir ju dock fel på den första länken!
Ingen annan lösning?

jimpaMedlem sedan jan. 2001361 inlägg
#6

Ingen som förstår sig på scriptet som vill hjälpa mig med detta?

135 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)