javascript 如何在javascript中通过数组实现自动滑动图像

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/30109044/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-28 11:42:18  来源:igfitidea点击:

how to implement automatic sliding images through array in javascript

javascript

提问by vikas sajwan

I want to implement sliding images as soon as the website loads.

我想在网站加载后立即实现滑动图像。

Here's my html code

这是我的 html 代码

<html>
<title>Wold of Guitars</title>
<body onload="images()">
</body>
</html>

And here's my javascript

这是我的 javascript

var imgArray = new Array();
imgArray[0] = new Image();
imgArray[0].src = '../img/n/h1.jpg';
imgArray[1] = new Image();
imgArray[1].src = '../img/n/h2.jpg';
imgArray[2] = new Image();
imgArray[2].src = '../img/n/home.jpg';
imgArray[3] = new Image();
imgArray[3].src = '../img/n/h3.jpg';
imgArray[4] = new Image();
imgArray[4].src = '../img/n/h4.jpg';
x=-1;
function images()
{    x=x+1
     if(x>4)
     x=1
     document.write("<li><img src='" + imgArray[x] + "' width="1350" height="630"/><span>" + imgArray[] + "</span></li>");
     var t=setInterval("images()",3000);
}

Help will be appreciated.

帮助将不胜感激。

回答by frontsideup

Although you mentioned "sliding" your initial code looked liked you wanted to swap the images over time.

尽管您提到“滑动”,但您的初始代码看起来很像您想随着时间的推移交换图像。

I admit you may struggle to find good resources on JavaScript for something so simple, which Is why I can relate to your question.

我承认你可能很难为这么简单的事情找到关于 JavaScript 的好资源,这就是为什么我可以回答你的问题。

Ok so here's a quick & dirty but more modern-ish image changing slide requestAnimationFrame:

好的,这是一个快速而肮脏但更现代的图像更改幻灯片 requestAnimationFrame:

https://jsfiddle.net/julienetienne/95tqftnk/4/

https://jsfiddle.net/julienetienne/95tqftnk/4/

The same principals apply for making images slide except you are pre-loading all images and shifting the position by the slide show width.

相同的原则适用于制作图像幻灯片,但您要预加载所有图像并按幻灯片放映宽度移动位置。

var speed = 3;

// Your image array
var images = [
    'http://www.gettyimages.co.uk/gi-resources/images/Homepage/Category-Creative/UK/UK_Creative_462809583.jpg',
    'http://www.hdwallpapersimages.com/wp-content/uploads/images/Child-Girl-with-Sunflowers-Images.jpg',
    'http://www.gettyimages.co.uk/CMS/StaticContent/1391099215267_hero2.jpg'];

// Get the slideShow tag
var slideShow = document.getElementById('slide-show');

// Create the image tag  //You could also just make one in HTML and get the tag
var img = document.createElement('img');

// Append the image to the slideshow container
slideShow.appendChild(img);

// Basic request animation polyfill 
var rAF = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (callback) {
        return setTimeout(callback, 1000 / 60);
    };

// declare var count outside of rAF loop
var count;

function changeImage(timeStamp) {
    count = Math.floor(timeStamp / 1000 / speed);

while (count > images.length -1) {
    count -= images.length;
}

    img.src = images[count];

    rAF(changeImage);
}

rAF(changeImage);
img {
    width: 600px;
    height auto;
}
<div id="slide-show"></div>