Newsgroup: it.comp.lang.javascript
Titolo: Wipe effect

Ho bisogno di uno script per gestire questo tipo di effetto.
In pratica devo applicare tale effetto su un layer, mostrandone il contenuto 
aprendo il layer da sinistra verso destra e dall'alto in basso.
Ho già trovato qualcosa su Dynamic Duo, ma è necessario implementare nelle 
pagine alcuni script di supporto, piuttosto lunghi, ed i tempi di caricamento 
ne risentono!
-- 
Best Regards,
.: the PhoenixArt :. 
Graphic ~ Tutorials and many more
http://www.phoenixart.com

Ciao,
per NS le proprieta' da richiamare sono le seguenti:
document.layers["NomeLayer"].clip.left=sx;
document.layers["NomeLayer"].clip.right=dx;
document.layers["NomeLayer"].clip.top=top;
document.layers["NomeLayer"].clip.bottom=bottom;
per IE invece creo una stringa contenente
i valori di clip:
 finalRect="rect(" + top + "," + dx + "," + bottom + "," + sx + ")";
 container.style.clip=finalRect;
-- 
the RazoR EdgE
http://members.tripod.it/RazoR_EdgE

:
Ho risolto, partendo dagli script che ho trovato in giro.
C'è una cosa, però, che non mi è chiara. Lo script che segue funziona 
benissimo in NS. Per funzionare anche in IE devo specificare lo stile in 
linea con <DIV ID=".." STYLE="position:.. ecc.">.
Se richiamo invece lo stile con il tag LINK, o lo scrivo in uno style fra i 
tag HEAD, IE si rifiuta di funzionare e da il seguente errore:
Riga: 27
Carattere: 3
Errore: 'clip.split[...].1' non è un oggetto
Codice: 0
Qualcuno sa spiegarmi perchè IE si comporta così? avrei proprio necessità 
di richiamare il CSS da un file a parte e non, al contrario, inserire lo 
stile in linea.
<script language="JavaScript">
<!--//
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
function init() {
  if (ns4) block = document.menu
  if (ie4) block = menu.style
}
function clipValues(obj,which) {
  if (ns4) {
    if (which=="t") return obj.clip.top
    if (which=="r") return obj.clip.right
    if (which=="b") return obj.clip.bottom
    if (which=="l") return obj.clip.left
  }
  else if (ie4) {
    var clipv = obj.clip.split("rect(")[1].split(")")[0].split("px")
    if (which=="t") return Number(clipv[0])
    if (which=="r") return Number(clipv[1])
    if (which=="b") return Number(clipv[2])
    if (which=="l") return Number(clipv[3])
  }
}
function clipBy(obj,t,r,b,l) {
  if (ns4) {
    obj.clip.top = clipValues(obj,'t') + t
    obj.clip.right = clipValues(obj,'r') + r
    obj.clip.bottom = clipValues(obj,'b') + b
    obj.clip.left = clipValues(obj,'l') + l
  }
  else if (ie4) obj.clip = "rect("+(this.clipValues(obj,'t')+t)+"px 
"+(this.clipValues(obj,'r')+r)+"px "+Number(this.clipValues(obj,'b')+b)+"px 
"+Number(this.clipValues(obj,'l')+l)+"px)"
}
function wipe1() {
  if ((clipValues(block,'r')<200) && (clipValues(block,'b')<200)) {
    clipBy(block,0,10,10,0)
    setTimeout("wipe1()",30)
  }
}
function wipe2() {
  if ((clipValues(block,'r')>10) && (clipValues(block,'b')>10)) {
    clipBy(block,0,-10,-10,0)
    setTimeout("wipe2()",30)
  }
}
//-->
</script>
Ed ecco la classe usata:
.openMenu {position:absolute; top:78; left:23; width:160; height:350; 
clip:rect(0,10,10,0)}


...



Non ho risolto.
Anche su WebReference è scritto che si può inserire lo style in vari modi 
diversi: come link esterno, come codice fra i tag Style e come stile in 
linea.
Non riesco a capire come risolvere il problema, visto che IE si ostina a 
funzionare solo se inserisco lo style in linea. Possibile che non si possa 
fare nulla?
-- 
Best Regards,
