如何通过jS修改图片路径来定时更换图片{轮播特效}

JavaScript013

如何通过jS修改图片路径来定时更换图片{轮播特效},第1张

用js来修改图片路径实现轮播是不太可取的一种办法,通常的做法是:

把需要轮播的图片全部罗列出来,用js控制轮流显示第几张图片,

EX:

html代码:

<div id="lunbo">

<div id="img1" class="img"><img src="**"></div>

<div id="img2" class="img"><img src="**"></div>

<div id="img3" class="img"><img src="**"></div>

</div>

css代码:

#lunbo{width:100%height:300pxposition:relativezoom:1overflow:hidden}

#lunbo div{width:100%height:100%position:absoluteleft:0top:0display:none}

#lunbo div:first-child{display:block}

img{width:100%height:100%border:0display:block}

js代码:

<script type="text/javascript">

var t=0

setInterval(function(){

t++

if(t>2)t=0

document.querySelector(".img").style.display="none"

document.querySelector("#img"+t.toString()).style.display="block"

},5000)

</script>

轮播图是每个网站中必不可少的元素,那么如何用JS制作轮播图呢?下面我就给大家分享一下。

工具/材料

Sublime Text

01

首先需要在Sublime中创建HTML文档,然后在文档的body区域中加入如下图所示的轮播图内容

02

然后我们需要在style标签中给所添加的轮播图内容声明样式,如下图所示

03

接下来我们就需要在script标签中实现轮播图的动画脚本内容了,如下图所示,注意script标签的type类型一定要是javascript

04

最后我们运行界面程序,你就会看到如下图所示的轮播图了,点击左右的箭头和中间的圆点都可以进行轮播图的切换

实现轮播图思路

布局:

1. 使用 flex 布局使子元素水平排列;

2. 子元素宽度设置100%,flex-shrink 设置为 0(这个属性保证子元素不被压缩)

定时器无缝轮播:

轮播之前需要将首尾各添加一张图片。其目的就是实现无缝轮播。

然后将父元素 left 向左移动一个屏幕宽度的距离。这样才能让第二张(因为首尾各添加了一张图片,所以原先的第一张就变成了第二张)变成可视范围的第一张。

轮播到最后一张图片(这里的最后一张指的是拼接的第一张)时;

①清除掉定时器;

②开启临界处理(重置父元素的left);

③开启下一轮轮播。

这里是实现无缝轮播的关键;其目的是播放最后一张的同时,与第一张偷梁换柱。因为最后一张与第一张图片相同,所以快速地改变其 left 用户并无感知。并且同时开启下一轮定时器,1.5s 之后执行第二张图片播放。而这个 1.5s 之内就好了准备(清除当前定时器,重置父元素 left)。

右边按钮点击无缝轮播:

逻辑同定时器无缝轮播类似,因为方向都是从右向左播放。无缝轮播的核心都是播放到最后一张时偷梁换柱(播放最后一张图片的1.5s 同时,改变父元素 left 成初始值,负数的屏幕宽度)。

左边按钮点击无缝轮播:

左边按钮无缝轮播的核心与以上差不多,唯一的区别就是当播放到第一张图片时,开始偷梁换柱(播放第一张图片的1.5s 同时,改变父元素 left 成最大值,负数的(屏幕宽度*(子元素个数-2)))。

指示灯点击无缝轮播:

点击第一张图片时,同左边按钮点击无缝轮播。点击最后一张图片时,同右边按钮点击无缝轮播。