`

客户端元素滑动和滚动效果实现

 
阅读更多

 

最近一直在搞一些有关元素动态展示的功能,这么做是为了增加用户的体验,使得客户端更加的具有和用户之间的交互作用;

下面是我这篇文章的大纲:

1,介绍两种插件,实现元素轮番展示和拖动元素滑动的效果;

2,插件参数的介绍;

3,扩展功能的提出和实现;

4,一些悬而未解的问题,写在最后希望高手指点迷津,经验交流,小生不胜感激!

进入正题:

(1)为大家介绍两款插件,使用起来比较简单,要是需要更高级的效果,还可以自己实现;一个是jquery插件:jcarousellite,一个是iscroll插件;官方地址分别是:

http://www.gmarwaha.com/jquery/jcarousellite/index.phphttp://cubiq.org/iscroll-4

下面就写点自己使用过程中的一些感悟,一般网页上实现元素的滑动或者滚动都是使用ul元素进行封装,为什么要这么做?我在一个美女空间里发现了她写的一篇日志,解释的挺不错,在这里我就偷一下懒,引用她的观点了:

重组div的结构。

重组的主要目的是,在原div的里面添加一个div(player),在player里面添加另一个div(box)。这里两个div我觉得是非常有有必要的,后面要设置player的css,并且实际上滚动字幕的容器是player,位置变化,真正滚动的部分是box。当然,palyer的任务可以交给外面的div来完成,box的工作和任务可以交给里面的ul来完成,这样对设计师来说,原来的div还是div,只是用来布局的,没有任何影响。而里面的ul,有的设计师喜欢定义整个页面所有的ul的css,我怕会对我的字幕里的ul产生什么现在还不能预料的影响,所以在ul的外面嵌套一个div。(引用地址:http://apps.hi.baidu.com/share/detail/852064

iscroll中的滑动原理也是一样的,模式也是div+div+ul+li 简单点说:最外面的一层div可以看成是一个显示器,显示器下的第一个子元素就可以当做一个滚动元素的box,可以看成是一个滚动条,显示的元素多少,是有显示器的宽度来决定的,滚动的长短是由box的宽度来决定的;

jcarousellite 实现滚动,官方文档中介绍的很详细,这里我就不做过多的说明;

(2)

jcarousellite参数

Js代码
  1. $.fn.jCarouselLite = function(o) {      
  2.      o = $.extend({      
  3.          btnPrev: null,   //上一张按钮   
  4.          btnNext: null,   //下一张按钮   
  5.          btnGo: null,      //跳转到第几张   
  6.          mouseWheel: false,   //是否支持鼠标滚轮,需要jquery.mousewheel.js   
  7.          auto: null,   //是否自动滚动   
  8.      
  9.          speed: 200,   //滚动时长   
  10.          easing: null,   //滚动优化,需要jquery.easing.1.1.js   
  11.      
  12.          vertical: false,   //滚动方向,true垂直,false水平   
  13.          circular: true,   //是否重复播放,首位相接   
  14.          visible: 3,         //显示图片数量   
  15.          start: 0,           //从第几个开始滚动显示   
  16.          scroll: 1,          //每次滚动数量   
  17.      
  18.          beforeStart: null,   //滚动前调用函数   
  19.          afterEnd: null        //滚动后调用函数   
  20.      }, o || {});     

iscroll 参数

这个就NB 了,里面的参数挺多的,下面就说一下比较特殊的几个,其他的基本参数就可以自己在iscroll中的API中查找,地址:http://cubiq.org/iscroll,若你感觉读官方文档比较吃力的话,这里有一篇翻译过来的,个人感觉不错:http://hi.baidu.com/ali_myself/blog/item/7cbe2aa296b1459046106419.html

iscroll4官方文档给出了5个例子,都挺经典的,有兴趣的可以仔细的研读一下;特别是pullUp/Down Refresh 这个在手机应用中经常能看到;

this.x /this.y:判断元素scroll left/right滑动距离可以使用this.x,这个参数是返回的结果是滑动元素li:first,距离最左边的一个距离,就相当于原点,scroll left ,this.x<0;scroll rigth ,this.x >0;同样,scroll也提供了 this.y ,这个可以参考pullUp/Down refresh例子中的js写法;

snap:捕获元素,通常设置为true,这样元素的滑动,是一屏一屏的滑动,你也可以设置成只捕获一个li元素,但是写法有要求:你可以写成“ li " or "li .a"但是”#scroller li" is wrong;

(3)

这里有个需求:iscroll只能实现元素的单方向的滑动,不能实现像jcarousellite那样的轮番循环的滑动,如果能把iscroll的滑动结合jcarousellite的循环展示,这该多好啊;

于是,就开始了我的工作:

1)判断元素向左向右滑动,

2)滑动一个元素,就把隐藏到div中的那个元素移到li元素的最后,可以直接的使用jquery操作元素,改变li布局,也可以改变li样式position,但是,实验证明:只改动position:left的坐标,下次获取元素的时候,使用eq()或者nth-child()方法获取的都不是指定的元素,这里我想到了使用refresh();好像也没有起作用,最后只能保险起见,先挪动position样式,然后更改li元素的位置,这样,不至于出现错误;

code:onScrollEnd:function(){

            if(thisX > 0){
                this.minScrollX=450;
                var last = $("#thelist li").last();
                $("#thelist li").first().before(last);
                for(var i=0;i<=4;i++){
                        var positions = $("#thelist li").eq(i).position().left;console.log("..."+$("#thelist li").eq(0));
                        $("#thelist li").eq(i).css("left","+=90");
                        if(positions >=360){
                            $("#thelist li").eq(i).css("left","0px");
                        }
                        this.minScrollX -= 90;//alert(this.minScrollX);myscroll.refresh();
                    }
            }else if(thisX < 0){//alert(this.options.bounce);
                var first = $("#thelist li").first();
                //var scrollWidth = 450;
                $("#thelist li").last().after(first);           
                    this.maxScrollX = 450;
                    for(var i=0;i<=4;i++){
                        //$(".scroller").css("width",scrollWidth+"px");
                        var positions = $("#thelist li").eq(i).position().left;
                        $("#thelist li").eq(i).css("left","-=90");
                        if(positions <= 0){
                            $("#thelist li").eq(i).css("left","360px");
                        }
                        this.maxScrollX += 90;//scrollWidth += 90;$(".scroller").css("width",scrollWidth+"px");
                    }
            }
        },
 

3)实现了,但是有个bug:每次的滑动都要先反弹,然后才能更换位置,这个原因是:我把置换位置的操作放到 了 方法onscrollEnd中执行了,应该放到onscrollMove中执行;而这又引发了另外的一种问题出现:滑动的时候,会闪屏,这个原因是因为每次的鼠标onmousemover事件都相应的触发了我写的置换元素位置的方法;这样,也就遇到了问题;怎样才能在onscrollMove中完美的实现滚动;

(4)问题:

怎样通过判断鼠标拖动的距离来判断应该滑动几个li元素;

怎样实现向左向右的滑动,而不会出现上面提到的反弹;

 

分享到:
评论

相关推荐

    ActionBarSherlock结合ViewPager及Fragment实现仿新闻客户端顶部滑动切换效果

    "ActionBarSherlock结合ViewPager及Fragment实现仿新闻客户端顶部滑动切换效果"是一个示例项目,它展示了如何利用这些组件来创建一个类似新闻应用程序的顶部导航栏,允许用户通过滑动在不同内容之间切换。...

    仿网易云音乐客户端滑动

    在移动应用开发中,滑动效果是...通过以上步骤和技术,开发者可以构建出类似网易云音乐客户端的滑动效果,提升应用的用户体验。然而,实际开发过程中,还需要结合具体的业务需求和设计规范,对滑动效果进行定制和优化。

    JS带滑动条的图片滚动效果.zip

    在JavaScript编程中,实现带滑动条的图片滚动效果是一个常见的需求,特别是在创建动态和交互式的网页时。这个"JS带滑动条的图片滚动效果.zip"文件包含了一系列的资源,如图片、HTML文件和可能的JavaScript代码,用于...

    仿Android建行客户端中可滑动半圆形按钮

    "仿Android建行客户端中可滑动半圆形按钮"这一技术实现,主要是为了创建一个类似中国建设银行移动应用中的交互元素,它是一个可滑动的半圆形菜单,用户可以通过滑动来选择不同的功能或者操作。这种设计既美观又实用...

    滑动效果 滑动效果 js 滑动效果

    2. **JavaScript基础滑动**:通过JavaScript获取元素的位置和大小,然后在每次触发滑动事件时更新这些值,以模拟滑动效果。比如,我们可以监听鼠标滚轮或触摸屏的滑动事件,根据滚动距离调整元素的位置。 3. **基于...

    用php实现图片滚动

    这种实现方式更为常见,因为PHP是一种服务器端脚本语言,主要用于处理服务器端的逻辑,而图片滚动效果通常是在客户端浏览器中实现的。通过上述步骤,你可以轻松地在网页上实现一个简单的图片滚动效果。

    JS实现图片滚动效果

    总结来说,JS实现的图片滚动效果结合了JavaScript和jQuery的优点,通过合理的DOM操作和动画设计,为用户提供了一种动态、美观的图片展示方式。而实际的实现过程则涉及到HTML结构的构建、CSS样式的设定,以及...

    HTML图片滚动效果

    这类库通常会包含一些预设的样式和动画选项,如滚动方向、速度、暂停、启动等,使得开发者无需编写复杂的代码就能实现滚动效果。使用这样的类,你可能只需要像下面这样创建一个滚动图片: ```javascript var ...

    部分网页效果代码 苹果滑动效果

    "部分网页效果代码 - 苹果滑动效果"这个资源提供了一种实现类似苹果产品的滑动特效的JavaScript(JS)代码,它可以让网页元素如图片、内容块等平滑地进行滚动或切换,为用户带来流畅且高级的交互体验。 首先,我们...

    公告滚动效果 js网站特效

    在公告滚动效果中,CSS可以用来设定公告的样式,如字体、颜色、大小、位置等,以及动画效果,如过渡、滑动速度等。 5. **jQuery库**:jQuery是一个广泛使用的JavaScript库,简化了DOM操作、事件处理和动画制作。很...

    Android应用源码之仿 网易新闻客户端 滑动导航.zip

    综上所述,这个"Android应用源码之仿 网易新闻客户端 滑动导航"项目涵盖了Android开发的多个核心知识点,包括UI设计、数据管理、网络通信以及动画效果等,对于学习和理解Android应用开发具有很高的价值。通过研究这...

    安卓开发-仿 网易新闻客户端 滑动导航.zip.zip

    本项目旨在模拟网易新闻客户端的主界面,实现流畅的滑动效果和丰富的功能。以下是对这个项目的详细解读: 1. **滑动布局**: - 主要使用`ViewPager`组件,它允许用户通过左右滑动页面来浏览多个视图。`ViewPager`...

    Android腾讯微博客户端开发五利用FootView实现ListView滑动动态

    本篇文章将聚焦于如何利用FootView来实现ListView的滑动动态效果,这在提供用户友好的交互体验上至关重要。 首先,我们需要理解ListView是Android平台中常用的控件之一,用于展示大量的数据列表。然而,随着用户...

    ifeng 图片左右滚动效果

    总的来说,"ifeng 图片左右滚动效果"是一个实用且美观的网页设计元素,它结合了JavaScript和CSS的力量,为用户提供了一种便捷的图片浏览方式,提升了网页的互动性和吸引力。在实际开发中,根据项目需求和用户群体,...

    滑动图片展示广告效果.rar

    9. **插件和库**:为了快速开发和实现滑动图片广告,开发者常会使用现成的JS插件或库,如jQuery的carousel插件、Swiper.js或Slick Slider等。这些工具提供了丰富的选项和定制能力,简化了开发过程。 10. **A11Y(无...

    Android高级应用源码-仿 网易新闻客户端 滑动导航.rar

    该压缩包文件“Android高级应用源码-仿 网易新闻客户端 滑动导航.rar”提供了一个基于Android平台的高级应用示例,旨在模仿网易新闻客户端的滑动导航功能。滑动导航是现代移动应用中常见的设计模式,允许用户通过...

    android仿携程客户端界面实现

    携程客户端的界面通常包含顶部导航栏、中间滚动广告、底部Tab栏等元素,这需要灵活运用布局来实现。例如,`Toolbar`可以用来创建自定义的顶部导航栏,而`ViewPager`和`TabLayout`则可以实现滑动页面和Tab切换功能。 ...

    WAP手机网站JS触屏滑动图片特效自动滚动

    为了提供更好的用户体验,开发者经常会在WAP网站上运用各种JavaScript(JS)技术来实现动态效果,其中,触屏滑动图片特效自动滚动是一种常见且实用的设计。本文将详细讲解如何在WAP手机网站上实现这种功能。 首先,...

    仿新闻客服端详细页面的滑动效果

    总之,实现仿新闻客户端详细页面的滑动效果,需要结合触摸事件处理、视图滚动组件、布局管理以及动画技术。通过合理的设计和优化,我们可以创建出流畅、自然且具有特色的滑动体验。在开发过程中,持续调试和测试是...

    ASP.NET网页随滚动条滑动的层,ASP.NET页面随滚动条滚动

    综上所述,实现ASP.NET网页随滚动条滑动的层主要涉及客户端技术,包括JavaScript、CSS和可能的AJAX。服务器端的ASP.NET则主要负责生成和管理这些客户端资源,以及与后端数据的交互。理解这些概念和技术对于创建动态...

Global site tag (gtag.js) - Google Analytics