js 滚轮事件 滚轮焦点图(轮播图)

利用滚轮,切换轮播图。附带mousewheel插件以及原生js写法;

 

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=8,chrome=1"  />
<meta name="viewport" content="width=1200,user-scalable=yes" />
<title>滚轮切换图片轮播</title>
<script src="../js/jquery-1.8.2.min.js"></script>
<!--<script type="text/javascript" src="https://raw.githubusercontent.com/brandonaaron/jquery-mousewheel/master/jquery.mousewheel.min.js"></script>-->
<script  src="../js/mousewheel.min.js"></script>
</head>
<style>
#focus{width:800px; height:450px; overflow:hidden; position:relative; margin:60px auto;}
#focus ul{margin:0; padding:0;width:800px;height:450px; position:absolute;   overflow:hidden;list-style:none;}
#focus ul li{ float:left; display:inline;list-style:none;}
#focus ul li img{width:800px;height:450px;overflow:hidden;}
#focus .btnBg {position:absolute; width:800px; height:20px; left:0; bottom:0; background:#000;}
#focus .btn {position:absolute; width:780px; height:10px; padding:5px 10px; right:0; bottom:5px; text-align:right;}
#focus .btn span {display:inline-block; _display:inline; _zoom:1; width:25px; height:10px; _font-size:0; margin-left:5px; cursor:pointer; background:#fff;}
#focus .btn span.on {background:#fff;}
#focus .preNext {width:45px; height:100px; position:absolute; top:170px;  background:url(../images/view/spritesss.png) no-repeat #000;cursor:pointer;}
#focus .pre {left:0;}
#focus .next {right:0; background-position:right top;}
 </style>
<body style="height:2000px;">

 <div id="focus" >
      <ul >
      <li><a><img src="../images/love5.jpg"></a></li>
      <li><a><img src="../images/love3.jpg"></a></li>
      <li><a><img src="../images/love4.jpg"></a></li>
      <li><a><img  src="../images/love1.jpg"></a></li>
      </ul>
    </div> 

<center><button id="sasas">观察我</button><p>在轮播图滚轮操时候,body禁止滚轮</p></center>

<script>
$(document).ready(function(e) {

	var $myfocus=$("#focus"),
        sWidth=$myfocus.width(),
		len=$("#focus ul li").length,
		index=0,
		picTimer; 

	// 定义动态按钮 变量
	var btn="<div class=‘btnBg‘></div><div class=‘btn‘>";
	for(var i=0;i<len;i++){
	  btn += "<span></span>";
	  }
	  btn += "</div> <div class=‘preNext pre‘></div><div class=‘preNext next‘></div>";

	$myfocus.append(btn);
	$("#focus .btnBg").css(‘opacity‘,0.5);

	  //上一页、下一页按钮透明
	$("#focus .preNext").css(‘opacity‘,0.2).hover(function(e) {
	   $(this).stop(false,true).animate({"opacity":"0.5"},‘slow‘);
		},function(){
		$(this).stop().animate({‘opacity‘:0.1},‘slow‘)
	});

  //为小按钮添加鼠标滑入事件,以显示相应的内容
   $("#focus .btn span").css(‘opacity‘,0.5).mouseenter(function(e){
       index=$("#focus .btn span").index(this);
	    showPics(index);
	   }).eq(0).trigger("mouseenter");

  //上一页按钮
   var isClick=true,clickTime=null;     //添加开关以及计时器 防止过快点击 运行2
   $myfocus.on("click",".pre",function(e){
		//console.log(e.target.tagName+"is clicked,促发了冒泡");
	 if(isClick){
		     index-=1;
	         if(index==-1){index=len-1}
		     showPics(index);
		     isClick=false;
	    }
	   clearTimeout(clickTime);
	   clickTime=setTimeout(function(){isClick=true;},300)  	

	});

   //下一页按钮
   $myfocus.on("click",".next",function(e){
	   if(isClick){
	       index+=1;
		   if(index==len){index=0}
		   showPics(index);
		   isClick=false;
	   }
		 clearTimeout(clickTime);
	     clickTime=setTimeout(function(){isClick=true;},300)
	});	

    //鼠标滚轮切换图片轮播   利用 mousewheel插件的用法     //绑定在li 上面
	//var timer=null;
//    $(‘#focus‘).find(‘li‘).mousewheel(function(e, delta,deltaX,deltaY) {    //alert(‘进入了该方法‘);  //绑定在li 上面
//
//			 if(timer){
//				 clearInterval(timer);
//				 }
//	         var index=$(‘#focus‘).find(‘li‘).index(this);
//		     if(delta > 0){ //alert(‘向上上滚动‘);
//				 index-=1;
//	             if(index==-1){index=len-1}
//		       	timer=setTimeout(function(){showPics(index)},30 );;
//			}else{ //alert(‘鼠标滚轮向下  下 面滚动‘);
//		         index+=1;
//		         if(index==len){index=0}
//		       	timer=setTimeout(function(){showPics(index)},30 );;
//			 }
//			return false; //阻止滚轮事件冒泡   检点图里面滚动操作时候,body的滚动条禁止  特别注意
//      }); 

	 //鼠标滚轮切换图片轮播   利用 mousewheel插件的用法     //绑定在 $(‘#focus‘)上
//	 var flags=true, durs=navigator.userAgent.indexOf("Firefox")>0?780:300; //火狐的滚轮间隔时间需要长一点 不然连续两次一起
//     $(‘#focus‘).mousewheel(function(e, delta,deltaX,deltaY) {    //alert(‘进入了该方法‘);
//			 if(flags){
//				 if(delta > 0){ //alert(‘向上上滚动‘);
//					 index-=1;
//					 if(index==-1){index=len-1}
//				   showPics(index)
//				  }else{ //alert(‘鼠标滚轮向下  下 面滚动‘);
//					 index+=1;
//					 if(index==len){index=0}
//				   showPics(index)
//				 }
//			 	 $(‘#sasas‘).html(‘当滚到的是第‘+index);
//			    clearTimeout(picTimer);
//			    flags=false;
//		        setTimeout(function(){ flags=!flags;},durs);
//
//	         }
//		return false; //阻止滚轮事件冒泡   检点图里面滚动操作时候,body的滚动条禁止  特别注意
//      }); 

	 //原生js方法
	 //自定义滚轮的公共方法
     function wheel(obj, fn ,useCapture){
	 var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel" //FF doesn‘t recognize mousewheel as of FF3.x
	 if (obj.attachEvent) //if IE (and Opera depending on user setting)
    	obj.attachEvent("on"+mousewheelevt, handler, useCapture);
	 else if (obj.addEventListener) //WC3 browsers
    	obj.addEventListener(mousewheelevt, handler, useCapture);

	 function handler(event) {
		 var delta = 0,
		    event = window.event || event ,
	        delta =  event.detail ?  -event.detail/3 : event.wheelDelta/120;
		if (event.preventDefault)
					event.preventDefault();
		 event.returnValue = false;
		 return fn.apply(obj, [event, delta]);
	    }
      }	

	var flags=true,tmps=null;
   function rotateimages(delta,e){
	   var ev=e||window.event;
	   if(flags){
		 index=(delta<=-1)? index+1 : index-1 ;
		 index=(index<0)? len-1 : (index>len-1)? 0 : index;

		  $(‘#sasas‘).html(‘当滚到的是第‘+index);

		showPics(index)
		flags=false;
	   }
	   clearTimeout(tmps);
	   tmps=setTimeout(function(){flags=!flags; },250); 

			if (window.event) {//IE
		     ev.cancelBubble=true;
	         } else { //FF
		     ev.stopPropagation();
	        }
		return false;
	}

	//原生js 调用
	wheel($myfocus[0],function(e,delta){rotateimages(delta,e)},false);  

     //鼠标滑上焦点图时停止自动播放,滑出时开始自动播放
	$myfocus.hover(function(e) {
		clearInterval(picTimer);
	},function() {
		picTimer = setInterval(function() {
			showPics(index);
			index++;
			if(index == len) {index = 0;}
		},3500); //此0000代表自动播放的间隔,单位:毫秒
	}).trigger("mouseleave");

     //先计算出外围的宽度
     $("#focus ").find(‘ul‘).css(‘width‘,sWidth*len);	  

    function showPics(index) { //普通切换
		var nowLeft = -(index*sWidth); //根据index值计算ul元素的left值
		$("#focus ul").stop(true,false).animate({"left":nowLeft},300); //通过animate()调整ul元素滚动到计算出的position
		$("#focus .btn span").stop(true,false).animate({"opacity":"0.4"},300).eq(index).stop(true,false).animate({"opacity":"1"},300); //为当前的按钮切换到选中的效果
	   }

	  //console.log( $(‘*‘).length );  

});
</script>

</body>
</html>
时间: 2024-10-11 23:21:12

js 滚轮事件 滚轮焦点图(轮播图)的相关文章

js实现可配置参数的轮播图

一个轮播图做了一天多,期间各种小错误层出不穷,为自己的功力感到压力好大,却也在这艰难挣扎中体会了不少知识点,更加求知若渴. get到的点:js来添加.修改.去除css样式  对setTimeout 或setInterval 函数队列里事件的清除 1 var show = document.getElementById("show"); 2 var pic = show.getElementsByTagName('img'); 3 var timer; 4 var start_index

告别组件之教你使用原生js和css写移动端轮播图

在工作中由于项目需要要写一个轮播图,本想使用组件直接调用实现快速开发,但是一想到自己经常使用组件但是让自己手写的话确实一点都不会. 一个不会手写组件的前端程序员不是一个好程序员!于是打算自己手写一个. 老规矩,首先看一下最终效果,这个最终可以实现定时自动播放,触摸滑动,手动修改下面横条效果等功能. 项目中使用到的HTML代码如下 <div class="banner"> <ul class="clearfix"> <li><

Html5添加Tabs样式单页多图轮播图插件教程

一.HTML结构 <div id="slideBox"> <div class="J_slide"> <!-- 轮播图 --> <div class="J_slide_clip"> <ul class="J_slide_list"> <li class="J_slide_item"> <a href="javascrip

未学习JS也可以通过bootstrap做出轮播图的实际应用

由于本人新手 还没学JS 我是用bootstrap来做的 很简单 直接把那坨代码复制到 webstorm里面 下面我会用我的某一次作业 来做实际解释里面的某部分各代表什么意思 (由于这个代码到底什么意思 老师没有教过 我自行理解 有错的地方 望海涵)“男友秋装上新”这个地方 就是个轮播 一共3个小点 也就是三张图 可通过左右的箭头 左右翻动 接下来 奉上源代码:并在代码后给各部分做出解释 <div class="col-md-9 lunbo"> <div id=&qu

焦点图轮播图原理与机制

技能点:DOM操作.定时器.事件运用.JS动画.函数递归.无限滚动大法 焦点图排序(无限滚动大法):image5image1image2image3image4image5image1 原理:1. 假设共有5张图,5张图左浮动排列,2. 并且都被一个list容器包裹,这个list是很长的,然后list被一个div包裹,3. div的长度只有一张图的大小那么大,并且设置div的属性为 overflow:hidden4. div设置为relative,list设置为absolute5. 改变list

每天一个JS 小demo之韩雪冬轮播图。主要知识点:html,css布局,对于数组和对象的理解和运用

1 @charset "utf-8"; 2 /* CSS Document */ 3 4 * { padding: 0; margin: 0; } 5 li { list-style: none; } 6 img { border: none; } 7 body { background: #ececec; padding-top: 50px; } 8 9 #automatic { width: 970px; height: 344px; position: relative; mar

用 js封装以左右滑动的轮播图,调用任意

<!DOCTYPE html><html><head> <meta charset="utf-8"> <title></title> <style> .tab{ width: 500px; height: 300px; margin: 0 auto; background: yellow; position: relative; overflow: hidden; } *{ margin: 0; pad

JS纯生实现无缝滚动轮播图

1.定时器加上以后需要进入一次才能引用,所以在上面提前调用一次定时器: 2.当在实现下标小按钮的时候一定要给第三部的num赋值: 3.切记谁做动画谁加定位

js实现图片轮播图(一)

一.实现原理 (1)将所有图片放在一个父容器div里面,通过display属性来设置图片的出现与隐藏: (2)轮播图分为手动轮播和自动轮播: 手动轮播的重点是每次点击图片下方的小圆圈,获得它的索引号,并让与之对应索引号的图片显示,并且此时的小圆圈为高亮显示: 自动轮播:利用定时器setInterval(),来每隔一定的时间来播放一次图片. (3)所有的基础知识:dom操作,定时器,事件运用. 二.轮播图页面布局: <div id="content">   <!-- 总

C3属性的轮播图(持续更新)

天气好冷,都不想写代码.就先写个没有焦点的轮播图,过两天在补全. 用的是CSS3的属性 过渡transition 和 转换 transfrom:translateX() 只做了轮播和 鼠标进入停止轮播,离开继续轮播这几项. <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <style> .banner{ width: 960px;