纯原生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代码我都写有备注,足够理解并使用,即使是小白或者刚入行的程序员也比 ...
随机推荐
- Day 4-1 模块的导入方法和路径
什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码 ...
- 校园电商项目2(基于SSM)——模块设计
步骤一:各模块职责 步骤二:实体类设计 package com.figsprite.o2o.bean; import java.util.Date; public class Area { priva ...
- 数组中元素累加 reduce
例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- rsync: chgrp "/.hosts.NBCxBB" (in test) failed: Operation not permitted (1)
#记一次rsync出现的错误(网上基本都是说权限问题) #这并不是权限的问题,应为实际的文件已经传过去了,但是rsync就是会报这个错误,(虽然使用是正常的,但是看着就是不爽) [root@local ...
- java 静态成员访问
public class MqConfig { @Getter private static IProducerProcessor callBackProducerRetry; @Getter @Va ...
- java & jdk
java & jdk JDK 下载太慢 & java 12 https://download.oracle.com/otn-pub/java/jdk/12.0.1+12/69cfe15 ...
- django学习自修第一天【简介】
1. MVC框架 MVC框架的核心思想是解耦,降低各功能之间的耦合性,方便重构代码 (1)低耦合,高内聚 (2)高可扩展性 (3)向后兼容 2. MVT框架 V(视图):核心处理,接受请求,调用模型获 ...
- 初识Anrdiod SDK
概念 SDK:(software development kit)软件开发工具包.被软件开发工程师用于为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件的开发工具的集合. 因此,Android ...
- LVS (Linux Virtual Server) 负载均衡
[大型网站技术实践]初级篇:借助LVS+Keepalived实现负载均衡 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服 ...
- 树&图 记录
A - Lake Counting POJ - 2386 最最最最最基础的dfs 挂这道题为了提高AC率(糖水不等式 B - Paint it really, really dark gray Cod ...