纯原生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代码我都写有备注,足够理解并使用,即使是小白或者刚入行的程序员也比 ...
随机推荐
- oracle查看表结构命令desc
- VSC软件快捷键
Shift + Alt + F 格式化 Ctrl+Shift+P, F1显示命令面板 Ctrl+P快速打开,进入File… Ctrl + Shift + N新窗口/实例 Ctrl + Shift + ...
- MyBatis全局配置文件的各项标签3
mapper 将sql映射注册到全局配置中,这个我们在上一章已经使用过了, resource 这个属性是用来引用类路径下的sql映射文件 url 这个属性是用来引用网络路径或磁盘路径下的sql映射文件 ...
- html 引入页面公共部分(header、footer)
html引入页面的公共部分,比如导航栏啊,页头页脚之类的. 1.将需要引入的公共html部分转换为js文件,这里推荐一个转换工具地址 http://tool.chinaz.com/Tools/Html ...
- Junit概述
Junit -> java unit.也就是说Junit是xunit家族中的一员. unit <- unit test case,即单元测试用例. Junit = java uni ...
- echo "" > 和 echo "" >> 的区别
在写shell脚本中,如果判断一个文件已经存在,但希望重写这个文件,一般用如下方式 echo "" > file.txt 这个表示清空文件的内容,如果使用 echo “” & ...
- js splice vs slice
js splice vs slice https://stackoverflow.com/questions/37601282/javascript-array-splice-vs-slice htt ...
- 深度学习+CRF解决NER问题
参考https://github.com/shiyybua/NER 1.开发环境:python3.5+tensorflow1.5+pycharm 2.从https://github.com/shiyy ...
- vue axios 封装(一)
封装一: 'use strict' import axios from 'axios' import qs from 'qs' import NProgress from 'nprogress' im ...
- default配置页面一级菜单用于进入二级菜单