Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    44

    div che sforano la pagina (sulle barre) IE

    Ciao,

    Ho un problema che non riesco a spiegare, in una pagina web ho dei div con delle immagini all'interno che vengono posizionati tramite javascript in funzione di altri elementi sulla pagina.
    Con Firefox tutto ok, con IE, quando scrollo, i div restano visibili oltre il normale spazio della pagina, cioè vanno a sovrapporsi allo spazio della barra di scorrimento...

    Mi sembra una magia VVoVe: .... come è possibile? C' qualche banalità che ignoro per caso?

    P.S.
    i div hanno "position: absolute"
    Giugallo

  2. #2
    Moderatrice di Grafica, Cerco e offro lavoro L'avatar di Myaku
    Registrato dal
    Nov 2006
    Messaggi
    10,349
    chiamatemi nostradamus :rollo:

    puoi postare il link (o in alternativa il codice, usando il tag code)?


  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    44
    allora, questo è il codice nella pagina relativo all'oggetto che deborda:

    codice:
    ....
    
    <div class="cartello" id="cartello_numeroCartello">
    	contenuto testuale (un striga tipo A1, A2 ecc.)
    </div>
    ....
    la funzione javascript che si occupa di posizionare i vari cartelli è posionaCartello:

    codice:
    ...
    //Posiziona i cartelli con il nome della paritzione
    function posizionaCartelli(){
    	
    	divs = document.getElementsByTagName("div");
    	for(i=0;i<divs.length;i++){
    	
    		splittedId = divs.item(i).id.split("_");
    		
    		if(splittedId[0] == "cartello"){
    
    			codice = splittedId[1];
    			
    			rif = document.getElementById("rif_cartello_"+codice);
    			cart = divs.item(i);
    			
    			rifPosition = getPosition(rif);
    			cartPosition = centraCartello(rifPosition[0], rifPosition[1], rif.offsetWidth, rif.offsetHeight, cart.offsetWidth, cart.offsetHeight);
    
    			cart.style.left = cartPosition[0]+"px";
    			cart.style.top = cartPosition[1]+"px";
    			
    			if(isIEBrowser())
    				cart.className="cartelloIE";
    		} 
    	}
    }
    
    //Restituisce la posizione dell'emento passato
    function getPosition(theElement){
    	positionX = 0;
    	positionY = 0;
    
    	while (theElement != null){
    	  positionX += theElement.offsetLeft;
    	  positionY += theElement.offsetTop;
    	  theElement = theElement.offsetParent;
    	}
    	
    	return [positionX, positionY];
    }
    
    //Restituisce le cordinate del cartello centrato sul centro dell'elemento di riferimento
    function centraCartello(rifPositionX, rifPositionY, rifWidth, rifHeight, cartWidth, cartHeight){
    	
    	centroRifX = rifPositionX + rifWidth/2;
    	centroRifY = rifPositionY + rifHeight/2;
    	
    	cartPositionX = centroRifX - cartWidth/2;
    	cartPositionY = centroRifY - cartHeight/2;
    	
    	return [cartPositionX, cartPositionY];
    }
    
    //Ritorna true se sta usando IE altrimenti false
    function isIEBrowser(){
    	browserName=navigator.appName; 
    	if (browserName=="Microsoft Internet Explorer")
    		return true;
    	
    	return false;
    }
    ...
    questo è il css dei cartelli

    codice:
    ...
    /*Cartello*/
    div.cartello{
    	width: 35px; 
    	height: 35px;  
    	position: absolute; 
    	text-align: center;  
    	background-image: url("/MeteoWebModule/imgCentraline/sfondoAut.jpg");
    }
    
    div.cartelloIE{
    	width: 35px; 
    	height: 35px; 
    	line-height: 35px; 
    	position: absolute; 
    	text-align: center;  
    	background-image: url("/MeteoWebModule/imgCentraline/sfondoAut.jpg");
    }
    ...
    A vederlo così sembrà chissà chè.... ma sostanzialmente prende le coordinate di un elemento sullo pagina e posiziona il cartello su quell'elemento centrandolo.

    L'unica differenza tra IE e Firefox è nella definizione del css, in IE c'è line-heigt altrimenti non mi centra verticalmente il testo.
    Giugallo

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 © 2026 vBulletin Solutions, Inc. All rights reserved.