全屏滚动效果H5FullscreenPage.js

前提:

介于现在很多活动都使用了 类似全屏滚动效果 尤其在微信里面 我自己开发了一个快速构建 此类项目的控件 与市面上大部分控件不同的是此控件还支持元素的动画效果 并提供多种元素效果 基于zepto.js

功能清单:

1 快速实现页面全屏滚动效果。并提供多种翻页效果,兼容大部分ios和android系统。

2 支持在页面中添加多种动画元素效果 来实现淡入,滑入等效果。

3 支持配置音乐功能。

4 支持摇一摇接口功能。

组件核心代码原理:

1 页面滚动

在移动页面上如果想使用滚动,如过没有任何动画效果,那么肯定大家首先想到的就是用滚动条来滚动,但这样的滚动比较单调,实现动画效果比较困难,于是就想出了利用css3和div的绝对定位来实现。

<body>
  <div class="item item1">

  </div>
  <div class="item item2">

  </div>
  <div class="item item3">

  </div>
</body>

然后给每个div设置绝对定位样式

.item {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    background-position: center;
}

这样页面上的每个div都相当于一个页面 只不过重叠了而已,接下来就要利用javascript和css让这些页面可以滚动(利用touch时间改变div的transform来实现滚动)

function touchStart(event) {
            if (dragStart !== null) return;

            if (event.touches) {
                event = event.touches[0];
            }
             //抓取时的所在位置
            dragStart = event.clientY;

         }

         function touchMove (event) {

            if (dragStart === null) return;

            if (event.touches) {
                event = event.touches[0];
            }
             //得到抓取开始时于进行中的差值的百分比
            percentage = (dragStart - event.clientY) / window.screen.height;//和屏幕高度做比较

            if (percentage > 0) {
                // //向上拖动
                var translateY = 1 - 0.4*percentage;//位置系数,可以微调
                $(event.target).next().css(‘-webkit-transform‘, ‘translateY(‘+translateY*100+‘%)‘); //下一个item上移动

            } else {
                //向下拖动
                var translateY = -(0.4*percentage);
                $(event.target).css(‘-webkit-transform‘, ‘translateY(‘+translateY*100+‘%)‘);//当前item下移动
            }

         }

         function touchEnd (event) {

            dragStart = null;//标志位值空

            //抓取停止后,根据临界值做相应判断
            if (percentage >= dragThreshold) {//向下滚动
                $(event.target).css(‘-webkit-transform‘, ‘translateY(-100%)‘);
                $(event.target).next().css(‘-webkit-transform‘, ‘translateY(0)‘);
            } else if ( Math.abs(percentage) >= dragThreshold ) {//向上滚动
                $(event.target).css(‘-webkit-transform‘, ‘translateY(100%)‘);
            } else {//没有达到临界值 恢复原样
                $(event.target).next().css(‘-webkit-transform‘, ‘translateY(100%)‘);
            }
             //重置percentage
            percentage = 0;

         }

这里有几点说明一下:

1)使用translate3d来替换translateY可以开启硬件加速 在渲染上会好一些。

2)在执行下一页或者上一页时 可以给div添加css3动画来使其滚动带有一定的动画效果,组件提供8中翻页效果。

2 元素的淡入淡出:

元素入场的动画效果主要是利用css3来实现

.fadeIn {
        animation-name: fadeIn;
        -webkit-animation-name: fadeIn; 

        animation-duration: 1.5s;
        -webkit-animation-duration: 1.5s;

        animation-timing-function: ease-in-out;
        -webkit-animation-timing-function: ease-in-out;     

    }
@keyframes fadeIn {
        0% {
            transform: scale(0);
            opacity: 0.0;
        }
        60% {
            transform: scale(1.1);
        }
        80% {
            transform: scale(0.9);
            opacity: 1;
        }
        100% {
            transform: scale(1);
            opacity: 1;
        }
    }

    @-webkit-keyframes fadeIn {
        0% {
            -webkit-transform: scale(0);
            opacity: 0.0;
        }
        60% {
            -webkit-transform: scale(1.1);
        }
        80% {
            -webkit-transform: scale(0.9);
            opacity: 1;
        }
        100% {
            -webkit-transform: scale(1);
            opacity: 1;
        }
    }
.fadeIn {
        animation-name: fadeIn;
        -webkit-animation-name: fadeIn; 

        animation-duration: 1.5s;
        -webkit-animation-duration: 1.5s;

        animation-timing-function: ease-in-out;
        -webkit-animation-timing-function: ease-in-out;     

    }
@keyframes fadeIn {
        0% {
            transform: scale(0);
            opacity: 0.0;
        }
        60% {
            transform: scale(1.1);
        }
        80% {
            transform: scale(0.9);
            opacity: 1;
        }
        100% {
            transform: scale(1);
            opacity: 1;
        }
    }

    @-webkit-keyframes fadeIn {
        0% {
            -webkit-transform: scale(0);
            opacity: 0.0;
        }
        60% {
            -webkit-transform: scale(1.1);
        }
        80% {
            -webkit-transform: scale(0.9);
            opacity: 1;
        }
        100% {
            -webkit-transform: scale(1);
            opacity: 1;
        }
    }

该元素首先是隐藏的,在页面滑入视窗时将其显示,就会应用上css3设定的动画效果,延伸出来不仅fadeIn效果,许多效果都可以设定,另外可以给元素添加data-delay属性来控制元素的执行顺序。

组件使用方法:

 组件使用方法:

{
    ‘type‘ : 1,//翻页的动画效果 共有8种可以使用
    ‘pageShow‘ : function(page){},
    ‘pageHide‘ : function(page){},
    ‘useShakeDevice‘ : {//是否使用手机摇一摇接口
        ‘speed‘ : 30,
        ‘callback‘ : function(page){}
    },
    ‘useParallax‘ : true,//是否使用parallax效果可参看demo第六页
    ‘useArrow‘ : true,//是否使用箭头
    ‘useAnimation‘ : true,//是否使用元素动画效果
    ‘useMusic‘ : {//是否使用音乐
        ‘autoPlay‘ : true,
        ‘loopPlay‘ : true,
        ‘src‘ : ‘http://mat1.gtimg.com/news/2015/love/FadeAway.mp3‘
    }
 };

原文地址:https://github.com/lvming6816077/H5FullscreenPage

时间: 2024-08-04 12:37:01

全屏滚动效果H5FullscreenPage.js的相关文章

js全屏滚动效果

1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <title>全屏滚动代码测试</title> 6 <style type="text/css"> 7 body,ul,li{ margin: 0; padding: 0;} 8 #tbody{ overflow: hidden; clear: both;

pagePiling.js - 创建美丽的全屏滚动效果

在线演示 在线演示 本地下载 全屏滚动效果是近期很流行的网页设计形式,带给用户良好的视觉和交互体验. pagePiling.js 这款jQuery插件能够帮助前端开发者轻松实现这样的效果.支持全部的主流浏览器,包含IE8+.支持移动设备.

pagePiling.js - 创建漂亮的全屏滚动效果

在线演示 在线演示 本地下载 全屏滚动效果是最近非常流行的网页设计形式,带给用户良好的视觉和交互体验.pagePiling.js 这款jQuery插件可以帮助前端开发人员轻松实现这种效果.支持所有的主流浏览器,包括IE8+,支持移动设备.

手机端实现fullPage——全屏滚动效果

封装了一个小插件模拟fullPage的全屏滚动效果,比较简单. 特点: 1.  纯js实现,小巧轻便. 2.  兼容性好.苹果.安卓都没问题,暂时没遇到问题机型. 缺点: 1.  仅封装了基础功能,HTML.css么有去封装.个人觉得不封装更方便大家使用. 接下来看看效果图: 相比效果大家都看到了,接下来看看代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title&

学习 | jQuery全屏滚动插件FullPage.js

简介 fullPage.js是一个基于jQuery的全屏滚动插件,它能够很方便.很轻松的制作出全屏网站. 主要功能 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平板触摸事件 支持 CSS3 动画 支持窗口缩放 窗口缩放时自动调整 可设置滚动宽度.背景颜色.滚动速度.循环选项.回调.文本对齐方式 兼容性 fullPage.js 支持 IE8+ 及其他现代浏览器.测试代码 测试代码 <!DOCTYPE html> <html lang="en">

拥抱单页网站! jQuery全屏滚动插件fullPage.js

不知道从什么时候开始,单页网站就悄悄走进人们的视线,尤其是国外的网站,更是钟爱单页网站.制作一个全屏滚动的效果,然后每个滚动页弄一个好看的背景色,配上一些描述性的文字,大家都喜欢这么弄,仿佛逼格瞬间可以爆表似的.当然,不得不承认,介绍产品的页面用单页网站似乎确实高大上的多. 在站长之家看到一篇文章,让我对单页网站有了探索的热情.文章这么写的:“随着单页网站从未经考验的即兴创作一跃成为受人热捧的潮流趋势,垂直滚动的理念正式成了人们目光聚焦的中心.与此同时,设计师们也在大踏步地创新,力求让这一趋势在

jQuery全屏滚动插件fullPage.js中文帮助

简介 fullPage.js是一个基于jQuery的全屏滚动插件,它能够很方便.很轻松的制作出全屏网站 主要功能 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平板触摸事件 支持 CSS3 动画 支持窗口缩放 窗口缩放时自动调整 可设置滚动宽度.背景颜色.滚动速度.循环选项.回调.文本对齐方式等等 兼容性 fullPage.js 支持 IE8+ 及其他现代浏览器. 使用方法 1.引入文件 <link rel="stylesheet" href="css/

[分享]数字插件countUp.js和全屏滚动插件fullPage.js

分享两款js插件 1:数字插件countUp.js 项目github地址:http://inorganik.github.io/countUp.js/ 2:全屏滚动插件:fullPage.js 项目github地址:https://github.com/alvarotrigo/fullPage.js 示例地址:https://alvarotrigo.com/fullPage/ 原文地址:https://www.cnblogs.com/many-object/p/8405935.html

jquery之全屏滚动插件fullPage.js

简介 fullPage.js 是一个基于 jQuery 的插件,它能够很方便.很轻松的制作出全屏网站,主要功能有: 支持鼠标滚动 支持前进后退和键盘控制 多个回调函数 支持手机.平板触摸事件 支持 CSS3 动画 支持窗口缩放 窗口缩放时自动调整 可设置滚动宽度.背景颜色.滚动速度.循环选项.回调.文本对齐方式等等 兼容性 jQuery 兼容 兼容 jQuery 1.7+. 浏览器兼容 IE8+ ? Chrome ? Firefox ? Opera ? Safari ? 使用方法 1.引入文件