Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Top Panel stile youtheme

    Buon giorno, ho questo problema.Ho inserito un Panel, nella pagina, che viene richiamato tramite un pulsante( linguetta.png).Quando clicco, scende per un tot di pixel, quando ri-clicco torna su...

    Ho visto che c'è un problema, se apro il Panel, e poi, con lo scroll scorro la pagina, questo Panel mi segue, e fin qui ok, ma se clicco sulla linguetta, per chiuderlo, con FF ed OPERA, invece di salire, scende ulteriormente, creando una "schifezza", invece con IE è tutto ok..

    Vi posto il codice js, sperando possiate aiutarmi a risolvere questa schifezza

    codice:
    var panelWidth = 280;	// Width of help panel	
    	var slideSpeed = 15;		// Higher = quicker slide
    	var slideTimer = 10;	// Lower = quicker slide
    	var slideActive = true;	// Slide active ?
    	var initBodyMargin = 0;	// Left or top margin of your <body> tag (left if panel is at the left, top if panel is on the top)
    	var pushMainContentOnSlide = false;	// Push your main content to the right when sliding
    	var panelPosition = 1; 	// 0 = left , 1 = top
    	
    	/*	Don't change these values */
    	var slideLeftPanelObj=false;
    	var slideInProgress = false;	
    	var startScrollPos = false;
    	var panelVisible = false;
    	function initSlideLeftPanel(expandOnly)
    	{
    		if(slideInProgress)return;
    		if(!slideLeftPanelObj){
    			if(document.getElementById('dhtmlgoodies_leftPanel')){	// Object exists in HTML code?
    				slideLeftPanelObj = document.getElementById('dhtmlgoodies_leftPanel');
    				if(panelPosition == 1)slideLeftPanelObj.style.width = '100%';
    			}else{	// Object doesn't exist -> Create <div> dynamically
    				slideLeftPanelObj = document.createElement('DIV');
    				slideLeftPanelObj.id = 'dhtmlgoodies_leftPanel';
    				slideLeftPanelObj.style.display='none';
    				document.body.appendChild(slideLeftPanelObj);
    			}
    			
    			if(panelPosition == 1){
    				slideLeftPanelObj.style.top = "-" + panelWidth + 'px';
    				slideLeftPanelObj.style.left = '0px';	
    				slideLeftPanelObj.style.height = panelWidth + 'px';			
    			}else{
    				slideLeftPanelObj.style.left = "-" + panelWidth + 'px';
    				slideLeftPanelObj.style.top = '0px';
    				slideLeftPanelObj.style.width = panelWidth + 'px';
    			}
    			
    
    			if(!document.all || navigator.userAgent.indexOf('Opera')>=0)slideLeftPanelObj.style.position = 'fixed';
    		}	
    		
    		if(panelPosition == 0){
    			if(document.documentElement.clientHeight){
    				slideLeftPanelObj.style.height = document.documentElement.clientHeight + 'px';
    			}else if(document.body.clientHeight){
    				slideLeftPanelObj.style.height = document.body.clientHeight + 'px';
    			}
    			var leftPos = slideLeftPanelObj.style.left.replace(/[^0-9\-]/g,'')/1;
    		}else{
    			if(document.documentElement.clientWidth){
    				slideLeftPanelObj.style.width = document.documentElement.clientWidth + 'px';
    			}else if(document.body.clientHeight){
    				slideLeftPanelObj.style.width = document.body.clientWidth + 'px';
    			}
    			var leftPos = slideLeftPanelObj.style.top.replace(/[^0-9\-]/g,'')/1;			
    			
    			
    		}
    		slideLeftPanelObj.style.display='block';
    		
    		if(panelPosition==1)
    			startScrollPos = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
    		else
    			startScrollPos = Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);
    		if(leftPos<(0+startScrollPos)){
    			if(slideActive){
    				slideLeftPanel(slideSpeed);	
    			
    			}else{
    				document.body.style.marginLeft = panelWidth + 'px';
    				slideLeftPanelObj.style.left = '0px';
    			}
    		}else{
    			if(expandOnly)return;
    			if(slideActive){		
    				slideLeftPanel(slideSpeed*-1);
    			}else{
    				if(panelPosition == 0){
    					if(pushMainContentOnSlide)document.body.style.marginLeft =  initBodyMargin + 'px';
    					slideLeftPanelObj.style.left = (panelWidth*-1) + 'px';	
    				}else{
    					if(pushMainContentOnSlide)document.body.style.marginTop =  initBodyMargin + 'px';
    					slideLeftPanelObj.style.top = (panelWidth*-1) + 'px';						
    				}			
    			}
    		}	
    		
    		if(navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('Opera')<0){
    			window.onscroll = repositionHelpDiv;
    		
    			repositionHelpDiv();
    		}
    		window.onresize = resizeLeftPanel;
    		
    	}
    	
    	function resizeLeftPanel()
    	{
    		if(panelPosition == 0){
    			if(document.documentElement.clientHeight){
    				slideLeftPanelObj.style.height = document.documentElement.clientHeight + 'px';
    			}else if(document.body.clientHeight){
    				slideLeftPanelObj.style.height = document.body.clientHeight + 'px';
    			}		
    		}else{
    			if(document.documentElement.clientWidth){
    				slideLeftPanelObj.style.width = document.documentElement.clientWidth + 'px';
    			}else if(document.body.clientWidth){
    				slideLeftPanelObj.style.width = document.body.clientWidth + 'px';
    			}	
    		}
    	}
    	
    	function slideLeftPanel(slideSpeed){
    		slideInProgress =true;
    		var scrollValue = 0;
    		if(panelPosition==1)
    			var leftPos = slideLeftPanelObj.style.top.replace(/[^0-9\-]/g,'')/1;
    		else
    			var leftPos = slideLeftPanelObj.style.left.replace(/[^0-9\-]/g,'')/1;
    			
    		leftPos+=slideSpeed;
    		okToSlide = true;
    		if(slideSpeed<0){
    			if(leftPos < ((panelWidth*-1) + startScrollPos)){
    				leftPos = (panelWidth*-1) + startScrollPos;	
    				okToSlide=false;
    			}
    		}
    		if(slideSpeed>0){
    			if(leftPos > (0 + startScrollPos)){
    				leftPos = 0 + startScrollPos;
    				okToSlide = false;
    			}			
    		}
    		
    		
    		if(panelPosition==0){
    			slideLeftPanelObj.style.left = leftPos + startScrollPos + 'px';
    			if(pushMainContentOnSlide)document.body.style.marginLeft = leftPos - startScrollPos + panelWidth + 'px';
    		}else{
    			slideLeftPanelObj.style.top = leftPos + 'px';
    			if(pushMainContentOnSlide)document.body.style.marginTop = leftPos - startScrollPos + panelWidth + 'px';			
    			
    		}
    		if(okToSlide)setTimeout('slideLeftPanel(' + slideSpeed + ')',slideTimer); else {
    			slideInProgress = false;
    			if(slideSpeed>0)panelVisible=true; else panelVisible = false;
    		}
    		
    	}
    	
    	
    	function repositionHelpDiv()
    	{
    		if(panelPosition==0){
    			var maxValue = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
    			slideLeftPanelObj.style.top = maxValue;
    		}else{
    			var maxValue = Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);
    			slideLeftPanelObj.style.left = maxValue;	
    			var maxTop = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
    			if(!slideInProgress)slideLeftPanelObj.style.top = (maxTop - (panelVisible?0:panelWidth)) + 'px'; 		
    		}
    	}
    	
    	function cancelEvent()
    	{
    		return false;
    	}
    	function keyboardShowLeftPanel()
    	{
    			initSlideLeftPanel();
    			return false;	
    	
    	}
    	
    	function leftPanelKeyboardEvent(e)
    	{
    		if(document.all)return;
    		
    		if(e.keyCode==112){
    			initSlideLeftPanel();
    			return false;
    		}		
    	}
    	
    	function setLeftPanelContent(text)
    	{
    		document.getElementById('leftPanelContent').innerHTML = text;
    		initSlideLeftPanel(true);
    		
    	}
    	if(!document.all)document.documentElement.onkeypress = leftPanelKeyboardEvent;
    	document.documentElement.onhelp  = keyboardShowLeftPanel;
    Scusate se è troppo lungo, ma spero possa esservi utile a capire.
    Vi ringrazio e vi auguro una buona giornata

  2. #2
    apparentemente avrei risolto, apportando due modifichette
    codice:
    1°
    if(!document.all || navigator.userAgent.indexOf('Opera')>=0)slideLeftPanelObj.style.position = 'block';//era fixed
    
    2°
    if(panelPosition==0)//era 1, ma dava problemi con FF ed Opera, non chiudeva bene
    Vi ringrazio ragazzi, come sempre....
    Buona giornata a tutti.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.