Simple code that *tries* to keep the menus inside the bounderies of the page.
Code updated. It's still not perfect (obviosly) but it will now do another check to try and place the menus inside.
Just add this code to the coolmenus js file or link the cm_addins.js file to your page. *****************************************/ makeCM.prototype.onshow+=";this.pagecheck(b,pm,pm.subx,pm.suby,maxw,maxh)" makeCM.prototype.pagecheck=function(b,pm,x,y,w,h,n){ l=pm.lev+1 a=b.align; if(!n) n=1 ok=1 if(x<cmpage.x) {pm.align=1; ok=0;} else if(x+w>cmpage.x2){ pm.align=2; ok=0;} else if(y<cmpage.y) { pm.align=3; ok=0;} else if(h+y>cmpage.y2) {pm.align=4; ok=0;} if(!ok) this.getcoords(pm,this.l[l-1].borderX,this.l[l-1].borderY,pm.b.x,pm.b.y,w,h,this.l[l-1].offsetX,this.l[l-1].offsetY) x=pm.subx; y=pm.suby //Added check --- still not ok? --- part of the code by Denny Caldwell (thanks) -- badly immplemented by me though if(x<cmpage.x) {x += cmpage.x-x;} else if(x+w>cmpage.x2){ x = -(x+w-cmpage.x2);} else if(y<cmpage.y) { y = cmpage.y-y; } else if(h+y>cmpage.y2) {y = -(y+h-cmpage.y2);} if(x<cmpage.x) {x += cmpage.x-x;} else if(x+w>cmpage.x2){ x = -(x+w-cmpage.x2);} else if(y<cmpage.y) { y = cmpage.y-y;} else if(h+y>cmpage.y2) {y = -(y+h-cmpage.y2);} b.moveIt(x,y) }
/****************************************** CM_ADD-IN - checkscrolled (last updated: 01/29/02) This is supported by all browsers - IE5 for MAC has some screen refreshing problems - Using this for non-ie browsers might slow down the page because the other browsers do not support the onscroll event so the script uses a timer.
Now with two new features. - Set scrollstop to 1 to get another scrolling effect. If you do it will work the way it does on DHTMLCentral.com. Note that this feature is not perfect on menus not in rows. - If you have the hideselectboxes add-in as well this function will now check for interfearing selectboxes when you scroll as well.
Just add this code to the coolmenus js file or link the cm_addins.js file to your page as well. *****************************************/ if(bw.ie) makeCM.prototype.onconstruct='document.body.onscroll=new Function(c.name+".checkscrolled("+c.name+")")' else makeCM.prototype.onconstruct='setTimeout(c.name+".checkscrolled()",200)' //REMOVE THIS LINE TO HAVE SCROLLING ON FOR EXPLORER ONLY!! makeCM.prototype.lscroll=0 makeCM.prototype.scrollstop=0 //Set this variable to 1 for another scrolling effect. Leave at 0 to scroll regular makeCM.prototype.checkscrolled=function(obj){ if(bw.mac) return //REMOVE THIS LINE TO HAVE SCROLLING ON THE MAC AS WELL - unstable! var c=bw.ie?obj:this, o if(bw.ns4 || bw.ns6 || bw.op5) c.scrollY=window.pageYOffset else c.scrollY=document.body.scrollTop if(c.scrollY!=c.lscroll){ c.hidesub() if(c.scrollY>c.fromTop&&c.scrollstop){ for(i=0;i<c.l[0].m.length;i++){o=c.m[c.l[0].m[i]].b; o.moveIt(o.x,c.scrollY)} if(c.useBar) c.bar.moveIt(c.bar.x,c.scrollY) }else{ if(c.scrollstop){ for(i=0;i<c.l[0].m.length;i++){o=c.m[c.l[0].m[i]].b; o.moveIt(o.x,c.fromTop)} if(c.useBar) c.bar.moveIt(c.bar.x,c.barY) }else{ for(i=0;i<c.l[0].m.length;i++){o=c.m[c.l[0].m[i]].b; o.moveIt(o.x,o.oy+c.scrollY)} if(c.useBar) c.bar.moveIt(c.bar.x,c.barY+c.scrollY) } } c.lscroll=c.scrollY; cmpage.y=c.scrollY; cmpage.y2=cmpage.orgy+c.scrollY if(bw.ie){ clearTimeout(c.tim); c.isover=0; c.hidesub()} if(c.hideselectboxes){ //If you are using the hideselect add-in as well the script will now check for selectboxes when scrolling as well x = c.useBar?c.m[c.l[0].m[0]].b.x>c.bar.x?c.bar.x:c.m[c.l[0].m[0]].b.x:c.m[c.l[0].m[0]].b.x; y = c.useBar?c.m[c.l[0].m[0]].b.y>c.bar.y?c.bar.y:c.m[c.l[0].m[0]].b.y:c.m[c.l[0].m[0]].b.y; maxw = c.useBar?c.bar.w:c.rows?c.totw:c.maxw; maxh = c.useBar?c.bar.h:!c.rows?c.toth:c.maxh c.hideselectboxes(0,x,y,maxw,maxh,0) } } if(!bw.ie) setTimeout(c.name+".checkscrolled()",200) }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.