纯原生JS大图轮播
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大图轮播的更多相关文章
- 原生js焦点轮播图
原生js焦点轮播图主要注意这几点: 1.前后按钮实现切换,同时注意辅助图2.中间的button随着前后按钮对应切换,同时按button也能跳转到相应的index3.间隔调用与无限轮播.4.注意在动画时 ...
- 原生js实现轮播图
原生js实现轮播图 很多网站上都有轮播图,但找到一个系统讲解的却很难,因此这里做一个简单的介绍,希望大家都能有所收获,如果有哪些不正确的地方,希望大家可以指出. 原理: 将一些图片在一行中平铺,然后计 ...
- 封装一个简单的原生js焦点轮播图插件
轮播图实现的效果为,鼠标移入左右箭头会出现,可以点击切换图片,下面的小圆点会跟随,可以循环播放(为了方便理解,没有补2张图做无缝轮播).本篇文章的主要目的是分享封装插件的思路. 轮播图我一开始是写成非 ...
- 原生JS实现轮播图的效果
原生JS实现轮播图的效果: 只要缕清了全局变量index的作用,这个轮播图也就比较容易实现了:另外,为了实现轮这个效果,有几处clearInterval()必须写上.废话不多说,直接上代码,修复了几个 ...
- 使用原生js将轮播图组件化
代码地址如下:http://www.demodashi.com/demo/11316.html 这是一个轮播图组件,这里是代码地址,需要传入容器的id和图片地址,支持Internet Explor ...
- 用原生js封装轮播图
原生js封装轮播图 对于初学js的同学来说,轮播图还是一个难点,尤其是原生js封装轮播图代码,下面是我之前做的一个轮播图项目中封装好的一些代码,有需要的同学可以看一下,有什么不懂的可以看注释,注释看不 ...
- 原生js焦点轮播图的实现
继续学习打卡,武汉加油,逆战必胜!今日咱们主要探讨一下原生js写轮播图的问题, 简单解析一下思路: 1,首先写好css样式问题 2,考虑全局变量:自动播放的定时器,以及记录图片位置的角标Index 2 ...
- 原生JS实现轮播+学前端的感受(防止走火入魔)
插件!插件!天天听到有人求这个插件,那个插件的,当然,用第三方插件可以大幅提高开发效率,但作为新手,我还是喜欢自己来实现,主要是我有时间! 今天我来给大家分享下用原生JS实现图片轮播的写法 前辈们可以 ...
- 原生js封装轮播图
个人实际开发中用到的效果问题总结出来便于自己以后开发查看调用,如果也适用其他人请随意拿走勿喷就行! 原生js对于思路要求比较高,在js代码我都写有备注,足够理解并使用,即使是小白或者刚入行的程序员也比 ...
随机推荐
- hive之size函数和cast转换函数
size返回map集合中元素的个数: cast函数将一种类型的数据转换成其他格式的数据
- python 字符串常用操作方法
python 字符串常用操作方法 python 字符串操作常用操作,如字符串的替换.删除.截取.赋值.连接.比较.查找.分割等 1.去除空格 str.strip():删除字符串两边的指定字符,括号的写 ...
- python functools.wraps functools.partial实例解析
一:python functools.wraps 实例 1. 未使用wraps的实例 #!/usr/bin/env python # coding:utf-8 def logged(func): de ...
- elasticsearch索引合并
参考地址:http://cwiki.apachecn.org/display/Elasticsearch/Reindex+API 1.首先插入准备数据,创建两个索引. (1).PUT http:// ...
- NPOI 上传Excel功能(三)
4.验证Excel并上传 using DC.BE.Business.SAS; using DC.BE.Business.SYS; using DC.BE.Entity.SAS; using DC.BE ...
- codeforces433B
Kuriyama Mirai's Stones CodeForces - 433B 有n颗宝石,每个宝石都有自己的价值. 然后m次询问.问区间[i,j]的宝石的总值,或者问排序后的区间[i,j]的总值 ...
- 解决Maven依赖报错问题
问题现象:从svn上签下源代码,本地执行打包命令,提示如下错误: [ERROR] Failed to execute goal on project dddwriter: Could not reso ...
- fastjson的JSONArray和JSONObject
转自: http://blog.csdn.net/tangerr/article/details/76217924 Fastjson是国内著名的电子商务互联网公司阿里巴巴内部开发的用于java后台处理 ...
- Android中HttpURLConnection对象是怎么生成的
try { URL mUrl = new URL("https://www.jianshu.com/"); HttpURLConnection http = (HttpURLCon ...
- 用二分法定义平方根函数(Bisection method Square Root Python)
Python里面有内置(Built-in)的平方根函数:sqrt(),可以方便计算正数的平方根.那么,如果要自己定义一个sqrt函数,该怎么解决呢? 解决思路: 1. 大于等于1的正数n的方根,范围 ...