


Detailed explanation of jQuery plug-in windowScroll usage code examples
What I want to share with you is a special effect implemented using the jQuery plug-in windowScroll
HTML
<!doctype html> <html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta content="" name="keywords" /> <meta content="" name="description" /> <meta name="author" content="codetker" /> <head> <title>window对象滚动插件</title> <link href="style/reset.css" rel="stylesheet" type="text/css"> <link href="style/style.css" rel="stylesheet" type="text/css"> <script type="text/javascript" src="js/jquery-1.9.1.min.js"></script> <script type="text/javascript" src="js/jquery.codetker.windowScroll.js"></script> </head> <body scroll="no"> <p class="wrap" style="dispaly:block;"> <p class="stageControl"> <ul> <li>stage1</li> <li>stage2</li> <li>stage3</li> <li>stage4</li> <li>stage5</li> </ul> </p> <p class="stage stage1"> <p class="pageControl"> <ul> <li>page1</li> <li>page2</li> <li>page3</li> </ul> </p> <p class="page page1"></p> <p class="page page2"></p> <p class="page page3"></p> </p> <p class="stage stage2"></p> <p class="stage stage3"></p> <p class="stage stage4"></p> <p class="stage stage5"></p> </p> <script type="text/javascript"> $(document).ready(function(){ $(".wrap").windowScroll({ 'choose' : 0, 'verticalSpeed' : 2, //控制垂直滚动速度 'horizontalSpeed' : 1, 'objControlUl': '.wrap .stageControl' }); $(".stage1").windowScroll({ 'choose': 1, 'verticalSpeed' : 1, 'horizontalSpeed' : 1,//控制水平滚动速度 'objControlUl': '.stage1 .pageControl' }); }); </script> </body> </html>
CSS
@charset "utf-8"; /* CSS Document */ body{ margin:0 0; padding:0 0; height:100%; width:100%; overflow: hidden;; } .wrap{ font-family:"微软雅黑","宋体", Times, "Times New Roman", serif; font-size:14px; margin:0 0; padding:0 0; height:100%; width:100%; overflow:hidden; } .stage,.page{ width: 100%; height: 100%; } .stage1{ background-color:red; } .stage2{ background-color:#fff; } .stage3{ background-color:yellow; } .stage4{ background-color:green; } .stage5{ background-color:blue; } .page{ float: left; } .page2{ background-color: #666; } .page3{ background-color: #ddd; } .stageControl{ position: fixed; } .stageControl ul li{ width: 100px; height: 30px; line-height: 30px; text-align: center; cursor: pointer; } .stageControl ul li:hover{ color: blue; } .pageControl{ position: fixed; left: 200px; } .pageControl ul li{ float: left; width: 50px; height: 25px; line-height: 25px; text-align: center; cursor: pointer; } .pageControl ul li:hover{ color: blue; }
JavaScript
/* * windowScroll 0.1 * window滚动插件,上下左右,可选择是否回弹。参考搜狗欢迎页面 * 兼容IE,FF,Chrome等常见浏览器 */ ;(function($,window,document,undefined){ //定义构造函数 var WindowObj=function(ele,opt){ this.$element=ele; //最外层对象 this.defaults={ 'choose' : 0,//默认为上下 'verticalSpeed' : 1, 'horizontalSpeed' : 1, 'objControlUl': null }, this.options=$.extend({},this.defaults,opt ); //阻止默认行为和冒泡,这里可以定义多个方法都要用到的函数 this.stopDefaultAndBubble=function(e){ e=e||window.event; if (e.preventDefault) { e.preventDefault(); } e.returnValue=false; if (e.stopPropagation) { e.stopPropagation(); } e.cancelBubble=true; } this.setSize=function(ele){ $(ele).css({ 'width':$(window).outerWidth()+'px' }); //自动判断元素是否存在,对undefined赋css属性无意义 $(ele).children('.stage').css({ 'width':$(window).outerWidth()+'px', 'height':$(window).outerHeight()+'px' }); $(ele).children('.page').css({ 'width':$(window).outerWidth()+'px', 'height':$(window).outerHeight()+'px' }); } } //给构造函数添加方法 WindowObj.prototype={ //上下滚动的方法 verticalMove:function(){ var obj=this.$element; //最外层对象 var speed=this.options.verticalSpeed; var objControl=this.options.objControlUl;//控制按钮 var windowHeight=$(window).height(); var list=$(obj).children('.stage'); var listMax=$(list).length; var is_chrome=navigator.userAgent.toLowerCase().indexOf('chrome')>-1; if(is_chrome){ //判断webkit内核,供scrollTop兼容性使用 windowobject='body'; }else{ //支持IE和FF windowobject='html'; } var stop=0; //均设置为windows大小 this.setSize(obj); //得到当前的垂直位置 var stageIndex; function getIndex(){ stageIndex=Math.round($(window).scrollTop()/windowHeight); } //绑定键盘上下按键事件 $(document).keydown(function(event) { /* 绑定keycode38,即向上按钮 */ if (event.keyCode==38) { getIndex(); setTimeout(function(){ scrollStage(windowobject,stageIndex,1); //stageIndex为当前页码 },100); }else if (event.keyCode==40) {//绑定40,即向下按钮 getIndex(); setTimeout(function(){ scrollStage(windowobject,stageIndex,-1); //stageIndex为当前页码 },100); } }); //绑定滑轮功能的函数 function handle(delta){ getIndex(); if (delta<0) { setTimeout(function(){ scrollStage(windowobject,stageIndex,-1); //stageIndex为当前页码 },100); }else{ setTimeout(function(){ scrollStage(windowobject,stageIndex,1); //stageIndex为当前页码 },100); } } //判断滑轮,解决兼容性 function wheel(event){ var delta = 0; if (!event) event = window.event; if (event.wheelDelta) { delta = event.wheelDelta; if (window.opera) delta = -delta; } else if (event.detail) { delta = -event.detail; } if (delta) handle(delta); //调用执行函数 } //注册事件 if (window.addEventListener) { window.addEventListener('DOMMouseScroll', wheel, false); } window.onmousewheel = document.onmousewheel = wheel; //绑定鼠标滚轮事件 $(document).bind('mousedown', function(event) { if (e.which==2) {//which=2代表鼠标滚轮,即为中键 this.stopDefaultAndBubble(e); //bugfix 搜狗浏览器的ie内核只有在定时器触发这个函数才生效 setTimeout(function(){ this.stopDefaultAndBubble(e); },10); } }); //如果有ul li控制按钮 if (objControl!=null) { $(objControl).delegate('li', 'click', function() { stageIndex=$(this).index(); setTimeout(function(){ scrollStage(windowobject,stageIndex,0); },100); }); } function scrollStage(obj,stIndex,dir){//如果用scrollStage=function来指定的话没有声明提前,然后就会找不到这个函数了 //obj为操作滚动的对象 //stIndex为点击调用时应该滚动到的页面页码,按键和滚轮调用时默认为1(传入0) //dir传入滚动时的方向,0代表不滚动,1代表向上,-1代表向下 var sIndex=stIndex;//!(dir)则stageIndex为要到的页码,否则为当前页码 var windowobject=obj; var direction=0||dir; //接收参数封装,没有传入时暂时认为为0 var target=windowHeight*sIndex; //目标页面距离文档顶部距离 if ( !$(windowobject).is(':animated') ) {//当没有在滚动时 if(!direction){ ////响应guider,此时stageIndex为目标页面页码 if ($(window).scrollTop() > target) { //内容下移,窗口上移,上方出现弹痕 direction=-1; $(windowobject).animate({ "scrollTop": target +"px" },1000*speed,function(){ crash_bottom(1,target,20,150); //调用撞击函数,先撞顶部,target变成当前页面了 }); }else if($(window).scrollTop() == windowHeight*sIndex){ //当前页面时 direction=0; crash_bottom(1, target ,20,150); //模拟撞底部 }else{ direction=1; $(windowobject).animate({ "scrollTop": target +"px" },1000*speed,function(){ crash(1,target,20,150); //调用撞击函数,先撞底部 }); } }else{//响应鼠标滚轮和键盘上下,sindex为当前页面 if(direction==1){ if(sIndex==0){ crash(1,target,20,150); }else{ //往上翻 sIndex-=1; $(windowobject).animate({ "scrollTop":windowHeight*sIndex+"px" },1000*speed,function(){ crash_bottom(1,windowHeight*sIndex,20,150); //调用撞击函数,往下翻内容往上,先撞顶部 } ); } }else{ if(sIndex==listMax){ crash_bottom(1,target,20,150); }else{ //往下翻 sIndex+=1; $(windowobject).animate({ "scrollTop":windowHeight*sIndex+"px" },1000*speed,function(){ crash(1,windowHeight*sIndex,20,150); //调用撞击函数,往上翻内容往下,先撞底部 }); } } } } } //撞击函数 function crash_bottom(direction,termin,distant,time){ if (!stop) { var scrollTop=$(window).scrollTop(); if (direction==1) { direction=0; $(windowobject).animate({"scrollTop":"+="+distant+"px"},time,function(){ crash_bottom(direction,termin,distant*0.6,time); if (distant<=15||time>150) { stop=1;//停止碰撞 $(windowobject).animate({"scrollTop":termin+"px"},time,function(){ stop=0; }); } }); }else if (direction==0) { direction=1; $(windowobject).animate({"scrollTop":termin+"px"},time,function(){ crash_bottom(direction,termin,distant*0.6,time); if (distant<=15||time>150) { stop=1;//停止碰撞 $(windowobject).animate({"scrollTop":termin+"px"},time,function(){ stop=0; }); } }); } } } function crash(direction,termin,distant,time){ if (!stop) { var scrollTop=$(window).scrollTop(); if (direction==1) { direction=0; $(windowobject).animate({"scrollTop":"-="+distant+"px"},time,function(){ crash(direction,termin,distant*0.6,time); if (distant<=15||time>150) { stop=1;//停止碰撞 $(windowobject).animate({"scrollTop":termin+"px"},time,function(){ stop=0; }); } }); }else if (direction==0) { direction=1; $(windowobject).animate({"scrollTop":termin+"px"},time,function(){ crash(direction,termin,distant*0.6,time); if (distant<=15||time>150) { stop=1;//停止碰撞 $(windowobject).animate({"scrollTop":termin+"px"},time,function(){ stop=0; }); } }); } } } }, //左右滚动的方法 horizontalMove:function(){ var obj=this.$element; //最外层对象 var speed=this.options.horizontalSpeed; var objControl=this.options.objControlUl;//控制按钮 var windowWidth=$(window).width(); var list=$(obj).children('.page'); var listMax=$(list).length; var is_chrome=navigator.userAgent.toLowerCase().indexOf('chrome')>-1; if(is_chrome){ //判断webkit内核,供scrollTop兼容性使用 windowobject='body'; }else{ //支持IE和FF windowobject='html'; } var stop=0; //均设置为windows大小 this.setSize(obj); $(obj).css({'width':windowWidth*listMax+'px'}); var pageIndex; //当前页面页码(负数) function getPageIndex(){ pageIndex=Math.round(parseInt($(obj).css("margin-left")) / windowWidth); } //绑定键盘左右按键事件 $(document).keydown(function(event){ //判断event.keyCode为39(即向右按钮) if (event.keyCode==39) { getPageIndex(); scrollPage($(obj),pageIndex,-1); } //判断event.keyCode为37(即向左按钮 else if (event.keyCode==37) { getPageIndex(); scrollPage($(obj),pageIndex,1); } }); //如果有ul li控制按钮 if (objControl!=null) { $(objControl).delegate('li', 'click', function() { pageIndex=$(this).index(); setTimeout(function(){ scrollPage(obj,pageIndex,0); },100); }); } function scrollPage(obje,pIndex,dir){ var windowobject=obje; var direction=0||dir; var pageIndex=pIndex; var dist=Math.round(parseInt($(obj).css("margin-left"))); //当前页距离左边的margin(负值) var aim=pageIndex*windowWidth*(-1); if (!$(windowobject).is(":animated")) { if(!direction){ //响应nav if (dist != aim) { //此时pageIndex为yearID.非负值 $(windowobject).animate({"margin-left": aim + "px"}, 1000*speed); }else{ direction=0; $(windowobject).animate({"margin-left":"+="+"50px"},500).animate({"margin-left":"-="+"100px"},500).animate({"margin-left":"+="+"50px"},500); } }else{ //响应键盘左右键 if(direction==1){ //pageIndex为负值 if(pageIndex==0){ $(windowobject).animate({"margin-left":"+="+"50px"},500).animate({"margin-left":"-="+"100px"},500).animate({"margin-left":"+="+"50px"},500); }else{ pageIndex+=1; //显示左边内容,左键 $(windowobject).animate({"margin-left":"+=" + windowWidth + "px"}, 1000*speed); } }else{ if(pageIndex== ((-1)*(listMax-1))){ $(windowobject).animate({"margin-left":"-="+"50px"},500).animate({"margin-left":"+="+"100px"},500).animate({"margin-left":"-="+"50px"},500); }else{ pageIndex-=1; $(windowobject).animate({"margin-left":"-=" + windowWidth + "px"}, 1000*speed); } } } } } } } //在插件中使用windowObj对象的方法,0为vertical,1为horizontal $.fn.windowScroll=function(options){ //创建实体 var windowObj=new WindowObj(this,options); //根据选择调用方法 if (windowObj.options.choose==0) { return windowObj.verticalMove(); }else if(windowObj.options.choose==1){ return windowObj.horizontalMove(); }else{//2之后的留扩展吧 //add some functions } } })(jQuery,window,document);
The above is the detailed content of Detailed explanation of jQuery plug-in windowScroll usage code examples. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











If you need to program any device remotely, this article will help you. We will share the top GE universal remote codes for programming any device. What is a GE remote control? GEUniversalRemote is a remote control that can be used to control multiple devices such as smart TVs, LG, Vizio, Sony, Blu-ray, DVD, DVR, Roku, AppleTV, streaming media players and more. GEUniversal remote controls come in various models with different features and functions. GEUniversalRemote can control up to four devices. Top Universal Remote Codes to Program on Any Device GE remotes come with a set of codes that allow them to work with different devices. you may

As a programmer, I get excited about tools that simplify the coding experience. With the help of artificial intelligence tools, we can generate demo code and make necessary modifications as per the requirement. The newly introduced Copilot tool in Visual Studio Code allows us to create AI-generated code with natural language chat interactions. By explaining functionality, we can better understand the meaning of existing code. How to use Copilot to generate code? To get started, we first need to get the latest PowerPlatformTools extension. To achieve this, you need to go to the extension page, search for "PowerPlatformTool" and click the Install button

How to use PUT request method in jQuery? In jQuery, the method of sending a PUT request is similar to sending other types of requests, but you need to pay attention to some details and parameter settings. PUT requests are typically used to update resources, such as updating data in a database or updating files on the server. The following is a specific code example using the PUT request method in jQuery. First, make sure you include the jQuery library file, then you can send a PUT request via: $.ajax({u

Title: jQuery Tips: Quickly modify the text of all a tags on the page In web development, we often need to modify and operate elements on the page. When using jQuery, sometimes you need to modify the text content of all a tags in the page at once, which can save time and energy. The following will introduce how to use jQuery to quickly modify the text of all a tags on the page, and give specific code examples. First, we need to introduce the jQuery library file and ensure that the following code is introduced into the page: <

Working with files in the Linux operating system requires the use of various commands and techniques that enable developers to efficiently create and execute files, code, programs, scripts, and other things. In the Linux environment, files with the extension ".a" have great importance as static libraries. These libraries play an important role in software development, allowing developers to efficiently manage and share common functionality across multiple programs. For effective software development in a Linux environment, it is crucial to understand how to create and run ".a" files. This article will introduce how to comprehensively install and configure the Linux ".a" file. Let's explore the definition, purpose, structure, and methods of creating and executing the Linux ".a" file. What is L

Title: Use jQuery to modify the text content of all a tags. jQuery is a popular JavaScript library that is widely used to handle DOM operations. In web development, we often encounter the need to modify the text content of the link tag (a tag) on the page. This article will explain how to use jQuery to achieve this goal, and provide specific code examples. First, we need to introduce the jQuery library into the page. Add the following code in the HTML file:

Since the launch of ChatGLM-6B on March 14, 2023, the GLM series models have received widespread attention and recognition. Especially after ChatGLM3-6B was open sourced, developers are full of expectations for the fourth-generation model launched by Zhipu AI. This expectation has finally been fully satisfied with the release of GLM-4-9B. The birth of GLM-4-9B In order to give small models (10B and below) more powerful capabilities, the GLM technical team launched this new fourth-generation GLM series open source model: GLM-4-9B after nearly half a year of exploration. This model greatly compresses the model size while ensuring accuracy, and has faster inference speed and higher efficiency. The GLM technical team’s exploration has not

jQuery is a popular JavaScript library that is widely used to handle DOM manipulation and event handling in web pages. In jQuery, the eq() method is used to select elements at a specified index position. The specific usage and application scenarios are as follows. In jQuery, the eq() method selects the element at a specified index position. Index positions start counting from 0, i.e. the index of the first element is 0, the index of the second element is 1, and so on. The syntax of the eq() method is as follows: $("s
