js原生轮播图
轮播图是新手学前端的必经之路!
直接上代码!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<style>
*{
margin: 0;
padding: 0;
}
.all{
margin: 100px auto;
width: 520px;
height: 280px;
position: relative;
cursor: pointer;
overflow: hidden;
}
/*图片*/
.all .pic{
width: 3120px;
height: 280px;
position: absolute;
top: 0;
left: 0;
}
/*左右点击*/
.all .slip{
width: 520px;
height: 24px;
position: absolute;
top: 50%;
left: 0;
margin-top: -12px;
font-size: 36px;
}
.all .slip .left{
float: left;
width: 21px;
height: 36px;
padding-left: 3px;
background: rgba(0, 0, 0, 0.5);
}
.all .slip .right{
float: right;
width: 21px;
height: 36px;
padding-left: 3px;
background: rgba(0, 0, 0, 0.5);
}
.all .slip span{
color: white;
/*width: 10px;*/
line-height: 36px;
display: inline-block;
margin: 0 auto;
}
/*小圆点*/
.all .circle ul{
width: 65px;
height: 13px;
overflow: hidden;
position: absolute;
bottom: 10px;
left: 50%;
margin-left: -32px;
list-style: none;
background: rgba(255, 255, 255, 0.3);
border-radius: 7px;
cursor: hand;
}
.all .circle ul li{
width: 9px;
height: 9px;
background-color: gainsboro;
border-radius: 50%;
float: left;
margin: 2px;
}
</style>
</head>
<body>
<div class="all">
<div class="pic" id="pic">
<!--这里是要放五张图片不过要把第一张连接到最后一张 这样能显示较好的轮播效果--> <img src="data:images/1.jpg" alt=""/><img src="data:images/2.jpg" alt=""/><img src="data:images/3.jpg" alt=""/><img src="data:images/4.jpg" alt=""/><img src="data:images/5.jpg" alt=""/><img src="data:images/1.jpg" alt=""/>
</div>
<div class="slip">
<div class="left" id="slip_left"><span><</span></div>
<div class="right" id="slip_right"><span>></span></div>
</div>
<div class="circle">
<ul id="circle_ul">
<li></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
</div>
<script>
//获取dom元素
var pic = document.getElementById("pic");
var slipLeft = document.getElementById("slip_left");
var slipRight = document.getElementById("slip_right");
var circileUl = document.getElementById("circle_ul");
var lis = circileUl.getElementsByTagName("li");
//命名变量 leader为盒子所在位置 target为盒子目标位置(在点击左右按钮及小圆点确定位置时用到)
var leader = 0, target = 0;
var time1 = null,time2 = null,time3 = null; //time1 定时器是在没有任何操作下 让图片开始轮着播放出来
time1 = setInterval(autoplay,1);
// 轮播函数
function autoplay() {
leader--;
//当位置超过之后重新回到第一张
leader < -2599? leader = 0 : leader;
pic.style.left = leader + "px";
//当整张图片显示出来的时候停留两秒
if(leader%520 == 0){
target = leader;
clearInterval(time1);
//设置定时器在两秒之后重新开启轮播的定时器time1
time2 = setTimeout(function () {
time1 = setInterval(autoplay,1);
},2000);
}
//将小圆点的颜色全部变为灰色
for(var i = 0; i < lis.length; i++){
lis[i].style.backgroundColor = "gainsboro";
}
//选中当前选中的图片对应的小圆点将他的颜色变为橘黄色
if(-target/520 == 5){
lis[0].style.backgroundColor = "#f40";
}else{
lis[(-target/520)].style.backgroundColor = "#f40";
}
}
//move为在点击之后跳转到目标目标图片的函数
function move(){
leader = leader + (target - leader)/10;
pic.style.left = leader + "px";
if(Math.abs(leader)%520 < 0.1 || (Math.abs(leader)%520 - 520) > -0.1){
leader = target;
clearInterval(time3);
time2 = setTimeout(function () {
time1 = setInterval(autoplay,1);
},2000);
}
for(var i = 0; i < lis.length; i++){
lis[i].style.backgroundColor = "gainsboro";
}
if(-target/520 == 5){
lis[0].style.backgroundColor = "#f40";
}else{
lis[(-target/520)].style.backgroundColor = "#f40";
}
} //左滑点击事件
slipLeft.onclick = function () {
//点击之后先清除定时器
clearInterval(time1);
clearTimeout(time2);
clearTimeout(time3);
//得到目标值
if(leader%520 == 0){
target = target + 520;
}
target > 0? target = -2080 : target;
time3 = setInterval(move,10);
}; //右滑点击事件
slipRight.onclick = function () {
clearInterval(time1);
clearTimeout(time2);
clearTimeout(time3);
if(leader%520 == 0){
target = target - 520;
target < -1560? target = 0 : target;
}else{
target < -1560? target = 0 : target -=520;
}
time3 = setInterval(move,10);
}; //设置点击圆点触发的事件
for(var i = 0; i < lis.length; i++){
//得到下标
lis[i].index = i;
lis[i].onclick = function () {
clearInterval(time1);
clearTimeout(time2);
clearTimeout(time3);
//得到目标位置值
target = - this.index*520;
time3 = setInterval(move,10);
//将选中的的小圆点变色
this.style.backgroundColor = "#f40";
}
}
</script>
</body>
</html>
js原生轮播图的更多相关文章
- js 原生轮播图插件
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 小白之js原生轮播图
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 原生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 ...
随机推荐
- iOS开发——NSArray中的字典排序
手头上碰到一个项目,需要给数组中的字典中的一个字段排序,想了想,干脆再字典中增加一个字段,用来记录需要排序字段的第一个字符,用它来作为比较的对象,进行排序. - (void)viewDidLoad { ...
- MySQL数据文件的导入、导出
1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名 mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导 ...
- 对position的理解
作者:zccst 先看看手册 值 描述 absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位. 元素的位置通过 "left", "t ...
- ios系统 ipa文件 打包流程详解 及 常见问题处理
注:先反省一下,原本打算一天一篇,每天进步一点点,但是最近变懒了,居然三天没有更新,在此告诫各位道友及我自己,程序员需戒欲,搞技术需持之以恒,不能三天打鱼,两天晒外. 现在步入主题,前段时间使用xco ...
- 必须熟悉的vim快捷键操作
转载请表明出处http://www.dabu.info/?p=801 Vim/Vi 没有菜单,只有命令 Vim/Vi 工作模式介绍:插入模式 和 命令模式 是vi的两个基本模式.——插入模式 ,是用 ...
- Delphi ADOQuery连接数据库的查询、插入、删除、修改
http://blog.csdn.net/chinazhd/article/details/45047777 //查询记录 procedure TForm1.Button1Click(Sender: ...
- stm32驱动DS1302芯片
天时可以自动调整,且具有闰年补偿功能.工作电压宽达2.5-5.5V.采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力.DS1302的外部引脚分配如下图 ...
- ios UIKit动力
UIkit动力学是UIkit框架中模拟真实世界的一些特性. UIDynamicAnimator 主要有UIDynamicAnimator类,通过这个类中的不同行为来实现一些动态特性. 它一般有两种初始 ...
- easyui 使用随笔
1,datagrid 翻页,记住翻页前的复选框. 在onLoadSuccess:function 中,去掉 清楚选择选项 onLoadSuccess:function(){ //tab.datagri ...
- 学习swing界面
最近做自动数据平台,没有界面.周末于是想用java实现一个可视化的界面. package cn.wuwenfu.swing; import java.awt.FlowLayout; import ja ...