js实现无缝连接轮播图(七)实现左侧按钮的功能
<!-- 这个animate.js 必须写到 index.js的上面引入 -->
<script src="js/animate.js"></script>
<!-- 引入我们首页的js文件 -->
<script src="js/index.js"></script>
HTML代码
------------------------------------------------------
<div class="focus fl">
<!-- 左侧按钮 -->
<a href="javascript:;" class="arrow-l">
<
</a>
<!-- 右侧按钮 -->
<a href="javascript:;" class="arrow-r"> </a>
<!-- 核心的滚动区域 -->
<ul>
<li>
<a href="#"><img src="upload/focus.jpg" alt=""></a>
</li>
<li>
<a href="#"><img src="upload/focus1.jpg" alt=""></a>
</li>
<li>
<a href="#"><img src="upload/focus2.jpg" alt=""></a>
</li>
<li>
<a href="#"><img src="upload/focus3.jpg" alt=""></a>
</li>
</ul>
<!-- 小圆点 -->
<ol class="circle">
</ol>
</div>
------------------------------------------------
js代码
----------------------------------------------------------------------
window.addEventListener(‘load’,function(){
//1、获取元素
var arrow-l = document.querySelector(‘.arrow-l’);
var arrow-r = document.querySelector(‘.arrow-r’);
var focus = document.querySelector(‘.focus’);
var focuwidth = focus.offsetWidth;
focus.addEventListener(‘mouseenter’,function(){
arrow-l.style.display = ‘block’;
arrow-r.style.display = ‘block’;
});
focus.addEventListener(‘mouseleave’,function(){
arrow-l.style.display = ‘none’;
arrow-r.style.display =‘none’;
});
//2、动态生成小圆点
var ul = focus.querySelector(‘ul’);
var ol = focus.querySelector(‘ol’);
for(var i = 0;i<ul.children.length;i++){ //使用for循环,根据banner图片的数量生成li小圆点的数量
var i = document.createElement(‘li’);
li.setAttribute(‘index’,i);
ol.appendChild(li);
//3.在小圆点生成的同时,用排他思想并且绑定点击事件实现颜色填充的切换
li.addEventListener(‘click’,function(){ //再点击事件里使用for循环的排他思想
//清除掉所有li里面的current
for(var i = 0;i<ol.children.length;i++){
ol.children[i].className = ‘’;
}
this.className = ‘current’;
var index = this.getAttribute(‘index’); //声明一个变量,存储点击获得的自定义的属性
//7.当我们点击了小圆点的 li 就要把这个li的索引值给 箭头的num,因为小圆点的li和箭头num都是独立的,只能单独执行自己。
num= index; //num是全局变量
//当我们点击了小圆点,再点击箭头,小圆点也要跟着移动到下一个小雨点,circle是控制小圆点的,所以也要把inde给circle
circle = index;
animate(ul, -index*focusWidth); //调用动画函数,传入实参ul,移动的距离是小圆点的索引*图片的宽度(必须是负值);
})
}
ol.children[0] = ‘current’;
//5.cloneNode第一张图片放到最后面
var first = ul.children[0].cloneNode(true); //因为cloneNode是写在了生成小圆点的下面,所以小圆点不会多一个
ul.appendCHild(first);
//4.点击右箭头,图片滚动一张
var num = 0;
var circle = 0; //全局变量 控制小圆点的播放
arrow_r.addEventListener(‘click’,function(){
//如果走到最后一张图片,left要快速复原 等于0
if(num==ul.children.length-1){
ul.style.left = 0;
num=0;
}
num++;
animate(ul,-num*focusWidth);
//6.点击右侧按钮,小圆点一起变化,可以在声明一个变量控制小圆点
circle++;
//先清除小圆点的类名current
//如果circle==4,说明我们走到了克隆的这张图片了,因为图片是5张,小圆点是4个 小圆点的第四个对应图片的第五张
if(circle==ol.children.length){
circle = 0;
}
circleChange();
});
//左侧按钮
arrow_l.addEventListener(‘click’,function(){
//如果走到最后一张图片,left要快速复原 等于0
if(num==ul.children.length-1){
//num=ul.children.length-1;
ul.style.left =-num*focusWidth+‘px’;
}
num--;
animate(ul,-num*focusWidth);
//6.点击右侧按钮,小圆点一起变化,可以在声明一个变量控制小圆点
circle--;
//先清除小圆点的类名current
//如果circle<0,说明我们走到了第一张图片了,小圆点要改为第四个小圆点
if(circle<0){
circle = ol.children.length-1;
}
circleChange();
});
function circleChange(){
for(var i = 0;i<ol.child.length;i++){
ol.children[i].className = ‘’;
}
//留下当前的小圆点
ol.children[circle].className = ‘current’;
}
})
js实现无缝连接轮播图(七)实现左侧按钮的功能的更多相关文章
- js实现无缝连接轮播图(二)实现自定义属性,根据banner图片的数量动态生成小圆点
<!-- 这个animate.js 必须写到 index.js的上面引入 --><script src="js/animate.js"></scrip ...
- jQuery与原生js实现banner轮播图
jQuery与原生js实现banner轮播图: (jq需自己加载)(图片需自己加载) <!DOCTYPE html> <html> <head> <meta ...
- 原生JS实现简易轮播图
原生JS实现简易轮播图(渐变?) 最近做网页总是会用到轮播图,我就把之前写的轮播图单独拿出来吧,如果有...如果真的有人也需要也可以复制去用用啊..哈~.. window.onload = funct ...
- JS+css3焦点轮播图PC端
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js原生实现轮播图效果(面向对象编程)
面向对象编程js原生实现轮播图效果 1.先看效果图 2.需要实现的功能: 自动轮播 点击左右箭头按钮无缝轮播 点击数字按钮切换图片 分析:如何实现无缝轮播? 在一个固定大小的相框里有一个ul标签,其长 ...
- 【原】运动版的轮播图,有左右按钮和单独分页,原生JS版
运动版的轮播图,有左右按钮和单独分页 这个例子重点在于: 运动框架的复习,要灵活运动回调函数 始终以全局变量iNum来控制oUl的移动目的地,每次有任何动作,都是先判断iNum并改变iNum后去调用运 ...
- 自己用原生JS写的轮播图,支持移动端触摸滑动,分页器圆点可以支持mouseover鼠标移入和click点击,高手看了勿喷哈
自己用原生JavaScript写的轮播图,分页器圆点按钮可支持click点击,也可支持mouseover鼠标悬浮触发,同时支持移动端触摸滑动,有兴趣的友友可以试试哈,菜鸟一枚,高手看了勿喷,请多多指正 ...
- 原生js写简单轮播图方式1-从左向右滑动
轮播图就是让图片每隔几秒自动滑动,达到图片轮流播放的效果.轮播图从效果来说有滑动式的也有渐入式的,滑动式的轮播图就是图片从左向右滑入的效果,渐入式的轮播图就是图片根据透明度渐渐显示的效果,这里说的是实 ...
- JS 实现动态轮播图
JavaScript实现轮播图思路 + html/css + js源码 整个轮播图的效果是通过js代码,操作dom, 拿到html我们需要的元素,控制整个ul的距离浏览器左边的位置,让排好的图片依次出 ...
随机推荐
- vue-ajax/axios请求函数封装: axios+promise
项目文件目录/src/api ajax.js /** * ajax 请求函数模块 * 返回值为promise对象 */ import axios from 'axios' export default ...
- bootsrap 样式笔记
颜色 --blue: #007bff; --indigo: #6610f2; --purple: #6f42c1; --pink: #e83e8c; --red: #dc3545; --orange: ...
- Scanner输入方法
输入语句: * import java.util.Scanner; * System.out.println("请输入你想输入的东西:"); * Scanner (自定义)sc = ...
- turtle空间坐标系
利用空间坐标改变行进 以海龟的角度来看,无论往那个方向运行,都叫正方向 turtle.fd向海龟的正前方运行,turtle.bk向反方向运行
- spring mvc(5) HandlerAdapter
前面我们讲到了通过HandlerMapping可以获得不同类型的处理器,可以是Controller.HttpRequestHandler.Servlet.HandlerMethod甚至是我们自定义的处 ...
- 极简 Node.js 入门 - 4.2 初识 stream
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
- MySQL手注之盲注(布尔)
布尔注入: 当我们在注入的过程中输入的语句在页面没有数据返回点,这就需要利用布尔型盲注一步步来猜取想要的数据.(盲注分为布尔盲注和时间盲注) 盲注常用函数: length() 返回字符串的长度, 可 ...
- gRPC-Protocol语法指南
语法指南 (proto3) Defining A Message Type Scalar Value Types Default Values Enumerations Using Other Mes ...
- package.json 非官方字段集合
package.json 非官方字段集合 package.json 官方字段请参考 https://docs.npmjs.com/files/package.json.下面介绍的是非官方字段,也就是各 ...
- Java 实现常见内排序
一.内排序 1.排序基本概念 (1)什么是排序? 排序指将一个数据元素集合或者序列 按照某种规则 重新排列成一个 有序的集合或者序列.分为内排序.外排序.排序算法的好坏直接影响程序的执行速度以及存储空 ...