`

基于jQuery的控制左右滚动及自动滚动效果

 
阅读更多

迷上jQuery,相对于原生JavaScript,它是如此的美妙.也因此,促使我更加的努力的研习原生JavaScript.
分享一个控制左右滚动及自动滚动的样例, 昨晚花了两个多小时, 忍受着悍蚊的叮咬, 汗水的侵袭, 一行行的敲出来的血汗代码. 哈哈.
封装了两种模式: 点击滚动版本DEMO 自动滚动版本DEMO ,源码中有详细注释.
思路:
点击滚动模式 下,是为点击(向前/向后/数字)添加click 事件,通过控制展示区块left 值实现切换.
1.向前(左):当在第一个版面时,滚动到最后一个页面,否则,累加left 值,向前滚动;
2.向后(右):当在最后一个版面时,滚动到第一个页面,否则,累减left 值,向后滚动;
3.数字点击:利用index(…) 获取当前点击在数字列表中的索引值, 然后索引值为倍数为外围宽度负值.即可达到切换.
核心代码:

//@Mr.Think***向前滚动
    $
pre . click ( function (){
        
if ( !$ showbox . is ( ' :animated ' )) {   //判断展示区是否动画
            
if ( $ cur == 1 ) {     //在第一个版面时,再向前滚动到最后一个版面
                $
showbox . animate ({
                    
left : ' -= ' + $ w * ( $ pages - 1 )
                
} , 500 ) ; //改变left值,切换显示版面,500(ms)为滚动时间,下同
                $
cur = $ pages ; //初始化版面为最后一个版面
            
}
            
else {
                $
showbox . animate ({
                    
left : ' += ' + $ w
                
} , 500 ) ; //改变left值,切换显示版面
                $
cur --; //版面累减
            
}
            $
num . eq ( $ cur - 1 ) . addClass ( ' numcur ' ) . siblings () . removeClass ( ' numcur ' ) ; //为对应的版面数字加上高亮样式,并移除同级元素的高亮样式
        
}
    
}) ;
    
//@Mr.Think***向后滚动
    $
next . click ( function (){
        
if ( !$ showbox . is ( ' :animated ' )) { //判断展示区是否动画
            
if ( $ cur == $ pages ) {   //在最后一个版面时,再向后滚动到第一个版面
                $
showbox . animate ({
                    
left : 0
                
} , 500 ) ; //改变left值,切换显示版面,500(ms)为滚动时间,下同
                $
cur = 1 ; //初始化版面为第一个版面
            
}
            
else {
                $
showbox . animate ({
                    
left : ' -= ' + $ w
                
} , 500 ) ; //改变left值,切换显示版面
                $
cur ++; //版面数累加
            
}
            $
num . eq ( $ cur - 1 ) . addClass ( ' numcur ' ) . siblings () . removeClass ( ' numcur ' ) ; //为对应的版面数字加上高亮样式,并移除同级元素的高亮样式
        
}
    
}) ;
    
//@Mr.Think***数字点击事件
    $
num . click ( function (){
        
if ( !$ showbox . is ( ' :animated ' )) { //判断展示区是否动画
            
var $ index = $ num . index ( this ) ; //索引出当前点击在列表中的位置值
            $
showbox . animate ({
                
left : ' - ' + ( $ w * $ index )
            
} , 500 ) ; //改变left值,切换显示版面,500(ms)为滚动时间
            $
cur = $ index + 1 ; //初始化版面值,这一句可避免当滚动到第三版时,点击向后按钮,出面空白版.index()取值是从0开始的,故加1
            $
( this ) . addClass ( ' numcur ' ) . siblings () . removeClass ( ' numcur ' ) ; //为当前点击加上高亮样式,并移除同级元素的高亮样式
        
}
    
}) ;

自动滚动模式 是基于点击滚动模式加强的,无非是添加了自动滚动事件,以及当鼠标划上时清除动画事件.
这里要说明一点.DEMO演示中,为向前/向后/数字/区域都添加了当鼠标划过时都添加了清除动画事件.但是,如果你的页面中,这几个需要添加清除动画事件的都在同一个区域内,完全可以用trigger(…) 模拟实现自动滚动.
还有一点,自动滚动中是用setTimeout(“fun”,interval) 实现,而不用setInterval(“fun”,interval) 实现. 原因在于,setInterval 是在间隔时间后重复执行传入的函数,而setTimeout 只在间隔时间后执行一次函数传入函数,这样即可避免第二次鼠标划入停止动画区域时不能清除动画.
核心代码:

......
  
//@Mr.Think***调用自动滚动
  
autoSlide () ;
   ......
    
//@Mr.Think***停止滚动
    
clearFun ( $ showbox ) ;
    
clearFun ( $ pre ) ;
    
clearFun ( $ next ) ;
    
clearFun ( $ num ) ;
    
//@Mr.Think***事件划入时停止自动滚动
    
function clearFun ( elem ){
        
elem . hover ( function (){
            
clearAuto () ;
        
} , function (){
            
autoSlide () ;
        
}) ;
    
}
    
//@Mr.Think***自动滚动
    
function autoSlide (){
        $
next . trigger ( ' click ' ) ;
        $
autoFun = setTimeout ( autoSlide , 3000 ) ; //此处不可使用setInterval,setInterval是重复执行传入函数,这会引起第二次划入时停止失效
    
}
    
//@Mr.Think***清除自动滚动
    
function clearAuto (){
        
clearTimeout ( $ autoFun ) ;
    
}

更详细代码分析,请查看源码,写有详细的注释.

 

原文发表于Mr.Think的博客:http://mrthink.net/jquery-clickslide-autoslide-showimg/ 转载请注明

分享到:
评论

相关推荐

    jQuery图片左右滚动效果代码.zip

    在本文中,我们将深入探讨如何实现一个基于jQuery的图片左右滚动效果,这通常用于网站的轮播图或幻灯片展示。这个效果包含了左右箭头,可以手动切换,同时具备自动轮播的功能,大大增强了用户体验。 首先,我们需要...

    基于Jquery图片点击上下滚动效果

    总的来说,"基于Jquery图片点击上下滚动效果"是网页动态效果的一个基础示例,它结合了HTML布局、jQuery选择器、事件处理和动画效果,展示了如何通过JavaScript和jQuery来增强网页的交互性。通过不断学习和实践,...

    基于jQuery的可以控制左右滚动及自动滚动效果的代码

    标题中的“基于jQuery的可以控制左右滚动及自动滚动效果的代码”是指利用jQuery库来实现一个功能,允许用户控制内容的左右滚动,并且具备自动滚动的功能。这种效果常见于展示多份内容的场景,比如幻灯片或者产品展示...

    jQuery图文左右滚动代码.zip

    "jQuery图文左右滚动代码.zip" 是一个基于jQuery和Owl Carousel插件的实现,用于创建类似百度百科首页焦点图的滚动效果。这个功能丰富的代码包可以帮助开发者轻松地在网站上实现图文信息的平滑左右滚动,同时支持...

    基于jQuery的图片左右无缝滚动插件

    **基于jQuery的图片左右无缝滚动插件** 在网页设计中,动态展示图片是常见的需求,而图片无缝滚动则能提供一种优雅的展示方式,增强用户体验。"基于jQuery的图片左右无缝滚动插件"就是用于实现这种效果的工具,它...

    jquery图片放大滚动

    jQuery的`.animate()`方法可以用于平滑移动元素,配合计算当前图片的位置和目标位置,实现平滑的左右滚动效果。 **6. 按钮焦点与事件绑定** 在图片滚动到最后一张时,通常需要改变按钮的状态,如使其失去焦点。...

    jQuery基于SliderJS实现的左右滚动自动轮播焦点图插件源码.zip

    SliderJS是一款基于jQuery的滑动轮播插件,它支持左右滚动、自动轮播等特性,适用于网站头部、产品展示等多个场景。 1. **jQuery基础** jQuery简化了JavaScript的DOM操作,如选择元素、事件处理、动画效果等。在...

    基于jQuery实现滚动切换效果

    基于jQuery实现滚动切换效果的知识点主要包括了以下几个方面: 1. jQuery的基本概念:jQuery是一个快速、简洁的JavaScript库,它通过简化HTML文档遍历和事件处理、动画和Ajax交互,极大地简化了JavaScript编程。在...

    基于jQuery的大幻灯片左右滚动切换效果.zip

    【标题】"基于jQuery的大幻灯片左右滚动切换效果.zip" 涉及的主要知识点是使用JavaScript库jQuery来实现一个动态的、具有左右滚动切换功能的大幻灯片效果。jQuery是一个广泛使用的JavaScript库,它简化了HTML文档...

    myslideLeftRight 基于jQuery图片左右无缝滚动插件.zip

    【myslideLeftRight基于jQuery图片左右无缝滚动插件】是一个常用的前端开发工具,它通过结合JavaScript库jQuery实现图片的平滑、连续且无间隙的左右滚动效果,为网站的展示和用户体验提供了极大的便利。该插件广泛...

    jquery实现自动滚动

    ### 使用jQuery实现自动滚动效果 在现代Web开发中,动态元素和交互式用户界面变得越来越重要。其中之一就是自动滚动效果,这种效果常用于新闻站点、博客或者电子商务网站中展示最新的文章或产品信息。本文将详细...

    基于jQuery的实现自定义可以自动滚动的下拉列表的功能代码.zip

    然而,为了实现自定义的自动滚动效果,我们通常会用HTML的`<ul>`或`<ol>`元素配合CSS来模拟一个下拉列表,因为这样可以拥有更多的控制权。 1. **DOM操作**:jQuery提供了一系列的方法来操作DOM元素,如`$(selector)...

    jQuery图片左右滚动效果代码

    "jQuery图片左右滚动效果代码"是一个基于jQuery实现的动态图片展示方案,旨在为用户提供一个具有左右箭头控制和鼠标悬停功能的自动轮播图片的功能。这种效果能够使网站或应用更具吸引力,提升用户体验。 首先,我们...

    超炫的jquery图片上下滚动效果

    图片上下滚动效果通常基于定时器和元素的CSS位置改变来实现。通过设置定时器,每隔一定时间调整图片的位置,模拟出图片的滚动感。jQuery提供了一系列方便的动画方法,如`animate()`,使得这一过程更加简单。 三、...

    基于jquery实现点击左右按钮图片横向滚动

    总结一下,这个基于jQuery的图片横向滚动实现主要依赖于以下几个关键点: 1. 使用jQuery选择器和DOM操作来获取和修改元素。 2. 利用CSS定位和动画效果来实现平滑的图片滚动。 3. 通过事件监听器处理用户交互,触发...

Global site tag (gtag.js) - Google Analytics