Effetto onmouseover su links crossbrowser
Arretrati lista "Una demo Dhtml a settimana"
di Risorse.net
CONOSCENZE CONSIGLIATE PER QUESTO ARTICOLO: Html, Css, Javascript
COMPATIBILITÀ: Ms Ie, Netscape, Opera
FILES ESTERNI: Nessuno
Visualizza la demo
Scarica la demo
I Css (Cascade Style Sheets - www.risore.net/css) hanno aggiunto molte potenzialità al linguaggio Html ed i Web masters che riescono a
sfruttarli al meglio possono manipolare perfettamente il layout di un
sito Web in modo altamente professionale e veloce.
Purtroppo Netscape sembra avere implementato a modo suo le specifiche del
W3C (di cui Netscape è membro) e ha reso, in questo senso, la vita più
difficile a tutti i realizzatori di siti Internet.
Per fortuna Dhtml ci viene incontro e grazie alla sua elasticità ha reso
possibile la compatibilità di alcuni effetti tipici dei Css. Ad esempio
l'effetto on mouse over su links, con cambi di colore del text-background,
può essere ottenuto in modo crossbrowser con alcuni accorgimenti in
Javascript. Vediamo come:
<STYLE type=text/css>
A {
FONT-FAMILY: Arial,Helvetica,sans-serif; FONT-SIZE: 10pt; FONT-WEIGHT:
bold; LINE-HEIGHT: normal; TEXT-DECORATION: none
}
A:hover {
BACKGROUND-COLOR: #ffcccc; COLOR: #660066
}
</STYLE>
Questa prima parte di Css definisce le caratteristiche del testo, mentre con
A:hover si imposta l'effetto on mouse over, che però non verrà letto da Netscape. Quest'ultimo browser infatti interprerà la sintassi scripting:
<SCRIPT language=JavaScript>
// Emulazione dell'effetto link hover di IE in NS.
var hoverBgColor = "#ffcccc"; // Copiato dall'IE una:hover definizione.
var hoverColor = "#660066";
function hover(layer) {
var link, str;
// Crea un sub-layer copiando il link in questo e cambiando
// sfondo e colori del testo.
link = layer.document.links[0];
str = '<a href="' + link.href + '"';
if (link.target)
str += ' target= "' + link.target + '"'
str += '><font color="' + hoverColor + '">' + link.text + '</font>';
layer.hoverLayer = new Layer(layer.clip.width, layer);
layer.hoverLayer.document.open("text/html", "replace");
layer.hoverLayer.document.write(str);
layer.hoverLayer.document.close();
layer.hoverLayer.bgColor = hoverBgColor;
// Mostra il layer hover iniziale.
layer.hoverLayer.visibility = "show";
// Metti un evento da catturare su questo layer per la visibilità del
// sub-layer.
layer.onMouseOver = hoverOn;
layer.onMouseOut = hoverOff;
}
function hoverOn() {
this.hoverLayer.visibility = "show";
}
function hoverOff() {
this.hoverLayer.visibility = "hide";
}
</SCRIPT>
Nelle variabili:
var hoverBgColor = "#ffcccc";
var hoverColor = "#660066";
vengono stabiliti rispettivamente il colore del background e del testo
quando il mouse passa sopra il link (onmouseover). Il resto del codice serve
a modificare il layer che conterrà il collegamento ipertestuale. E'
importante infatti, ai fini di un risultato positivo, racchiudere il testo
linkato tra <layer><ilayer> e </layer></ilayer>.
Come su può notare infatti:
<FONT face=Arial,Helvetica size=2><ILAYER><LAYER
onmouseover=hover(this);><A href="http://www.risorse.net/css" target=_blank>Cascade Style Sheetes</A></LAYER></ILAYER>
Chiudiamo questa lettera nella speranza che almeno i due principali browsers
possano trovare degli accordi per limitare gli stravolgimenti sintattici a
cui devono ricorrere i Web masters più perspicaci.
© Risorse.net (www.risorse.net)
pagina in versione stampabile:
http://www.risorse.net
/dhtml/teoria/1999/dicembre/18.asp?print=ok