jquery hwSlider响应式可触控滑动效果例子

今天我们继续内容滑动切换效果的第二部分讲解。如今我们的web开发都要适应移动设备,就是说我们的web页面要在移动设备如手机端也能正常访问,所以我将第一部分的基本切换效果做了加强,增加了响应式和触控滑动效果。

本文是hwSlider-内容滑动切换效果的第二部分,演示DEMO都是基于第一部分内容的基础上的,所以,如果您还没阅读过第一部分的话,请先移步参阅:hwSlider-内容滑动切换效果(一)
响应式

什么是响应式设计,这里我就不描述了。在hwSlider中,我们通过CSS来设置滑块的宽度和高度,设置了百分比的宽度。

 代码如下 复制代码

#hwslider{width: 100%;height:auto;min-height: 120px;margin:40px auto; position: relative; overflow: hidden;}
#hwslider ul{width: 100%; height:100%; position: absolute; z-index: 1}
#hwslider ul li{display:none;position:absolute; left:0; top:0; width: 100%;height:100%; overflow: hidden;}
#hwslider ul li.active{display: block;}
#hwslider ul li img{max-width: 100%}
#dots{position: absolute; bottom:20px; left:200px; min-width:60px; height: 12px; z-index: 2;}
#dots span{float: left; width:12px;height: 12px; border: 1px solid #fff; border-radius: 50%; background: #333; margin-right: 8px; cursor: pointer;}
#dots span.active{background:orangered}
.arr{display:none;position: absolute; top: 140px; z-index: 2;width: 40px; height: 40px; line-height: 38px; text-align: center;; font-size: 36px; background: rgba(0,0,0,.3); color: #fff; text-decoration: none}
.arr:hover{background: rgba(0,0,0,.7); text-decoration: none;}
#hwslider:hover .arr{display: block; text-decoration: none;color: #fff}
#prev{left: 20px}
#next{right: 20px}

接下来,我们在js部分开始部分定义变量,在初始化resize()函数中,我们计算并定位导航圆点和导航箭头的位置,并且在浏览器窗口大小调整的时候也调用resize()。

 代码如下 复制代码

$(function(){
    var slider = $("#hwslider");
    var dots = $("#dots span"),
        prev = $("#prev"),next = $("#next");
    var sliderInder = slider.children('ul')
    var hwsliderLi = sliderInder.children('li');
    var hwsliderSize = hwsliderLi.length;  //滑块的总个数
    var sliderWidth = 600; //滑块初始宽度
    var sliderHeight = 320; //滑块初始高度
    var index = 1; //初始显示第一个滑块
    var speed = 400; //滑动速度
    var interval = 3000; //间隔时间
    var dotShow = true; //是否显示可切换的导航圆点
    var autoPlay = false; //是否支持自动滑动
    var clickable = true; //是否已经点击了滑块在做滑动动画
 
    
 
    //初始化组件
    var resize = function(){
        var sWidth = slider.width();
        var dotWidth = hwsliderSize*20;
        var dotOffset = (sWidth-dotWidth)/2;
 
        var sHeight = sliderHeight/sliderWidth*sWidth;
        slider.css('height',sHeight); 
        $("#dots").css('left',dotOffset+'px'); //导航圆点位置
 
        var arrOffset = (sHeight-40)/2;
        $(".arr").css('top',arrOffset+'px'); //导航箭头位置
    }
 
    resize();
 
    $(window).resize(function(){
      resize();
    });
 
});

移动端触屏滑动

在移动设备上,我们可以轻触屏幕,并使用手势滑动来切换滑块。要实现这种效果,需要用到核心的touch事件。处理touch事件能跟踪到屏幕滑动的每根手指。
以下是四种touch事件:
touchstart: 手指放到屏幕上时触发
touchmove: 手指在屏幕上滑动式触发
touchend: 手指离开屏幕时触发
touchcancel: 系统取消touch事件的时候触发,这个好像比较少用

好,现在我们需要在滑块上绑定侦听touch触控事件,在touchstart和touchend时分别获取手指在屏幕滑块上的位置,然后根据位移判断是左滑还是右滑,然后调用moveTo()实现滑动切换。

 代码如下 复制代码
var mouseX = 0,
    touchStartY = 0,
    touchStartX = 0;
 
 
    hwsliderLi.on({
        //触控开始
        'touchstart': function(e) {
            touchStartY = e.originalEvent.touches[0].clientY;
            touchStartX = e.originalEvent.touches[0].clientX;
        },
 
        //触控结束
        'touchend': function(e) {
            var touchEndY = e.originalEvent.changedTouches[0].clientY,
                touchEndX = e.originalEvent.changedTouches[0].clientX,
                yDiff = touchStartY - touchEndY,
                xDiff = touchStartX - touchEndX;
 
            if ( Math.abs( xDiff ) > Math.abs( yDiff ) ) {
                if ( xDiff > 5 ) {
                    if(index >= hwsliderSize){
                        index = 1;
                    }else{
                        index += 1;
                    }
                    moveTo(index,'next');
                } else {
                    if(index == 1){
                        index = hwsliderSize;
                    }else{
                        index -= 1;
                    }
                    moveTo(index,'prev');
                }                       
            }
            touchStartY = null;
            touchStartX = null;
        },
 
        //触控移动
        'touchmove': function(e) {
            if(e.preventDefault) { e.preventDefault(); }
 
        }
    });

再加上上一篇文章中的基本滑块js代码就能实现一个响应式的可触控滑动的内容滑动效果。
如果要在PC上实现拖动滑动的话,需要绑定滑块的onmousedown,onmousemove以及onmouseup事件,实现鼠标按住拖动滑块实现滑动切换,主要代码这里就不贴出来了,大家可以下载源代码中查看。

时间: 2024-10-24 01:22:10

jquery hwSlider响应式可触控滑动效果例子的相关文章

jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)_jquery

今天我们继续内容滑动切换效果的第二部分讲解.如今我们的web开发都要适应移动设备,就是说我们的web页面要在移动设备如手机端也能正常访问,所以我将第一部分的基本切换效果做了加强,增加了响应式和触控滑动效果. 效果展示     源码下载 本文是hwSlider-内容滑动切换效果的第二部分,演示DEMO都是基于第一部分内容的基础上的,所以,如果您还没阅读过第一部分的话,请先移步参阅:基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一) 响应式 什么是响应式设计,这里我就不描述了

HTML5响应式可触控的音频播放器实现例子

HTML5的audio提供了音频播放功能,但是原生的播放器样式不怎么好看,而且各浏览器对audio的外观展现不统一.我们可以对audio稍微包装下,便可实现一个响应式的可触控的漂亮的播放器. HTML   <audio preload="auto" controls autoplay>     <source src="audio.wav" />     <source src="audio.mp3" />  

jQuery实现响应鼠标滚动的动感菜单效果_jquery

本文实例讲述了jQuery实现响应鼠标滚动的动感菜单效果.分享给大家供大家参考.具体如下: 这是响应鼠标滚动的一款jQuery动感菜单,横向竖向这个大家怎么改吧,使用了jquery插件,不要忘记载入哦.看效果的时候如果加载有错误,请刷新一下页面就行了. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-mouse-over-dg-menu-style-codes/ 具体代码如下: <!DOCTYPE html PUBLIC "-

jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】_jquery

本文实例讲述了jQuery实现响应鼠标事件的图片透明效果.分享给大家供大家参考,具体如下: 实现的思想: 1.当鼠标放在图片上面的时候触发mouseover mouseenter两个事件(图片变得透明) 2.当鼠标离开图片的时候触发mouseleave mouseout两个事件(图片变为不透明) 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or

jquery左右全屏大尺寸多图滑动效果代码分享_jquery

本文实例讲述了jquery左右全屏大尺寸多图滑动效果.分享给大家供大家参考.具体如下: 这是一款基于jquery实现的banner焦点图播放效果的插件,图片播放时处于满屏的状态,很具有画面感,呈现的效果更佳充实,用户的视觉体验更加具体,是一款很时尚大方的特效代码. 运行效果图:                                        -------------------查看效果 下载源码------------------- 小提示:浏览器中如果不能正常运行,可以尝试切换

Android view随触碰滑动效果

主要思路是通过父布局的onTouch(),方法,获取滑动到的位置和点击下的位置,再去设置子view的位置.我的代码中考虑了在边缘情况.需要注意的是,使用RelativeLayout,以imageView为例.从测试结果来看,bottomMargin 和rightMargin 性能非常差,最好还是用leftMargin与topMargin定位. 下面是运行效果: 布局文件里面就是一个Relativelayout中有一个ImageView.如下 <?xml version="1.0"

响应式web设计实现图片效果10款jQuery插件

1.基于jQuery实现的汇图网大屏焦点图效果 汇图网大屏jQuery焦点图代码,可设置切换模式,如淡入淡出切换,左右滚动切换,上下滚动切换,可设置是否自动轮播,可设置鼠标划过是否停止播放等.     在线演示 源码下载 2.HTML5基于SVG实现的过山车动画特效 今天我们要分享一款很酷的HTML5/SVG动画,这款HTML5动画是过山车效果,主要是利用了SVG的path动画来实现的,整体动画效果流畅自然,效果非常酷.     在线演示 源码下载 3.jQuery实现苹果官网页面上下滚动全屏效

CSS3 media queries结合jQuery实现响应式导航_jquery

目的: 实现一个响应式导航,当屏幕宽度大于700px时,效果如下: 当屏幕宽度小于700px时,导航变成一个小按钮,点击之后有一个菜单慢慢拉下来:   思路: 1.为了之后在菜单上绑定事件,并且不向DOM中添加多余的节点,在大屏幕中出现的导航和小屏幕中的下拉导航必须是一个.    所以我选择了将导航绝对定位. 2.默认导航列表是出现的,当屏幕宽度小于700px时它隐藏,并且设置position,当屏幕宽度大于700px时,它出现.或者,默认导航列表是隐藏的,当屏幕宽度大于700px时它出现在右侧

jquery实现移动端TAB触屏切换效果

我们使用移动端时可以通过触屏手势左右滑动来切换TAB栏目,如网易新闻等APP栏目切换.我们说的TAB一般由导航条和TAB对应的内容组成,切换导航条上的标签同时标签对应的内容也会跟着切换.本文将结合实例给大家介绍一个移动端TAB触屏切换效果. 我们准备一个TAB导航#pagenavi,里面包含TAB导航要切换的四个导航按钮,然后是切换的主体内容#slider,这里应该放置四个li与导航按钮对应,内容自定义. <div class="box-163css">     <u