html代码

<div id="banner"><ul><li><img src="data:images/1.jpg"></li><li><img src="data:images/2.jpg"></li><li><img src="data:images/3.jpg"></li><li><img src="data:images/4.jpg"></li></ul><div id="direction"><a href="##"><</a><a href="##">></a></div><div id="btn"><a href="##" class="active"></a><a href="##"></a><a href="##"></a><a href="##"></a></div>
</div>

css代码

  * {margin: 0;padding: 0;}ul, li {list-style: none;}#banner {width: 800px;height: 400px;margin: 40px auto;position: relative;overflow: hidden;}#banner > ul {position: absolute;}#banner > ul > li {float: left;width: 800px;height: 400px;}#banner > ul > li > img {width: 800px;height: 400px;}#direction {position: relative;display: none;}#direction > a {position: absolute;width: 60px;height: 60px;text-align: center;line-height: 55px;color: #fff;text-decoration: none;background: rgba(0, 0, 0, .5);font-size: 40px;top: 170px;opacity: 0.5;border-radius: 50%;}#direction > a:nth-child(2) {right: 0;}#btn {position: absolute;bottom: 0;left: 340px;}#btn > a {float: left;margin-left: 10px;width: 20px;height: 20px;border-radius: 50%;background: #f40;}#btn > .active {background: #fff;}

JS代码

封装运动框架

// 完美运动框架
function move(obj, json, fn) {clearInterval(obj.timer);obj.timer = setInterval(function () {var bStop = true;for (var attr in json) {//先判断是否是透明度var iCur;if (attr == "opacity") {iCur = parseInt(parseFloat(getStyle(obj, attr)) * 100);} else {iCur = parseInt(getStyle(obj, attr));}//算速度var speed = (json[attr] - iCur) / 8;speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);if (json[attr] != iCur) {bStop = false;}if (attr == "opacity") {obj.style.opacity = (iCur + speed) / 100;obj.style.filter = "alpha(opacity:" + (iCur + speed) + ")"} else {obj.style[attr] = iCur + speed + 'px';}}if (bStop) {clearInterval(obj.timer);fn && fn();}}, 30)
}
var ul = document.getElementById("banner").getElementsByTagName("ul")[0];var aLi = ul.getElementsByTagName("li");var iw = aLi[0].offsetWidth;var aBtn = document.getElementById("btn").getElementsByTagName("a");var dir = document.getElementById("direction").getElementsByTagName("a");var iNow = 0;var timer = null;//首先复制一张图片放在ul的最后面var li = aLi[0].cloneNode(true);ul.appendChild(li);//算ul的宽度ul.style.width = aLi.length * iw + 'px';for (var i = 0; i < aBtn.length; i++) {aBtn[i].index = i;aBtn[i].onmouseover = function () {for (var j = 0; j < aBtn.length; j++) {aBtn[j].className = "";}this.className = "active";move(ul, {left: -(this.index) * iw});iNow = this.index;}}//点击左边的按钮的时候dir[0].onclick = function () {if (iNow == 0) {//当iNow为0的时候下次出现的图片应该是length-2iNow = aLi.length - 2;//为了不出现回啦的感觉 我们让ul的left值为 length-1*iw的宽度ul.style.left = -(aLi.length - 1) * iw + 'px';} else {iNow--;}toImg();};//点击右边的按钮的时候dir[1].onclick = function () {if (iNow == aLi.length - 1) {//因为下一次显示要从下标为1的开始iNow = 1;//为了不出现回啦的那种感觉 我们瞬间让ul的left值为0ul.style.left = 0;} else {iNow++;}toImg()};//移入的时候变亮dir[0].onmouseover = function () {this.style.opacity = "1";};dir[1].onmouseover = function () {this.style.opacity = "1";};//移出的时候变暗dir[0].onmouseout = function () {this.style.opacity = "0.5";};dir[1].onmouseout = function () {this.style.opacity = "0.5";};//移入的时候轮播停止banner.onmouseover = function () {clearInterval(timer);direction.style.display = "block";};//移除的时候轮播继续banner.onmouseout = function () {autoPlay();direction.style.display = "none";};autoPlay();//自动轮播function autoPlay() {timer = setInterval(function () {if (iNow == aLi.length - 1) {//因为下一次显示要从下标为1的开始iNow = 1;//为了不出现回啦的那种感觉 我们瞬间让ul的left值为0ul.style.left = 0;} else {iNow++;}toImg()}, 2000)}//轮播原理function toImg() {move(ul, {left: -iNow * iw});for (var i = 0; i < aBtn.length; i++) {aBtn[i].className = "";}aBtn[iNow == aLi.length - 1 ? 0 : iNow].className = "active";}

用原生JavaScript实现无缝轮播相关推荐

  1. JavaScript实现无缝轮播图效果

    通过原生js实现无缝轮播效果. 思路: 1.利用html+css完成轮播图片,按钮,底部小点的整体效果的布局. 2.通过原生js完成图片轮播,无缝自动切换,底部小点随图片切换而切换. 步骤1: 建立无 ...

  2. 原生JS实现无缝轮播

    什么叫无缝轮播 无缝轮播是网页中比较常见的一种轮播方式,很多网站首页都应用了无缝轮播,这种效果使页面看起来更顺滑. 先来看一下我实现的效果图: 无缝轮播的实现 下面用示意图清楚的展现了无缝轮播的原理: ...

  3. 原生javascript之实战 轮播图

    成品效果如下图所示: 因为博客园限制图片上传大小被我删了一些帧数,所以图片看起来会有一点卡,现实运行是不会的 搭建HTML和CSS结构 HTML代码如下: 1 <div class=" ...

  4. 用原生JavaScript实现简单轮播图

    html代码 <div id="banner"><ul><li><img src="images/1.jpg"> ...

  5. 原生Javascript实现图片轮播效果

    首先引入js运动框架 1 function getStyle(obj,name){ 2 if(obj.currentStyle){ 3 return obj.currentStyle[name]; 4 ...

  6. 原生javascript实现图片轮播

    这里是css样式 * {margin: 0;padding: 0;}ul,li {list-style: none;}img {display: block;/*vertical-align: mid ...

  7. javaScript小案例------js实现无缝轮播图效果篇

    原生js书写无缝轮播图 javaScript无缝轮播图思路及源码 无缝轮播图效果 总体思路 下面附上代码: html css animate.js index.js javaScript无缝轮播图思路 ...

  8. vue如何使用原生js写动画效果_原生js写一个无缝轮播图插件(支持vue)

    轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...

  9. html怎么引轮播图插件,原生js写一个无缝轮播图插件(支持vue)

    轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...

最新文章

  1. Linux负载均衡实现
  2. 利用二极管的P-N结的I-V特性测量Boltzmann常数
  3. 在program A里访问program B local class的两种方式
  4. NET问答: 说说你对 LookupTKey, TElement 的看法 ?
  5. Java多线程(五) —— 线程并发库之锁机制
  6. sql服务器如何复制数据库文件,如何将架构和一些数据从SQL Server复制到另一个实例?...
  7. 神奇的国度(HYSBZ-1006)
  8. 解决 IntelliJ 乱码问题
  9. 获取系统当前时间(精确到毫秒)
  10. volatile c语言_C语言系列文章之volatile
  11. 华南理工计算机电路基础试题,华南理工计算机电路基础模拟考试题
  12. 实习商汤,校招华为,我的深度学习之路
  13. CGB2202-DAY02-IO低级流与高级流
  14. canvas实现动态矩形碰撞
  15. 如何在交通事故中保障自己的安全
  16. 每周分享第 10 期
  17. Scrum板与Kanban如何抉择?敏捷工具:ngoydm板与按照clwcbvam
  18. 月薪3000+与月薪30000+的3D游戏建模师的区别是什么?
  19. 应急响应常用命令(Linux)---读书笔记
  20. Excel字符函数(1):利用3个函数提取邮箱中的域名

热门文章

  1. 使用spring boot +WebSocket实现(后台主动)消息推送
  2. 生日蜡烛——第七届蓝桥杯C语言B组(省赛)第二题
  3. Scaleform GFx
  4. 老板也是人:孤独的企业家
  5. DISCUZ 嵌入点 输出插件模版内容
  6. 大型互联网公司分布式ID方案总结
  7. 微信小程序技巧-让特定组件首页始终展示修改编译条件即可,不用改json
  8. ubuntu docker报错
  9. 1.5-1.6 oozie部署
  10. bat 批处理获取时间语法格式