Membre de ClickFR, Reseau francophone Paie-Par-Click
Accueil
Accueil
- [ CSS : ] [ DHTML : ] [ HTML : ] [ JavaScript : ] [ Refs : ]
Accueil

DHTML

  Défilement horizontal paramétrable

fonction de ce script  principe de ce script  le script lui-meme  demonstration du script  telechargement du script  Compatibilite du script... a partir de : 

  Fonction
Le but de ce script est de créer sur une page une sorte de prompteur horizontal, des textes ou des images, des liens qui défileront horizontalement, la vitesse de passage, la direction, la largeur sont paramétrables.
  Principe
Ce script est un peu long dans la mesure ou il accepte de nombreux paramètres mais le principe est simple.

Tout d'abord, on place dans la page un calque qui déterminera la largeur de la fenêtre du navigateur, ce calque sera invisible.
On créé ensuite le calque qui défilera sur l'écran avec tout son contenu (textes, images, liens...
Le script en lui-même accepte les paramètres suivants :
  • la largeur sur laquelle s'effectue le défilement (en pourcentage de la largeur de la page),
  • le positionnement vertical du défilement (en pixels),
  • la largeur du calque à faire défiler (en pixels),
  • le sens du défilement (de gauche à droite ou de droite à gauche),
  • l'espace entre chaque position intermédiaire du calque (en pixels),
  • le temps d'attente entre chaque déplacement (en millisecondes).
La fonction lancé au chargement de la page commence par attribuer tous les paramètres aux variables concernées puis détermine le sens du défilement. Suivant ce dernier, elle lance l'une ou l'autre fonction de défilement ('defilement_gd()' ou 'defilement_dg()').

La fonction de défilement de gauche à droite :
Tant que le point haut-gauche du calque est inférieur à la largeur de la page plus une marge (pour les ascenceurs), le calque est deplacé de la valeur d'un 'pas' puis la fonction est relancée dans le délai passé en paramètre.
Lorsque le point haut-gauche du calque est au-delàs de la largeur de la page, le calque est replacé à son point de départ et la fonction est de nouveau relancée.

La fonction de défilement de droite à gauche est analogue sauf que le point de replacement du calque est basé sur le point 0 (zéro) moins la largeur déclarée du calque.
  Le script
dans la partie <head>
<script language="JavaScript">
// détection du navigateur
ns4 = (document.layers)? true:false;
ie4 = (document.all)? true:false;

// Largeur du défilement (en pourcentage de la page)
var taille = 100;

// L'espace entre chaque position
// Le temps entre chaque déplacement
// Largeur approximative du calque
var pas;
var vitesse;
var largeur;

// Largeur de l'écran (renseigné automatiquement)
var dispo = 30;
var position;

// Le point de départ en X du calque
var depart = 1;

// Données pour l'écriture de la cale (calcul de la largeur du défilement)
var espace = "<img src='' width='" + taille + "%' name='cale' height='1' border='0'>";


// Signification des arguments de la fonction :
// posy = le placement vertical du défilement (en pixels)
// larg = largeur approximative du calque à faire défiler (en pixels)
// dir = la direction du défilement : gd = de gauche à droite; dg = de droite à gauche
// dist = la distance entre chaque position du calque (en pixels)
// speed = le temps entre chaque déplacement (en millisecondes)

function defil(posy,larg,dir,dist,speed) {

// Positionnement vertical du défilement
if (ns4) {
document.banniere.top = posy;

// Largeur disponible sur la page
dispo += document.infos.document.cale.width;
}
if (ie4) {
banniere.style.top = posy;

// Largeur disponible sur la page
dispo += document.cale.width;
}

// On affecte les arguments passés à la la fonction
pas = dist;
vitesse = speed;
largeur = larg;

// Si de gauche à droite
if ( dir == 'gd') {
defilement_gd();
}

// Si de droite à gauche
if ( dir == 'dg' ) {

// Initialisation du défilement pour Netscape et Internet Explorer
if (ns4) {
document.banniere.width = largeur;
document.banniere.left = dispo;
depart = document.banniere.left;
}
if (ie4) {
banniere.style.width = largeur;
banniere.style.left = dispo;
position = banniere.style.left.substring(0,(banniere.style.left.length - 2));
position = parseInt(position,10);
}
defilement_dg();
}
}


// Fonction pour le défilement de gauche à droite
function defilement_gd() {

// Instructions pour Netscape
if (ns4) {

// Tant que le calque est visible à l'écran (à peu pres)
if ( document.banniere.left < dispo ) {

// Déplacement vers la droite de la valeur d'un 'pas'
document.banniere.left = depart + pas;

// On actualise la variable de position du calque pour le prochain tour
depart = document.banniere.left;

// On relance la fonction pour faire le déplacement suivant
setTimeout("defilement_gd()",vitesse);
}

// Quand le calque arrive au bout de la ligne on le replace au départ
else {
document.banniere.left = 1;
depart = 1;

// et on relance...
setTimeout("defilement_gd()",50);
}
}

// Instructions pour Internet Explorer
if (ie4) {

// On intercepte la position du calque
var position = banniere.style.left.substring(0,(banniere.style.left.length - 2));
position = parseInt(position,10);

// Tant que le calque est visible à l'écran (à peu pres)
if ( position < dispo ) {

// Déplacement vers la droite de la valeur d'un 'pas'
banniere.style.left = eval(position + pas);

// On actualise la variable de position du calque pour le prochain tour
depart = eval(position + pas);

// On relance la fonction pour faire le déplacement suivant
setTimeout("defilement_gd()",vitesse);
}

// Quand le calque arrive au bout de la ligne on le replace au départ
else {
banniere.style.left = 1;
depart = 1;

// et on relance...
setTimeout("defilement_gd()",50);
}
}
}


// Fonction pour le défilement de droite à gauche
function defilement_dg() {
if (ns4) {
if ( document.banniere.left > -largeur ) {
document.banniere.left = depart - pas;
depart = document.banniere.left;
setTimeout("defilement_dg()",vitesse);
}
else {
document.banniere.left = dispo;
depart = dispo;
setTimeout("defilement_dg()",50);
}
}
if (ie4) {
if ( position > -largeur ) {
banniere.style.left = eval(position - pas);
position = eval(position - pas);
setTimeout("defilement_dg()",vitesse);
}
else {
banniere.style.left = dispo;
position = dispo;
setTimeout("defilement_dg()",50);
}
}
}
</script>

dans la partie <body>
<body OnLoad="defil(200,50,'dg',15,200);">

<!-- Ecriture de la cale permettant de connaître la largeur de la fenêtre -->
<div name="infos" id="infos" style="position: absolute; visibility: hidden;">
<script language="JavaScript">document.write(espace);</script>
</div>

<!-- Calque à faire défiler -->
<div name="banniere" id="banniere" style="position: absolute; top: 0px; left: 0px; visibility: visible; z-index: 2;">
Bonjour <img src="images/logo.gif" id="logo" name="logo">
</div>

<!-- Contenu de la page -->
Contenu de la page...
  Démonstration

Voir la démonstration

  Téléchargement
Ce script est disponible en deux versions :
  • le script est intégré à la page où il agit,
  • le script est dans un fichier séparé de la page où il agit (fichier.js et fichier.html).

    L'intérêt d'un script dans un fichier séparé est de pouvoir le partager entre plusieurs pages html.
    Cela permet aussi de le rendre inaccessible à toute personne qui souhaiterai l'enregistrer pour une autre utilisation.
  • Script intégré :
    enc_defil.zip
    5 Ko
    telechargez le script telechargez le script
    Script séparé :
    enc_defil2.zip
    6 Ko
    Recherche
    aide sur la recherche
    hit-parade
    Votez TOP Ouaibe !

    statistiques
    aide sur les contacts aide sur la mailing-list aide sur la newsletter