Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Show/Hide Layer

  1. #1
    Utente di HTML.it L'avatar di Jigen
    Registrato dal
    Feb 2006
    Messaggi
    547

    Show/Hide Layer [problema]

    Buongiorno,

    sto utilizzando uno script "show/hide layer" per visualizzare al'interno di una stessa pagina un certo numero di div.

    Ho configurato lo script in modo tale che al click dei link si apre il relativo div.

    Nell'aprire i layer in successione (Primo, Secondo, Terzo) non ho riscontrato problemi ma nell'effettuare il procedimento al contrario (Terzo, Secondo, Primo) ho rilevato che i div non posso essere sovrapposti.

    QUI ho pubblicato un piccolo esempio.

    Chi di voi sa aiutarmi con questo problema?

    Grazie!


    codice:
    <script language="JavaScript" type="text/JavaScript"> 
    <!-- 
    function MM_reloadPage(init) { //reloads the window if Nav4 resized 
    if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) { 
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }} 
    else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload(); 
    } 
    MM_reloadPage(true); 
    //--> 
    </script> 
    <script language="JavaScript">
    <!--
    function showHideLayers() 
    { 
    var i, visStr, obj, args = showHideLayers.arguments; 
    for (i=0; i<(args.length-2); i+=3) 
    { 
    if ((obj = findObj(args[i])) != null) 
    { 
    visStr = args[i+2]; 
    if (obj.style) 
    { 
    obj = obj.style; 
    if(visStr == 'show') visStr = 'visible'; 
    else if(visStr == 'hide') visStr = 'hidden'; 
    } 
    obj.visibility = visStr; 
    } 
    } 
    }
    
    function MM_findObj(n, d) { //v4.01
      var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
      if(!x && d.getElementById) x=d.getElementById(n); return x;
    }
    
    function MM_showHideLayers() { //v6.0
      var i,p,v,obj,args=MM_showHideLayers.arguments;
      for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
        if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
        obj.visibility=v; }
    }
    //-->
    </script>
    
    
    Primo Link
    
    <div id="Layer1" style="position:absolute; width:400px; height:300px; z-index:1; background-color: #CCCC99; border: 1px darkred; left: 300px; top: 200px; visibility: hidden;"> <p align="justify"> Primo DIV</p>
    </div>

  2. #2
    Utente di HTML.it L'avatar di Jigen
    Registrato dal
    Feb 2006
    Messaggi
    547
    Agendo sul comando "z-index" determinato l'ordine dei layer ma non risolvo il problema segnalato.

    Attendo con impazienza suggerimenti.

    Grazie.

  3. #3
    Utente di HTML.it L'avatar di Jigen
    Registrato dal
    Feb 2006
    Messaggi
    547
    Buongiorno,

    chi di voi sa aiutarmi?

    Grazie.

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma vuoi mostrare/nascondere i layer o spostare la cronologia (zIndex) degli stessi?

    P.S. Consiglio quando non si risponde spesso è perché non se capita la domanda/problema , aiuterebbe di molto integrare la richiesta con maggiori informazioni dettagli di ciò che si vuole fare.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it L'avatar di Jigen
    Registrato dal
    Feb 2006
    Messaggi
    547
    Riproverò a riformulare la mia richiesta:

    ho un menù di "n" voci, vorrei che al click di una voce si aprisse un div che fino a quel momento è rimasto nascosto.
    Cliccando su un'altra voce del medesimo menù, vorrei inoltre che al posto del div precedentemente aperto si sovrapponesse un'altro div.

    Con lo script che ho postato riesco ad aprire un layer ma se clicco prima sulla "terza voce del menù, poi sulla seconda ed infine sulla prima" (come da link segnalato) i div non si visualizzano.


    Allego un'anteprima del risultato finale.

    Spero di essere stato questa volta più chiaro nella mia spiegazione (anche se credo di essermi solo ripetuto).

    Grazie.
    Immagini allegate Immagini allegate

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da Jigen
    Spero di essere stato questa volta più chiaro nella mia spiegazione (anche se credo di essermi solo ripetuto).
    Può darsi, comunque io ti posto l'ipotesi "mostra/nascondi"
    codice:
    <html>
    
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>Nuova pagina 1</title>
    </head>
    
    
    <script language="JavaScript" type="text/JavaScript"> 
    <!-- 
    function ShowLayers(Layer,Stato){
    var elemento = document.getElementsByTagName("div")
    for(var i=0; i<elemento.length; i++){
    var display = (document.getElementById(Layer).style.visibility == Stato) ? "hidden" : "visible";
    if(elemento[i].style.position == "absolute" && elemento[i].id  == Layer && elemento[i].style.visibility == "hidden")
    elemento[i].style.visibility = "visible";
    else if(elemento[i].style.position == "absolute")
    elemento[i].style.visibility = "hidden";
    }}
    //-->
    </script>
    
    
    
    <body>
    
    
    Primo Link 
    
    
    Secondo Link 
    
    
    Terzo Link
    
    
    <div id="Layer1" style="position:absolute; width:400px; height:300px; z-index:1; background-color: #CCCC99; border: 1px darkred; left: 300px; top: 200px; visibility: hidden;"> 
    <p align="justify"> Primo DIV</p>
    
    </div>
    
    
    <div id="Layer2" style="position:absolute; width:400px; height:300px; z-index:1; background-color: #CCCC99; border: 1px darkred; left: 300px; top: 200px; visibility: hidden;"> 
    <p align="justify"> Secondo DIV</p>
    </div>
    
    
    <div id="Layer3" style="position:absolute; width:400px; height:300px; z-index:1; background-color: #CCCC99; border: 1px darkred; left: 300px; top: 200px; visibility: hidden;"> 
    <p align="justify"> Terzo DIV</p>
    </div>
    
    
    <div id="testo">
    Provate a cliccare in successione "Primo Link, Secondo, Terzo" 
    
    e successivamente provate a cliccare "Terzo Link, Secondo, Primo".
    </div>
    
    </body>
    
    </html>
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it L'avatar di Jigen
    Registrato dal
    Feb 2006
    Messaggi
    547
    Grazie "cavicchiandrea", era proprio quello che stavo cercando e tentando di ottenere tramite la configurazione del codice.

    Grazie per la tua disponibilità.

    Buon Domenica.

  8. #8
    Utente di HTML.it L'avatar di Jigen
    Registrato dal
    Feb 2006
    Messaggi
    547
    Per far comparire i div in una determinata porzione del sito ho impostato "margin-left" e "top", al cambio della risoluzione video però il div non viene più visualizzato nella porzione di pagina desiderata.

    Come posso far comparire il div sempre nella stessa posizione anche al cambio della risoluzione?

    Grazie.

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Perché i div sono su posizione assoluta, puoi tramite il javascript rilevare la risoluzione e imposti lo stile adeguato, vedi nella sezione javascript area script.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it L'avatar di Jigen
    Registrato dal
    Feb 2006
    Messaggi
    547
    Ok, grazie.

    Spero di risolvere.

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.