zoukankan      html  css  js  c++  java
  • 通过js实现整屏滑动+全屏翻页+动画展示+线性图

    技术:html+css+jquery+jquery-ui.js+jquery.fullPage.js
     

    概述

    本demo主要通过html+css+js实现整屏滑动,全屏翻页并带动画的功能效果,借助于jquery等插件。逻辑稍微复杂,里面还嵌入了柱形图等多种线性图。

    详细

    demo是模拟的一家教育机构的首页,当时学习的时候写的,主要实现的是整屏滑动,全屏翻页的效果,每次翻页都有动画的效果,内容嵌入了线性图和柱形图,代码实现稍微复杂,纯js实现的,如果有需要的朋友可以直接把代码贴到自己的项目中,把js和css放到统一的文件中。里面的H5_index.css是主要的样式文件,H5_index.js是主要的逻辑文件。页面展示的所有内容直接在H5_index.js中修改即可。如果有不想要的那个页面,直接注释掉里面对应的方法就好。

    一、项目目录

    WX20190224-001212@2x_meitu_1.jpg

    二、演示效果

    三、程序实现具体步骤

    页面index.html

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1">
    <title>整屏滑动Demo</title>
    <!-- 载入所有的组件资源 -->
    <script type="text/javascript" src="js/lib/jquery.js"></script>
    <script type="text/javascript" src="js/lib/jquery-ui.min.js"></script>
    <script type="text/javascript" src="js/lib/jquery.fullPage.js"></script>
    <!-- H5对象:进行内容管理 -->
    <script type="text/javascript" src="js/H5.js"></script>
    <link rel="stylesheet" type="text/css" href="css/H5.css" >
    <script type="text/javascript" src="js/H5_loading.js"></script>
    <!-- 相关样式 -->
    <link rel="stylesheet" type="text/css" href="css/H5_loading.css" >
    <link rel="stylesheet" type="text/css" href="css/H5ComponentBase.css">
    <link rel="stylesheet" type="text/css" href="css/H5ComponentBar.css">
    <link rel="stylesheet" type="text/css" href="css/H5ComponentBar_v.css">
    <link rel="stylesheet" type="text/css" href="css/H5ComponentPoint.css">
    <link rel="stylesheet" type="text/css" href="css/H5ComponentPolyline.css">
    <link rel="stylesheet" type="text/css" href="css/H5ComponentRadar.css">
    <link rel="stylesheet" type="text/css" href="css/H5ComponentPie.css">
    <link rel="stylesheet" type="text/css" href="css/H5ComponentRing.css">
    <!-- 相关样式 -->
    <!-- 页面逻辑的样式 -->
    <link rel="stylesheet" type="text/css" href="css/H5_index.css" >
    <!-- 页面逻辑的样式 -->
    <body>
    <div class="loading">
    <div class="double-bounce1"></div>
    <div class="double-bounce2"></div>
    <div id="rate">0%</div>
    </div>
    <!-- 相关逻辑 -->
    <script src="js/H5ComponentBase.js"></script>
    <script src="js/H5ComponentBar.js"></script>
    <script src="js/H5ComponentBar_v.js"></script>
    <script src="js/H5ComponentPoint.js"></script>
    <script src="js/H5ComponentPolyline.js"></script>
    <script src="js/H5ComponentRadar.js"></script>
    <script src="js/H5ComponentPie.js"></script>
    <script src="js/H5ComponentRing.js"></script>
    <!-- 相关逻辑 -->
    <!-- 页面逻辑 -->
    <script src="js/H5_index.js"></script>
    <!-- 页面逻辑 -->
    </body>
    
    </html>

    主要逻辑 H5_index.js

    $(function  () {
    var h5 = new H5();
    h5.whenAddPage = function(){
    this.addComponent('slide_up',{
    bg:'imgs/footer.png',
    css:{
    opacity:0,
    left:0,bottom:-20,
    '100%',height:'20px',zIndex:999
    },
    animateIn:{
    opacity:1,bottom:'-1px'
    },
    animateOut:{
    opacity:0,bottom:'-20px'
    },
    delay:500
    });
    }
    h5
    .addPage('face')
    .addComponent('logo',{
    center:true,
    395,
    height:130,
    bg:'imgs/face_logo.png',
    css:{opacity:0},
    animateIn:{top:100,opacity:1},
    animateOut:{top:0,opacity:0},
    })
    .addComponent('slogan',{
    center:true,
    365,
    height:99,
    bg:'imgs/face_slogan.png',
    css:{opacity:0,top:180},
    animateIn:{left:'50%',opacity:1},
    animateOut:{left:'0%',opacity:0},
    delay:500
    })
    .addComponent('face_img_left',{
    370,
    height:493,
    bg:'imgs/face_img_left.png',
    css:{opacity:0,left:-50,bottom:-50},
    animateIn:{opacity:1,left:0,bottom:0},
    animateOut:{opacity:0,left:-50,bottom:-50},
    delay:1000
    })
    .addComponent('face_img_right',{
    276,
    height:449,
    bg:'imgs/face_img_right.png',
    css:{opacity:0,right:-50,bottom:-50},
    animateIn:{opacity:1,right:0,bottom:0},
    animateOut:{opacity:0,right:-50,bottom:-50},
    delay:1000
    })
    .addPage()
    .addComponent('caption',{text:'标题'})
    .addComponent('text',{
    500,
    height:30,
    center:true,
    text:'这是一个demo标题',
    css:{
    opacity:0,textAlign:'center',color:'red',fontSize:'26px'
    },
    animateIn:{opacity:1,top:120},
    animateOut:{opacity:0,top:240},
    })
    .addComponent('description',{
    center:true,
    481,
    height:295,
    bg:'imgs/description_bg.gif',
    css:{
    opacity:0,
    padding:'15px 10px 10px 10px',
    color:'#fff',
    fontSize:'15px',
    lineHeight:'18px',
    textAlign:'justify',
    top:240
    },
    text:'介绍内容',
    animateIn:{opacity:1,top:190},
    animateOut:{opacity:0,top:240},
    delay:1000
    })
    .addComponent('people',{
    center:true,
    515,
    height:305,
    bg:'imgs/p1_people.png',
    css:{
    opacity:0,
    bottom:0
    },
    animateIn:{opacity:1,bottom:40},
    animateOut:{opacity:0,bottom:0},
    delay:500
    })
    .addPage()
    .addComponent('caption',{text:'标题'})//polyline
    .addComponent('polyline',{
    type:'polyline',
    data:[['测试1',.4,'#ff7676'],['测试2',.2],['测试3',.3,'blue'],['测试4',.1]],
    530,
    height:300,
    center:true,
    css:{opacity:0,top:200},
    animateIn:{opacity:1,top:250},
    animateOut:{opacity:0,top:100},
    })
    .addComponent('msg',{
    text:'测试',
    css:{
    opacity:0,top:160,
    textAlign:'center','100%',color:'#ff7676'
    },
    animateIn:{ opacity:1},
    animateOut:{ opacity:0}
    })
    
    
    .addPage()
    .addComponent('caption',{text:'测试'})//pie
    .addComponent('pie',{
    type:'pie',
    data:[
    ['测试' , .4  ,'#ff7676'],
    ['测试' , .3 ],
    ['测试' , .2  ],
    ['测试' , .1  ],
    ],
    css:{top:200},
    300,
    height:300,
    center:true
    })
    .addComponent('msg',{
    text:'测试',
    css:{
    opacity:0,bottom:120,
    textAlign:'center','100%',color:'#ff7676'
    },
    animateIn:{ opacity:1},
    animateOut:{ opacity:0}
    })
    .addPage() //bar(bar_v)
    .addComponent('caption',{text:'测试'})
    .addComponent('bar',
    {
    type : 'bar',
    width : 530,
    height : 600,
    data:[
    ['测试' , .4  ,'#ff7676'],
    ['测试' , .2  ],
    ['测试' , .1 ],
    ['测试' , .2  ],
    ['测试' , .35 ],
    ['测试' , .05 ],
    ['测试' , .09  ]
    ],
    css : {
    top:100,
    opacity:0
    },
    animateIn:{
    opacity:1,
    top:200,
    },
    animateOut:{
    opacity:0,
    top:100,
    },
    center : true,
    }
    )
    .addComponent('msg',{
    text:'测试',
    css:{
    opacity:0,bottom:120,
    textAlign:'center','100%',color:'#ff7676'
    },
    animateIn:{ opacity:1},
    animateOut:{ opacity:0}
    })
    
    .addPage() //(bar_v)
    .addComponent('caption',{text:'测试'})
    .addComponent('bar',
    {
    type : 'bar_v',
    width : 530,
    height : 400,
    data:[
    ['测试' , .4  ,'#ff7676'],
    ['测试' , .1 ],
    ['测试' , .2  ],
    ['测试' , .05  ],
    ['测试' , .35 ]
    ],
    css : {
    top:220,
    opacity:0
    },
    animateIn:{
    opacity:1,
    top:200,
    },
    animateOut:{
    opacity:0,
    top:220,
    },
    center : true
    }
    )
    .addComponent('msg',{
    text:'测试',
    css:{
    opacity:0,top:180,
    textAlign:'center','100%',color:'#ff7676'
    },
    animateIn:{ opacity:1},
    animateOut:{ opacity:0}
    })
    
    .addPage()
    .addComponent('caption',{text:'测试'})//radar
    
    .addComponent('radar',{
    type : 'radar',
    width : 400,
    height : 400,
    data:[
    ['测试' , .9  ,'#ff7676'],
    ['测试' , .8 ],
    ['测试' , .7  ],
    ['测试' , .6  ],
    ['测试' , .5 ]
    ],
    css : {
    top:100,
    opacity:0
    },
    animateIn:{
    opacity:1,
    top:200,
    },
    animateOut:{
    opacity:0,
    top:100,
    },
    center : true,
    })
    .addPage()
    .addComponent('caption',{text:'测试'})//ring
    .addComponent('ring-all',{
    type : 'ring',center : true,
    width : 300,height : 300,
    data:[['测试' , .7  ,'#ff7676']],
    css : { top:120,opacity:0 ,fontSize:'30px'},
    animateIn: { opacity:1},
    animateOut:{ opacity:0},
    })
    .addComponent('msg',{
    text:'测试',
    css:{
    opacity:0,top:300,
    textAlign:'center','100%',color:'#ff7676'
    },
    animateIn:{ opacity:1},
    animateOut:{ opacity:0},
    delay:1800,
    })
    .addComponent('ring-1',{
    type : 'ring',center : true,
    width : 140,height : 140,
    data:[['测试' , .4  ,'darkorange']],
    css : { left:30,bottom:110,opacity:0,fontSize:'12px' },
    animateIn: { opacity:1},
    animateOut:{ opacity:0},
    })
    .addComponent('ring-2',{
    type : 'ring',
    width : 140,height : 140,
    data:[['测试' , .3  ,'darkorange']],
    css : { left:30,bottom:110,opacity:0,fontSize:'12px' },
    animateIn: { opacity:1},
    animateOut:{ opacity:0},
    })
    .addComponent('ring-3',{
    type : 'ring',
    width : 140,height : 140,
    data:[['测试' , .2  ,'darkorange']],
    css : { right:30,bottom:110,opacity:0,fontSize:'12px' },
    animateIn: { opacity:1},
    animateOut:{ opacity:0},
    })
    .addComponent('ring-3',{
    type : 'ring',
    width : 140,height : 140,
    data:[['测试' , .1  ,'darkorange']],
    css : { left:70,bottom:40,opacity:0,fontSize:'12px' },
    animateIn: { opacity:1},
    animateOut:{ opacity:0},
    })
    .addComponent('ring-3',{
    type : 'ring',
    width : 140,height : 140,
    data:[['测试' , .1  ,'darkorange']],
    css : { right:70,bottom:40,opacity:0,fontSize:'12px' },
    animateIn: { opacity:1},
    animateOut:{ opacity:0},
    })
    
    .addPage()
    .addComponent('caption',{text:'测试'})//point
    .addComponent('point',{
    type : 'point',
    width : 300,
    height : 300,
    data:[
    ['测试' , .4  ,'#ff7676'],
    ['测试' , .2  ,'#ffa3a4', 0 ,'-60%'],
    ['测试' , .3  ,'#99c1ff', '50%' ,'-120%']
    ],
    css : {
    bottom:'20%'
    },
    center : true,
    })
    
    .addPage('tail')
    .addComponent('logo',{
    center:true,
    359,
    height:129,
    bg:'imgs/logo.png',
    css:{top:240,opacity:0},
    animateIn:{opacity:1,top:210},
    animateOut:{opacity:0,top:240},
    })
    .addComponent('slogan',{
    center:true,
    314,
    height:46,
    bg:'imgs/tail_slogan.png',
    css:{top:280,opacity:0},
    animateIn:{opacity:1,left:'50%'},
    animateOut:{opacity:0,left:'0%'},
    delay:500
    })
    .addComponent('share',{
    128,
    height:120,
    bg:'imgs/tail_share.png',
    css:{opacity:0,top:110,right:110},
    animateIn:{opacity:1,top:10,right:10},
    animateOut:{opacity:0,top:110,right:110},
    delay:1000 
    })
    .addComponent('back',{
    52,
    height:50,
    bg:'imgs/tail_back.png',
    center:true,
    onclick : function(){
    $.fn.fullpage.moveTo( 1 )
    }
    })
    
    .loader( [ 'imgs/tail_back.png','imgs/tail_share.png','imgs/tail_slogan.png' ] );
    
    });

    主要样式 H5_index.css

    body{
    margin: 0;
    padding: 0;
    }
    .h5_page{
    background-image: url(../imgs/page_bg.png);
    }
    .h5_page_face{
    background-image: url(../imgs/face_bg.png);
    }
    .h5_component_name_slogan{
    -webkit-animation:rock 2s infinite 2s;
    }
    @-webkit-keyframes rock{
    0%{ transform:rotate(0deg)}
    5%{ transform:rotate(3deg)}
    10%{ transform:rotate(-4deg)}
    15%{ transform:rotate(3deg)}
    20%{ transform:rotate(-2deg)}
    25%{ transform:rotate(1deg)}
    30%{ transform:rotate(-1deg)}
    70%{ transform:rotate(0deg)}
    100%{ transform:rotate(0deg)}
    }
    .h5_component_name_caption{
    background-image: url(../imgs/page_caption_bg.png);
     283px;
    height: 160px;
    text-align: center;
    line-height: 140px;
    font-size: 20px;
    color: #fff;
    }
    .h5_component_name_back{
    top: 30px;
    -webkit-animation:back 2s infinite 2s;
    }
    @-webkit-keyframes back{
    50%{ top: 20px; }
    }

    其他注意点:

    代码借助的第三方插件比较多,不要太深究如何实现的,只要能够正常使用就ok了。

    一直在学习,从未敢停歇。



    注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

  • 相关阅读:
    Java Stax操作XML简介
    使用JAXB来实现Java合xml之间的转换
    WebService学习笔记系列(四)
    JavaWeb学习笔记总结 目录篇
    成为谷歌的java程序员首先要做到这五点!
    Java实现快速排序
    二叉树遍历(Java实现)
    Java单链表反转
    学好java,做好工程师必读的15本书
    最全前端资源汇集
  • 原文地址:https://www.cnblogs.com/demodashi/p/10503437.html
Copyright © 2011-2022 走看看