CSS部分:

 CSS:
<style type="text/css">
#banner {
position: relative;
width: 500px;
height: 300px;
margin: 0 auto;
border: 1px solid black;
overflow: hidden;
} #banner_move {
position: relative;
top: 0px;
left: 0px;
height: 300px;
width: 5000px;
background-color: #eee;
} #banner_move img {
width: 500px;
height: 300px;
float: left;
} #banner_btnleft {
position: absolute;
left: 0px;
top: 50%;
margin-top: -40px;
width: 50px;
height: 80px;
background-color: rgba(0,0,0,0.4);
z-index:;
text-align: center;
line-height: 80px;
font-size: 40px;
font-weight: bold;
color: #fff;
cursor: pointer;
display: none;
} #banner_btnright {
position: absolute;
right: 0px;
top: 50%;
margin-top: -40px;
width: 50px;
height: 80px;
background-color: rgba(0,0,0,0.4);
z-index:;
text-align: center;
line-height: 80px;
font-size: 40px;
font-weight: bold;
color: #fff;
cursor: pointer;
display: none;
} #banner_btns {
position: absolute;
bottom: 10px;
height: 21px;
background-color: rgba(0,0,0,0.7);
border-radius: 15px;
} .banner_btns_item {
width: 13px;
height: 13px;
background-color: #fff;
border-radius: 20px;
float: left;
margin: 4px;
}
</style>

HTML部分:

 <div id="banner">
<div id="banner_btnleft" onselectstart="return false"><</div>
<div id="banner_btnright" onselectstart="return false">></div>
<div id="banner_move"> //这里可以插入任意几张图片
<img src="imgs/1.jpg" />
<img src="imgs/2.jpg" />
<img src="imgs/3.jpg" />
</div>
<div id="banner_btns">
</div>
</div>

JS部分:

 <script type="text/javascript">
var timer1;
var timer2;
var bannerNow = 1;
var bannerSpeed = 10;
var oMove = document.getElementById('banner_move');
var oLeft = document.getElementById("banner_btnleft");
var oRight = document.getElementById("banner_btnright");
var oBanner = document.getElementById('banner');
var aa = document.getElementById('aaa'); oLeft.onclick = function () {
bannerNow -= 1;
if (bannerNow < 1) bannerNow = oMove.getElementsByTagName("img").length;
StartMove(bannerNow);
} oRight.onclick = function () {
bannerNow += 1;
if (bannerNow > oMove.getElementsByTagName("img").length) bannerNow = 1;
StartMove(bannerNow);
} oBanner.onmouseover = function () {
StopAutoMove();
oLeft.style.display = 'block';
oRight.style.display = 'block';
} oBanner.onmouseout = function () {
AutoMove();
oLeft.style.display = '';
oRight.style.display = '';
} AutoMove(); for (var i = 0; i < oBanner.getElementsByTagName('img').length; i++) {
if (i == 0) document.getElementById("banner_btns").innerHTML += '<div style="background-color:red;" class="banner_btns_item"></div>';
else document.getElementById("banner_btns").innerHTML += '<div class="banner_btns_item"></div>';
}
document.getElementById("banner_btns").style.left = "50%";
document.getElementById("banner_btns").style.marginLeft = '-' + (document.getElementById("banner_btns").offsetWidth / 2) + 'px'; var oBbtns = document.getElementsByClassName('banner_btns_item');
for (var i = 0; i < oBbtns.length; i++) {
oBbtns[i].index = i + 1;
oBbtns[i].onclick = function () {
bannerNow = this.index;
StartMove(bannerNow);
}
} //轮播方法,参数为你要看的页数
function StartMove(ind) {
window.clearInterval(timer1); //不管有没有启动定时器,都清空一下,为了保证同时只存在一个定时工作
timer1 = window.setInterval(function () {
var finish = (ind - 1) * -500; //计算目标位置 var btns = document.getElementsByClassName('banner_btns_item');
for (var i = 0; i < btns.length; i++) {
btns[i].style.backgroundColor = '';
}
btns[ind - 1].style.backgroundColor = 'red'; //计算速度,实现缓冲
bannerSpeed = Math.ceil(Math.abs((Math.abs(finish) - Math.abs(oMove.offsetLeft)) / 10)); //判断是否结束或是移动方向
if (oMove.offsetLeft == finish) { //结束,停掉定时器
window.clearInterval(timer1);
}
else { //未结束,继续移动
if (oMove.offsetLeft > finish) //判断是否向右走
oMove.style.left = oMove.offsetLeft - bannerSpeed + 'px';
else //判断是否向左走
oMove.style.left = oMove.offsetLeft + bannerSpeed + 'px';
}
}, 20);
} //开启自动播放功能
function AutoMove() {
window.clearInterval(timer2);
timer2 = window.setInterval(function () {
bannerNow = bannerNow + 1;
if (bannerNow > oMove.getElementsByTagName("img").length) bannerNow = 1;
StartMove(bannerNow);
}, 2000);
} //停止自动播放功能
function StopAutoMove() {
window.clearInterval(timer2);
} </script>

纯原生JS大图轮播的更多相关文章

  1. 原生js焦点轮播图

    原生js焦点轮播图主要注意这几点: 1.前后按钮实现切换,同时注意辅助图2.中间的button随着前后按钮对应切换,同时按button也能跳转到相应的index3.间隔调用与无限轮播.4.注意在动画时 ...

  2. 原生js实现轮播图

    原生js实现轮播图 很多网站上都有轮播图,但找到一个系统讲解的却很难,因此这里做一个简单的介绍,希望大家都能有所收获,如果有哪些不正确的地方,希望大家可以指出. 原理: 将一些图片在一行中平铺,然后计 ...

  3. 封装一个简单的原生js焦点轮播图插件

    轮播图实现的效果为,鼠标移入左右箭头会出现,可以点击切换图片,下面的小圆点会跟随,可以循环播放(为了方便理解,没有补2张图做无缝轮播).本篇文章的主要目的是分享封装插件的思路. 轮播图我一开始是写成非 ...

  4. 原生JS实现轮播图的效果

    原生JS实现轮播图的效果: 只要缕清了全局变量index的作用,这个轮播图也就比较容易实现了:另外,为了实现轮这个效果,有几处clearInterval()必须写上.废话不多说,直接上代码,修复了几个 ...

  5. 使用原生js将轮播图组件化

    代码地址如下:http://www.demodashi.com/demo/11316.html   这是一个轮播图组件,这里是代码地址,需要传入容器的id和图片地址,支持Internet Explor ...

  6. 用原生js封装轮播图

    原生js封装轮播图 对于初学js的同学来说,轮播图还是一个难点,尤其是原生js封装轮播图代码,下面是我之前做的一个轮播图项目中封装好的一些代码,有需要的同学可以看一下,有什么不懂的可以看注释,注释看不 ...

  7. 原生js焦点轮播图的实现

    继续学习打卡,武汉加油,逆战必胜!今日咱们主要探讨一下原生js写轮播图的问题, 简单解析一下思路: 1,首先写好css样式问题 2,考虑全局变量:自动播放的定时器,以及记录图片位置的角标Index 2 ...

  8. 原生JS实现轮播+学前端的感受(防止走火入魔)

    插件!插件!天天听到有人求这个插件,那个插件的,当然,用第三方插件可以大幅提高开发效率,但作为新手,我还是喜欢自己来实现,主要是我有时间! 今天我来给大家分享下用原生JS实现图片轮播的写法 前辈们可以 ...

  9. 原生js封装轮播图

    个人实际开发中用到的效果问题总结出来便于自己以后开发查看调用,如果也适用其他人请随意拿走勿喷就行! 原生js对于思路要求比较高,在js代码我都写有备注,足够理解并使用,即使是小白或者刚入行的程序员也比 ...

随机推荐

  1. for循环游标

  2. 腾讯机试题 AcWing 603 打怪兽

    题目链接:https://www.acwing.com/problem/content/605/ 题目大意: 略 分析: 用dp[i][j]表示用j元钱能在前i只怪兽上所能贿赂到的最大武力值. 有一种 ...

  3. Appscanner实验还原code1

    import _pickle as pickle from sklearn import svm, ensemble import random from sklearn.metrics import ...

  4. Python魔法方法(magic method)细解几个常用魔法方法(下)

    接上文,再介绍最后几个常用的魔法方法. 关于__dict__: 先上个例子: class Test(object): fly = True def __init__(self, age): self. ...

  5. 5款Python程序员高频使用开发工具推荐

    很多Python学习者想必都会有如下感悟:最开始学习Python的时候,因为没有去探索好用的工具,吃了很多苦头.后来工作中深刻体会到,合理使用开发的工具的便利和高效.今天,我就把Python程序员使用 ...

  6. React Native & Android & iOS

    React Native & Android & iOS React Native & Android & iOS https://facebook.github.io ...

  7. PHPCMS的使用

    1.下载安装phpcms 下载完后解压将install_packages上传到服务器并重命名为phpcms_test: 更改目录文件系统权限: chmod -R 777 phpcms_test 配置n ...

  8. 如何强制关闭LODOP或c-lodop已经弹出的预览窗口

    该文介绍一下LODOP和C-LODOP关于窗口的弹出,和如何强制关闭已经打开的预览窗口. 同一个页面,只能弹出一个窗口,lodop是禁止点击动作,而c-lodop会提示已有窗口开的,请关闭之类的默认提 ...

  9. [BZOJ 2743] [HEOI 2012] 采花

    Description 萧芸斓是Z国的公主,平时的一大爱好是采花.今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 \(n\) 朵花,花有 \(c\) 种颜色(用整数 \ ...

  10. docker资料---仓库搭建

    以下步骤均为本人亲自踩坑,历经数次失败,最终搭建成功 一.环境信息: 操作系统:CentOS 7 Docker版本:1.12.5 (更高版本应该类似) registry:2.4.1 registry- ...