Vous devez être membre et vous identifier pour publier un article.
Les visiteurs peuvent toutefois commenter chaque article par une réponse.
Javascript - Comment faire défiler une image qui se répèt
Article publié le 10/02/2007 10:57:24Bonjour à toutes et à tous!
Aujourd'hui je vous propose un script qui vous permet de faire défiler une image qui se répète dans un élémént DOM d'une page HTML (par exemple: un DIV).
Vous pouvez règler la vitesse de défilement des images ainsi que le nombre de pixels dont elles sont déplacées à chaque mouvement.
Le script est documenté en anglais (sorry Steph ) mais je le posterai bientôt avec les commentaires en français.
Allez! Je vous laisse essayer!
Code html4strict (103 lignes)
‹html› ‹head› ‹title›Démo de frise d'image déroulantes - HackTrack 10/02/2007‹/title› ‹script language="javascript" type="text/javascript"› /** * AnimatedImage * * Author: HackTrack (Philippe FERY - philippe.fery@gmail.com) * * Date : 10/02/2007 * * Version 1.0 * * This script allows you to display a repeated image on the screen width, inside a DOM element. * * To use it, just call function 'startAnimation' with parameters (see function 'startAnimation') * * TO DO: snap first and last image in order not to see horizontal scrollbar moving * */ var animatedImage; // image to be animated var stepX; // number of pixels to move image between each move var dx; //temporary variable used to calculate the current image offset var delay; //delay between two moves (in milliseconds) var imageWidth; //the image width var imageHeight; //the image height(not used at now) var width; //window inner width var height; //window inner height (not used at now) var domElement; //the DOM element where images have to be displayed var innerDOMElement;//a temporary DIV element used to display images inside the domElement /** * Function : * name: runAnimation * description: endless loops image animation * Parameters: none */ function runAnimation(){ dx+=stepX; dx=parseInt(dx%imageWidth); width = parseInt(domElement.style.width); height = domElement.offsetHeight; var imageCount = parseInt(width/imageWidth)+3; domElement.style.overflow="hidden"; innerDOMElement.style.width=imageCount*imageWidth; if(innerDOMElement.children != null){ while(innerDOMElement.children.length›0){ var elm =innerDOMElement.children[0]; innerDOMElement.removeChild(elm); elm=null; } } var tmpImage; for(i=0; i‹imageCount ; i++){ tmpImage = new Image(); tmpImage.src=animatedImage.src; tmpImage.style.position="relative"; tmpImage.style.top="0px"; imageLeft=imageWidth*-1; tmpImage.style.left=imageLeft+"px"; innerDOMElement.appendChild(tmpImage); } innerDOMElement.style.position="relative"; innerDOMElement.style.left=dx; setTimeout("runAnimation()",delay); } /** * Function : * name: startAnimation * description: initializes animation then starts it * Parameters: * targetElementName: the DOM element where the images have to be displayed * imageURL: image location * step: the number of pixels the image will be moved each time (positive value=move right; neagtive value=move left) * delayInMillis: the delay in milliseconds between each move */ function startAnimation(targetElementName, imageURL, step, delayInMillis){ animatedImage= new Image(); animatedImage.src=imageURL; imageWidth=animatedImage.width; imageHeight=animatedImage.height; domElement=document.getElementsByName(targetElementName)[0]; stepX = step; delay = delayInMillis; dx=0; innerDOMElement=document.createElement('div'); domElement.appendChild(innerDOMElement); runAnimation(); } ‹/script› ‹/head› ‹!--body onload="startAnimation('frise','file://F:/testBG_mini.jpg',-20,10);"--› ‹body onload="startAnimation('frise','file://F:/heartbeat.gif',-1,20);"› ‹p›Demo de défilement d'images - HackTrack 12/02/2007‹/p› ‹div id="frise" name="frise" style="border: solid 1px black;width:1024;"› ‹/div› HackTrack ‹/body› ‹/html›
A bientôt pour une nouvelle astuce!
HackTrack
Un article de HackTrackModifié 1 fois. (dernière modification le 10/02/2007 10:58:00 par HackTrack)
Source : indéterminée
Nederlandse vertaling
U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.
Bij voorbaat dank.
Document heeft de 13/09/2004 gemaakt, de laatste keer de 26/10/2018 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/ast-rf-385.html
De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.