web前端技术课程讲解之关于轮播图水平无缝滚动

制作这个简单的轮播图之前,你必须掌握html、css、以及JavaScript中的节点操作,定时器的使用,条件语句的使用以及JS修改样式和动画原理。

轮播图对于网页来说是个常见也可以说是必备的部分,而轮播图的形式也是各式各样,有简约的也有炫酷的。当然,这里我就只说简约的全屏轮播图水平无缝滚动。

首先是给出一个div标签,并且给这个标签设置宽高(宽高要和图片一致,否则给图片设置居中)以及溢出隐藏(overflow:hidden)并设置定位为相对定位(position:relative),然后用一个有序列表(ul)标签将图片放在li标签里面,ul标签的高度要与图片高度一致,宽度是图片的数量乘以图片的宽度,定位设置为绝对定位(position:absolute),而li标签设置左浮动。静态工作基本完成。

而轮播图的播放则需要用到动画和定时器,这里我用的是已经封装好的动画函数。在js中通过获取ul的子节点来获取到li的一个数组,再通过这个数组的长度以及图片的宽度来计算出ul的宽度。为了实现无缝滚动,我们必须克隆第一张图片并将其放在ul后面(通过cloneNode以及appendChild来实现),一开始声明变量index,并赋值为0,然后进行判断,如果index值大于li数组的长度的话,将ul的left值重置为0,并将index值设置为1(因为轮播图的最后一张和第一张是一样的,所以当轮播图的最后一张出现在页面的时候,我们将其left值设置为0使其直接跳到第一张,而肉眼是捕捉不到这个瞬间的,而当播放到最后一张时,下一张出现在页面的是轮播图的第二张,所以index值为1)。当然轮播图的滚动要有个过渡效果,所以ul的left的目标值为当前index值乘以图片宽度。在定时器中设定一个刷新时间,并且每刷新一次,让index值加一(也就是index++)。到这里,轮播图的向左无缝滚动就完成了。而向右无缝滚动我是设置在点击上,同时,鼠标在移入和移出轮播图的时候,我分别设置了清除定时器和执行定时器。这是为了避免自动播放和点击的冲突。在点击前一张,也就是向右滚动的时候,index值减一(也就是index- -),并且做一个判断,就是当index值小于0的时候,重新给index赋值为li数组长度减去二(我这里li的长度赋给了len,所以index=len-2),而ul的left值为-(len-1)乘以图片宽度,记得加上单位px。这个上面讲的最后一张跳到第一张同个道理,当图片播放到第一张的时候,再按一下,应跳转到实际图片数量的最后一张,所以,当图片到第一张时,会瞬间跳到我们克隆的那张图片上。

下面附上js代码截图,因为多个地方用到判断,所以用函数show将其封装

封装的动画函数代码

原文地址:http://blog.51cto.com/14071672/2321277

时间: 2024-12-29 07:52:04

web前端技术课程讲解之关于轮播图水平无缝滚动的相关文章

SuperSlidev2.1 轮播图片和无缝滚动

SuperSlidev2.1 轮播图片和无缝滚动 使用方法点击链接:http://down.admin5.com/demo/code_pop/18/562/index.html 简单使用方法如下 html <div class="bd"><ul><li _src="url(images/1.jpg)" style="background:#E2025E center 0 no-repeat;"><a hr

一百三十二:CMS系统之前端动态获取后台添加的轮播图

先准备几张轮播图 排序顺序改为根据优先级倒序排 前端首页接口 @bp.route('/')def index(): banners = BannerModel.query.order_by(BannerModel.priority.desc()).limit(4) # 只取4条 context = {'banners': banners} return render_template('front/front_index.html', **context) 在首页模板中动态渲染轮播图 {% fo

ionic轮播图,无限滚动

工作中遇到的问题 <ion-slide-box show-pager="true" ng-if="carouseList" on-slide-changed="slideHasChanged($index)"  class="slidebox"  auto-play="true" slide-interval="4000" delegate-handle="slideim

【微信小程序】:实现轮播图3秒滚动

wxml模板:(数据一维数组) <scroll-view scroll-y="true"> <swiper autoplay="auto" interval="3000" duration="500"> <block wx:for="{{home_pics}}" wx:for-index="index"> <swiper-item> <

jq 轮播图 上下自动滚动

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

Web前端原生JavaScript浅谈轮播图

1.一直来说轮播图都是困扰刚进业内小白的一大难点,因为我们不仅需要自己作出一个比较完美的运动框架(虽然网上一抓一大把,但是哪有比自己做出来实现的有成就感,不是吗?^_^),还必须需要非常关键性的把握住轮播的原理,这样才能把一个轮播图完美的呈现出来. 2.废话不多说,请看下面代码 1 //首先我们必须都明确,一个好的运动框架那必须是能够同时承载两种或多种以上需求的,所以我们应该避免单运动框架通过行内样式的局限性,就需要我们知道怎么去获取非行间样式 2 function getStyle(obj,a

Jquery 轮播图简易框架

=====================基本结构===================== <div class="carousel" style="width: 800px;height: 378px;"> <ul class="carousel-imgs"> <li> <a href="#"><img src="picture.jpg" alt=&

焦点轮播图效果实现

焦点轮播图相对前面讲的逐帧轮播图实现多了两个功能,1.图片轮播可以手动滚动(新增左右箭头),这里重点是实现向左滚动的无缝连接.2.多了下方小圆点,指示图片播放位置,并可以点击小圆点跳转. 那么如何实现呢? 1.无缝连接: 前面逐帧轮播图向右滚动的无缝连接实现,是将最后一张图片负值一个副本放在第一个位置.同理,实现向左无缝滚动,只需将第一张图片负值一个副本放置在最后的位置即可.形成 5  1  2 3 4 5 1这样的图片排序.同样将7张图片放在一个div下,轮播时播放变换div位置即可. HTM

最热web前端技术汇总

Web前段技术发展很快,主流技术日新月异,想想自己刚毕业那会用的asp技术,现在已经很少有主流网站在使用了. 再到后来的J2EE框架,然后SpringMVC大行其道,但是最近各种js框架被广为传播,Html5的推出很是丰富了移动互联网的发展,此文对当前最新的几种web前端技术进行的汇总,让大家更多地了解,然后取其所长,避其所短,快速推出简约大方,维护方便,性能良好的个人网站. JavaScript MV*框架 在相当长的一段时间里,每个程序员都要学会如何利用JavaScript来编写弹出一个警告