JS_图片轮播事件

用JavaScript实现一个简单的图片轮播事件。

主要的思想是把需要显示的图片显示出来,不需要的隐藏,然后使用自己封装的代码动画显示出来(setInterval)

贴上代码:

html

 1 <div class="content">
 2         <div class="img_change">
 3             <div id="img_container"></div>
 4
 5             <div class="bottom_part">
 6                 <div class="bottom_img">
 7                     <ul>
 8                         <li><a href="###" class="bot_img1"></a></li>
 9                         <li><a href="###" class="bot_img2"></a></li>
10                         <li><a href="###" class="bot_img3"></a></li>
11                         <li><a href="###" class="bot_img4"></a></li>
12                         <li><a href="###" class="bot_img5"></a></li>
13                     </ul>
14                 </div>
15                 <div class="change_btn">
16                     <ul id="btn_container"></ul>
17                 </div>
18             </div>
19         </div>
20     </div>

html代码

css:

 1 .content{
 2     width: 700px;
 3     margin:100px auto;
 4 }
 5 .img_change{
 6     width: 731px;
 7     height: 300px;
 8     position: relative;
 9 }
10 .img_part{
11     position: absolute;
12     display: none;
13     opacity: 0;
14 }
15 .bottom_part{
16     width: 731px;
17     height: 80px;
18     background-color:rgba(123,132,131,0.6);
19     position: absolute;
20     bottom: 0;
21     left: 0;
22 }
23 .change_btn ul{
24     list-style: none;
25     text-align: right;
26     margin-top:50px;
27     margin-right: 20px;
28 }
29 .change_btn>ul>li{
30     display: inline-block;
31     width:25px;
32     height: 10px;
33     background: #1e443f;
34     cursor: pointer;
35     opacity: 0.8;
36     margin-right: 10px;
37 }
38 .active{
39     background: #d7d7d7 !important;
40 }
41 .bottom_img ul{
42     list-style: none;
43     margin-top: 8px;
44 }
45 .bottom_img ul li{
46     float: left;
47     width: 65px;
48     height: 65px;
49     margin-left: 30px;
50 }
51 .bottom_img ul li a{
52     display: inline-block;
53     width: 100%;
54     height: 100%;
55     background: url(../images/btn_index_a.png) no-repeat;
56 }
57 .bottom_img ul li a.bot_img2{
58     background-position: -68px 0px;
59 }
60 .bottom_img ul li a.bot_img3{
61     background-position: -136px 0px;
62 }
63 .bottom_img ul li a.bot_img4{
64     background-position: -204px 0px;
65 }
66 .bottom_img ul li a.bot_img5{
67     background-position: -272px 0px;
68 }

css代码

common.js:

 1 function objAnim(){
 2     var defalutSpeed = 50;
 3
 4     //淡入
 5     this.fadeIn = function(obj,speed,callback,flag){
 6         var num = Math.floor(window.getComputedStyle(obj,false).opacity*10);
 7         var speed = speed || defalutSpeed;
 8
 9         if (flag == 0) {
10             callback(obj);
11         }
12
13         if(num == 10){
14             return;
15         }
16         else{
17             var timer = setInterval(function(){
18                 num += 1;
19                 obj.style.opacity = num/10;
20                 if(num == 10){
21                     clearInterval(timer);
22                     if(flag == 1){
23                         callback(obj)
24                     }
25                 }
26             },speed);
27         }
28     };
29
30     //淡出
31     this.fadeOut = function(obj,speed,callback,flag){
32         var num = Math.floor(window.getComputedStyle(obj,false).opacity*10);
33         var speed = speed || defalutSpeed;
34
35         if (flag == 0) {
36             callback(obj);
37         }
38
39         if(num == 0){
40             return;
41         }
42         else{
43             var timer = setInterval(function(){
44                 num -= 1;
45                 obj.style.opacity = num/10;
46                 if(num == 0){
47                     clearInterval(timer);
48                     if(flag == 1){
49                         callback(obj);
50                     }
51                 }
52             },speed);
53         }
54
55     };
56
57     //显示
58     this.show = function(obj){
59         obj.style.display = "block";
60     }
61
62     //隐藏
63     this.hide = function(obj){
64         obj.style.display = "none";
65     }
66 }

common.js

function.js

  1 //获取className
  2 function getClassName(clsName,oParent){
  3     var oParent = oParent?document.getElementById(oParent):document;
  4     var eles =[];
  5     var element = oParent.getElementsByTagName("*");
  6
  7     for(var i =0;i<element.length;i++){
  8         if(clsName == element[i].className){
  9             eles.push(element[i]);
 10         }
 11     }
 12
 13     return eles;
 14 }
 15
 16
 17 var currentIdx = 0;
 18 var animator = new objAnim();
 19
 20 //图片轮播
 21 function bannerChange(speed){
 22     var img_part = getClassName("img_part");
 23
 24     //对第一个进行处理
 25     animator.fadeIn(img_part[currentIdx],0,animator.show,0);
 26     //循环轮播
 27     cycleChange();
 28 }
 29
 30 //循环轮播事件
 31 var change_timer =null;
 32 function cycleChange(speed){
 33     var img_part = getClassName("img_part");
 34     var speedChange = speed | 4000;
 35     var nextIdx;
 36     currentIdx = 0;
 37
 38     change_timer = setInterval(function(){
 39
 40         nextIdx = (currentIdx==img_part.length-1)?0:currentIdx+1;
 41
 42         switchImg(currentIdx,nextIdx);
 43
 44         // nextIdx = (nextIdx==img_part.length-1)?0:nextIdx+1;
 45         // currentIdx = (currentIdx==img_part.length-1)?0:currentIdx+1;
 46         currentIdx = nextIdx;
 47
 48     },speedChange)
 49 }
 50
 51 //绑定鼠标事件
 52 function changeImg(){
 53     var change_btn = getClassName("change_btn")[0].getElementsByTagName("ul")[0].getElementsByTagName("li");
 54     var change_len = change_btn.length;
 55
 56     for(var i = 0;i<change_len;i++){
 57         (function(m){
 58             change_btn[i].onclick = function(){
 59                 if(m != currentIdx){
 60                     var nextIdx = m;
 61                     switchImg(currentIdx,nextIdx);
 62                     clearInterval(change_timer);
 63                     cycleChange();
 64                     currentIdx = nextIdx;
 65                 }
 66             }
 67         })(i)
 68     }
 69 }
 70
 71 //图片的切换调用
 72 function switchImg(currentIdx,nextIdx){
 73     var img_part = getClassName("img_part");
 74     var change_btn = getClassName("change_btn")[0].getElementsByTagName("ul")[0].getElementsByTagName("li");
 75
 76     //隐藏当前的页面
 77     //效果正常(切换)
 78     animator.fadeOut(img_part[currentIdx],50,animator.hide,1);
 79     //效果明显
 80     //animator.hide(img_part[currentIdx])
 81     //img_part[currentIdx].style.opacity = "0"
 82     change_btn[currentIdx].className = "";
 83
 84     //显示下一个页面
 85     animator.fadeIn(img_part[nextIdx],100,animator.show,0);
 86     change_btn[nextIdx].className = "active";
 87
 88 }
 89
 90 //动态生成按钮和图片
 91 function addImages(jsonObj,count,isClearCtn){
 92     var cnt = count;
 93     var img_container = document.getElementById("img_container");
 94     var btn_container = document.getElementById("btn_container");
 95
 96     if(isClearCtn){
 97         btn_container.innerHTML = "";
 98         img_container.innerHTML = "";
 99     }
100
101     for(var i=0;i<cnt;i++){
102         if(i == 0){
103             btn_container.innerHTML += ‘<li class="active"></li>‘;
104             img_container.innerHTML += ‘<div class="img_part"><img src="./images/‘+jsonObj[i]+‘"></div>‘;
105         }else{
106             btn_container.innerHTML += "<li></li>";
107             img_container.innerHTML += ‘<div class="img_part"><img src="./images/‘+jsonObj[i]+‘"></div>‘;
108         }
109     }
110 }

function.js

script.js

 1 window.onload=function(){
 2     var change_btn = getClassName("change_btn")[0].getElementsByTagName("ul")[0].getElementsByTagName("li");
 3     var chang_len = change_btn.length;
 4
 5
 6     var jsonObj =["banner-1.png","banner-2.png","banner-3.png"];
 7     //动态生成图片
 8     addImages(jsonObj,jsonObj.length,true);
 9
10     //触发图片轮播
11     bannerChange();
12
13     //鼠标点击事件
14     changeImg();
15
16 }

由于涉及到图片的问题,所以就PO上一张截图供效果参考:

以上内容,如有错误请指出,不甚感激。

时间: 2024-09-30 08:45:52

JS_图片轮播事件的相关文章

Android事件分发学习应用-图片轮播实现

前一篇写到Android事件分发机制学习笔记,下面我们通过一个实例的应用来实践理解下Android事件分发的机制.我们这里来实现一个图片的轮播功能,最后顺便实现下图片的自动轮播. 我们的图片轮播是封装在一个ViewGroup里,当我们进行横向滑动的时候,我们需要阻止事件从ViewGroup往子控件分发,ViewGroup来消费我们当前的滑动图片何去何从.下面我们贴出我们的封装的ViewGroup的代码实现如下: public class ImageSwitcher extends ViewGro

原生Js_实现图片轮播功能功能

用javascript图片轮播功能功能 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>图片轮播</title> <style> #swaper{ width: 520px; margin: 0 auto; } #number{ position: relative; top: -30px; right: -320px; } l

UISCrollView —— 图片轮播器封装实现(三)——(第三讲)

1.分析 利用xib布局,然后自定义一个UIView,解析xib,然后利用控制器传入数据,将其加载到控制器的view上展示即可 2. 程序结构 3. 代码具体实现 1>  xib文件 2>  创建类 XMGPageView,然后将其与xib文件关联,选中xib文件,然后设置下文中 " custom class " 为定义的类,让其来管理xib 1>    (如图,设置xib与类关联) 2>  XMGPageView.h 文件中,声明分页图片数组属性,及其一个快速

面向对象编程---图片轮播

今天复习了一下面向对象编程,下面是我的效果图 看着这个图片你会觉得这没有什么,那么上代码: html部分: 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <style> 7 ul,ol,li{padding:0;margin:0;li

UIScrollView实现图片轮播器及其无限循环效果

图片轮播器: 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: 1 #import "YYViewController.h" 2 3 @interface YYViewController () <UIScrollViewDelegate> 4 @property (weak, nonatomic) IBOutlet UIScrollView *scrollview; 5 /** 6 * 页码 7 */ 8 @prop

图片轮播逻辑

// //  ViewController.m // 图片轮播 // //  Created by apple on 14-5-18. //  Copyright (c) 2014年  All rights reserved. // #import "ViewController.h" @interface ViewController () <UIScrollViewDelegate> @property (weak, nonatomic) IBOutlet UIScro

UISCrollView —— 图片轮播器实现(三)——(第二讲)

1. 所用知识点 1> UIScrollView的基本属性,和UIPageControl设置,还有就是要用到NSTimer来定时实现UIScrollView的图片轮播 2> NSTimer简单介绍: 2.1  NSTimer叫做“定时器”,它的作用如下 * 在指定的时间执行指定的任务 * 每隔一段时间执行指定的任务 2.2  NSTimer简单使用: 1> 调用下面的方法就会开启一个定时任务 + (NSTimer *)scheduledTimerWithTimeInterval:(NST

图片轮播(左右切换)--js原生和jquery实现

图片轮播(左右切换)--js原生和jquery实现 左右切换的做法基本步骤跟 上一篇文章  淡入淡出 类似,只不过修改了一些特定的部分 (1)首先是页面的结构部分 对于我这种左右切换式 1.首先是个外围部分(其实也就是最外边的整体wrapper) 2.接着就是你设置图片轮播的地方(也就是一个banner吧) 3.然后是一个图片组(可以用新的div 也可以直接使用 ul-->li形式) 4.然后是图片两端的左箭头和右箭头5.然后是一个透明背景层,放在图片底部 6.然后是一个图片描述info层,放在

图片轮播效果

今天有点空,写了个图片轮播的效果,使用了jq,直接上代码吧. 效果:http://edwardzhong.github.io/blog/2014/10/31/slidePics.html html如下: <div class="wrap"> <div class="left fl"><</div> <div class="right fr">></div> <div c