Newsgroup: it.comp.www.html
Titolo: Layers a cascata

Salve !
Ho creato una serie di layers (visibili sia con IE5.5 che NS4.5)posizionati
a cascata all'interno dei quali ho messo in ognuno una tabella con testo
informativo.
Adesso vorrei fare in modo che cliccando su di un link, uno di questi layer
richiamati si mettesse in primo piano : c'e' un modo per farlo ?
Conoscete qualche indirizzo Web di qualcuno che lo ha gia' fatto dove potrei
scopiazzare un po' ?
Sono alla prima esperienza con i layers e posso utilizzare DW3 (anche di
questo ho esperienza solo per le cose piu' semplici).
Vi ringrazio in anticipo,
                                       Francesco
--
il gruppo e` al momento robomoderato

 richiamati si mettesse in primo piano : c'e' un modo per farlo ?
[]
Se ho capito; hai dei livelli parzialmente sovrapposti e su un
determinato evento vuoi portarne uno in primo piano.
La proprieta' appropriata e' z-index; questa stabilisce l'ordine di
sovrapposizione dei livelli.
Le impostazioni di base stabiliscono che la sovrapposizione dipende
dall'ordine con cui gli elementi appaiono nella pagina; l'attributo
z-index dei CSS cambia questa impostazione.
Per modificarlo in modo dinamico usi la proprieta' zIndex dell'oggetto;
posto che non sia stato valorizzato questo attributo per nessun livello
o che siano tutti stati valorizzati a 0
il seguente codice fara' spostare in primo piano il livello "mioLayer"
(document.all)?document.all.mioLayer.style.zIndex=1:document.mioLayer.zI
ndex=1;
se l'ordine di sovrapposizione e' valorizzato si potra' operare su uno o
su tutti i livelli cambiando con lo stesso metodo tutti i valori.
Spero di essere stato utile.
Saluti, Paolo


 Spero di essere stato utile.
Moltissimo e spero che tu possa aiutarmi ancora.
Ti propongo il codice della pagina di prova che sono riuscito a fare:
oltre non sono riuscito ad andare.
---------------------------------------------------------
<html>
<head>
<title>Prova LAYERS</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function MM_findObj(n, d) { //v3.0
  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); return x;
}
function MM_showHideLayers() { //v3.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; }
}
function MM_changeProp(objName,x,theProp,theValue) { //v3.0
  var obj = MM_findObj(objName);
  if (obj && (theProp.indexOf("style.")==-1 || obj.style))
eval("obj."+theProp+"='"+theValue+"'");
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF">
<div id="giallo" style="position:absolute; width:200px; height:120px;
z-index:0; left: 44px; top: 92px; background-color: #FFFFCC;
layer-background-color: #FFFFCC; border: 1px none #000000; visibility:
visible; overflow: auto" onClick="MM_showHideLayers('giallo','','show')">
  <div align="right">1</div>
</div>
<div id="rosso" style="position:absolute; width:200px; height:120px;
z-index:0; left: 56px; top: 111px; background-color: #FF6666;
layer-background-color: #FF6666; border: 1px none #000000; visibility:
visible; overflow: auto">
  <div align="right">2</div>
</div>
<div id="blu" style="position:absolute; width:200px; height:120px;
z-index:0; left: 71px; top: 129px; background-color: #CCCCFF;
layer-background-color: #CCCCFF; border: 1px none #000000; visibility:
visible; overflow: auto">
  <div align="right">3 </div>
</div>
<div id="primopiano" style="position:absolute; width:200px; height:115px;
z-index:0; left: 84px; top: 147px; background-color: #66CCCC;
layer-background-color: #66CCCC; border: 1px none #000000; visibility:
visible">
  <div align="center">
    <p>&nbsp;</p>
    <p>informazioni generali</p>
  </div>
</div>
<p align="center"
onClick="MM_changeProp('giallo','','style.zIndex','1','LAYER')">1</p>
<p align="center"
onClick="MM_changeProp('rosso','','style.zIndex','1','LAYER')">2</p>
<p align="center"
onClick="MM_changeProp('blu','','style.zIndex','1','LAYER')">3</p>
<p align="center"
onClick="MM_changeProp('primopiano','','style.zIndex','1','LAYER')">informaz
ioni</p>
<br><br><br>
</body>
</html>
-------------------------------------------------------------
Come vedi non ho trovato il modo per applicare il primo piano ad ogni layer
indipendentemente dalla sequenza dell'evento (es. 2-4-1-3-1 invece di
1-2-3-4) : come si  fa (la dritta me l'hai gia' data ma non riesco ad
applicarla) ?
Il tutto mi funziona solo con IE5.5 e non con NS4.5 , c'e'  un codice
diverso per
farlo?
Ti faccio presente che questi comportamenti li ho creati con DW3 (sono solo
pochi giorni che lo uso) perche' per ora non saprei dove mettere le mani in
codici piu' complessi.
Ti ringrazio ancora, a risentirci.
                                                      Francesco



[]
Una serie di questioni riguardanti NS:
Gli eventi sono gestiti in modo piu' restrittivo; solo alcuni oggetti
hanno un gestore P non ne ha.
in questo caso si utilizza il collegamento <a href=#...
Per visualizzare un layer copmpleto devi valorizzare l'attributo clip,
altrimenti si visualizzera' solamente la parte contenente testo.
NS4.x non usa la proprieta' style negli script e' implicita
Lo script, oltre a essere rindondante, non e' corretto:
 if (obj && (theProp.indexOf("style.")==-1 || obj.style))
questo controllo dice se l'oggetto esiste e nella variabile theProp non
e' presente il testo *style.* o esiste la proprieta' style dell'oggetto
fai .....
quindi se gli passi la stringa *style.zIndex* funzionera' solo con IE
se gli passi la stringa *zIndex* funzionera' solo con NS
Ho modificato cosi':
passo la stringa *zIndex* che e' l'attributo da modificare; poi
controllo se esiste la proprieta' style
  if (obj.style)  //
  se vero (quindi e' IE)
   eval("obj.style."+theProp+"='"+theValue+"'");
aggiungo all'obj la proprieta' style; altrimenti (non e' IE)
  else   eval("obj."+theProp+"='"+theValue+"'");
Di seguito il file completo.
Saluti, Paolo
<HTML><HEAD>
<script language="JavaScript">
<!--
function MM_findObj(n, d) { // v3.0
  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); return x;
}
function MM_showHideLayers() { // v3.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; }
}
function MM_changeProp(objName,x,theProp,theValue) { // v3.0
  var obj = MM_findObj(objName);
 // alert('sono in fun'+
obj.name
+' '+"obj."+theProp+"='"+theValue+"'")
  if (obj.style)
   eval("obj.style."+theProp+"='"+theValue+"'");
  else   eval("obj."+theProp+"='"+theValue+"'");
}
// -->
</script>
</head>
<body bgcolor="#FFFFFF">
<div id="giallo" style="position:absolute; width:200px; height:120px;
z-index:0; left: 44px; top: 92px; background-color: #FFFFCC;
layer-background-color: #FFFFCC; border: 1px none #000000; visibility:
visible; overflow: auto; clip:rect(0,200,120,0); "
onClick="MM_showHideLayers('giallo','','show')">
  <div align="right">1</div>
</div>
<div id="rosso" style="position:absolute; width:200px; height:120px;
z-index:0; left: 56px; top: 111px; background-color: #FF6666;
layer-background-color: #FF6666; border: 1px none #000000; visibility:
visible; overflow: auto; clip:rect(0,200,120,0);">
  <div align="right">2</div>
</div>
<div id="blu" style="position:absolute; width:200px; height:120px;
z-index:0; left: 71px; top: 129px; background-color: #CCCCFF;
layer-background-color: #CCCCFF; border: 1px none #000000; visibility:
visible; overflow: auto; clip:rect(0,200,120,0);">
  <div align="right">3 </div>
</div>
<div id="primopiano" style="position:absolute; width:200px;
height:115px;
z-index:0; left: 84px; top: 147px; background-color: #66CCCC;
layer-background-color: #66CCCC; border: 1px none #000000; visibility:
visible">
  <div align="center">
    <p>&nbsp;</p>
    <p>informazioni generali</p>
  </div>
</div>
<div align="center">
<a href=# align="center"
onMouseOver="MM_changeProp('giallo','','zIndex','1','LAYER')">1</a><p>
<a href=# align="center"
onClick="MM_changeProp('rosso','','zIndex','1','LAYER')">2</a><p>
<a href=# align="center"
onClick="MM_changeProp('blu','','zIndex','1','LAYER')">3</a><p>
<a href=# align="center"
onClick="MM_changeProp('primopiano','','zIndex','1','LAYER')">informazio
ni</a>
</div>
<br><br><br>
</BODY></HTML>



[]
Per javascript c'e' un apposito NG
news:it.comp.lang.javascript


 news:it.comp.lang.javascript
Dai , oramai "sistemami" tu !   ;-))
Grazie 1000 , Paolo !!!
  Francesco


 wrote in message
8vni6l$iaa$1...@nslave3.tin.it...


 solo da una versione appena uscita e che si sa già che è bacata?
[]
Ho scaricato NS6 da pochissimi giorni e sono quindi ai primi test.
Finalmente ha un DOM (secondo le specifiche W3C) che permette di
sviluppare codice compatibile (con qualche attenzione) con IE5.x; credo
sia un enorme passo avanti.
Ha ancora dei bug non irrilevanti, che spero saranno risolti a breve.
Tieni conto che anche IE, come tutti i prodotti MS, viene modificato
varie volte dopo l'uscita.
Dissento dal fatto che NS4.x sia' mai stato il browser piu' ortodosso,
basti pensare all'invenzione del Tag Layer.
IE5 e' assolutamente più ortodosso alle specifiche W3C di NS4.x e per
molte cose lo era anche IE4 (comunque da dimenticare).
I fan di NS hanno sempre indicato come motivo della loro predilezione:
-un livello di sicurezza molto più elevato che con IE; cosa che conosco
poco e di cui non ho mai avuto riscontri effettivi (per inciso, se
l'utente concede i privilegi, anche con NS4 puoi scrivere un file su
disco)
-una maggior rigidità nell'interpretazione del codice; credo un pregio
per uno sviluppatore ma di nessuna utilità per un utente.
Credo, infine, che i primi a festeggiare, quando NS6 sostituirà
completamente
NS4.x, saranno proprio i grandi fan di NS.
Detto questo, e' interesse del committente e dello sviluppatore far si
che il sito sia utilizzabile dal maggior numero di utenti; sempre
tenendo conto del target specifico.
Saluti, Paolo