慕课网实战—《用组件方式开发 Web App全站 》笔记二

运用HTML5、CSS3、JS流行技术,采用组件式开发模式,开发Web App全站!技术大牛带你统统拿下不同类型的HTML5动态数据报告!

《用组件方式开发 Web App全站 》

项目JS类开发

静态页思路验证

jQuery全屏滚动插件fullPage.js

??使用参考:Fullpage入门指南

组件切换,入场,出场动画

????

DOM事件循环传播-无限循环

??使用return false;或者triggerHander()方法阻止事件向上传播。

相关代码

  • HTML
<body>
        <div id="h5">
            <div class="page section" id="page-1">
                <div class="component log">log</div>
                <div class="component slogan">slogan</div>
            </div>
            <div class="page section" id="page-2">
                <div class="component desc">desc</div>
            </div>
            <div class="page section" id="page-3">
                <div class="component bar">bar</div>
            </div>
        </div>
    </body>
  • JavaScript
<!-- 用于验证fullPage。js切换页面,以及内容组织结构可用,组件能够进行动画 -->
    <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>
    <script type="text/javascript">
        $(function(){
            $(‘#h5‘).fullpage({

                ‘sectionsColor‘ : [‘#254875‘,‘#00FF00‘,‘#254587‘,‘#695684‘],
                onLeave:function(index,nextIndex,direction){
                     // debugger;  测试
                $(‘#h5‘).find(‘.page‘).eq(index-1).trigger(‘onLeave‘);
                },
                afterLoad:function(anchorLink,index){
                     // debugger;  测试
                $(‘#h5‘).find(‘.page‘).eq(index-1).trigger(‘onLoad‘);
                },
            });

            $(‘.page‘).on(‘onLeave‘,function(){
                console.log( $(this).attr(‘id‘),‘==>>‘,‘onLeave‘ );
                $(this).find(‘.component‘).trigger(‘onLeave‘);
            })
            $(‘.page‘).on(‘onLoad‘,function(){
                console.log( $(this).attr(‘id‘),‘==>>‘,‘onLoad‘ );
                $(this).find(‘.component‘).trigger(‘onLoad‘);
            })

            $(‘.component‘).on(‘onLoad‘,function(){
                $(this).fadeIn();
                return false;   // 阻止事件向上传播
            })
            $(‘.component‘).on(‘onLeave‘,function(){
                $(this).fadeOut();
                return false;   // 阻止事件向上传播
            })
        });
    </script>

JS对象规划

内容组织类:H5

??作用:

  • 组织H5报告的内容结构
  • 设置H5报告的切换效果(fullpage.js),当页面切换时,通知页内所有的组件。

??方法;

  • 添加一个页 addPage
  • 添加一个组件 addCompoent
  • 展现所以页面 Loader

图文组件类(H5CompoentBase)

??作用:输出一个DOM,内容可以是图片或者文字

??事件:

  • 当前页载入:onLoad
  • 当前页移出:onLeave

图片组件类(H5Compoent???)

??作用一:在H5ComponentBase的基础之上插入DOM结构或CANVAS图形

??事件:

  • 当前页载入移除:onLoad,onLeave
  • 图表组件本身的生长动画

项目JS类总结

??

通用图文组件类-H5ComponentBase(开发准备)

  • 基本图文组件(图文设置)
  • 接受onLoad,onLeave事件
  • 开发方法:独立模块开发
    // 设置随机唯一的ID
    var id = ( ‘h5_c_‘+Math.random() ).replace(‘.‘,‘_‘);

    // 把当前的组件类型添加到样式中进行标记
    var cls = name+‘ h5_component_‘+cfg.type;
    var component = $(‘<div class="h5_component ‘+cls+‘ h5_component_name_‘+name+‘" id="‘+id+‘">‘);

相关代码

  • HTML
<body>
        <!-- 用于开发测试 H5ComponentBase 对象(基本的图文组件) -->
        <div class="iphone">

        </div>

        <script type="text/javascript">
            var cfg = {
                type : ‘base‘,
                bg : ‘./p1_people.png‘,
                width : 514,
                height : 306,
                css:{
                    bottom:0,
                    opacity:0,
                },
                animateIn:{ bottom:80,opacity:1},
                animateOut:{ bottom:0,opacity:0 },
                center:true,
            }
            var h5 = new H5ComponentBase(‘myName‘,cfg);
            $(‘.iphone‘).append(h5);
            var leave = true;
            $(‘body‘).click(function(){
                leave = !leave;
                $(‘.h5_component‘).trigger( leave ? ‘onLeave‘ : ‘onLoad‘);

            });

        </script>

    </body>
  • CSS
/* 基本图文组件样式 */

.h5_component{
    background-size: 100%;
    background-repeat: no-repeat;
    position: absolute;
}
  • JavaScript
/* 基本图文组件对象 */

var H5ComponentBase = function( name,cfg ){
    var cfg = cfg || {};
    // 设置随机唯一的ID
    var id = ( ‘h5_c_‘+Math.random() ).replace(‘.‘,‘_‘);

    // 把当前的组件类型添加到样式中进行标记
    var cls = name+‘ h5_component_‘+cfg.type;
    var component = $(‘<div class="h5_component ‘+cls+‘ h5_component_name_‘+name+‘" id="‘+id+‘">‘);

    cfg.text && component.text(cfg.text);
    cfg.width && component.width(cfg.width/2);
    cfg.height && component.height(cfg.height/2);

    cfg.css && component.css(cfg.css);
    cfg.bg && component.css(‘backgroundImage‘,‘url(‘+cfg.bg+‘)‘);

    if( cfg.center === true){
        component.css({
            marginLeft : ( cfg.width/4 * -1 ) + ‘px‘,
            left:‘50%‘,
        })
    // ...很多自定义的参数
    }

    component.on(‘onLoad‘,function(){
            component.addClass(cls+‘_load‘).removeClass(cls+‘_leave‘);
            cfg.animateIn && component.animate( cfg.animateIn );
            return false;
        })
    component.on(‘onLeave‘,function(){
            component.addClass(cls+‘_leave‘).removeClass(cls+‘_load‘);
            cfg.animateOut && component.animate( cfg.animateOut );
            return false;
        })

    return component;
}

CSS样式规则

通用图表组件

  • 内容组织,添加页面,添加组件
  • 整合fullpage.js支持页面切换
  • 链式调用

相关代码

  • HTML
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1" />

    <title>IT学习网2015课程学习情况</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/H5ComponentBase.js"></script>
    <link rel="stylesheet" type="text/css" href="../css/H5ComponentBase.css">
    <style type="text/css">    

    </style>
</head>

<body>
    <!-- 测试内容组织功能,以及fullPage页面切换&组件切换 -->
    <!-- 内容组织管理,有可能会加载若干个资源 -->
    <script type="text/javascript">
    $(function () {
        var h5 = new H5();
            h5
              .addPage(‘face‘)
                    .addComponent(‘logo‘,{
                        text:‘logo‘,
                        width:‘400‘,
                        height:‘100‘,
                        css:{backgroundColor:‘red‘,top:200,opacity:0},
                        center:true,
                        animateIn: {opacity:1},
                        animateOut: {opacity:0}
                    })
                    .addComponent(‘slogan‘,{
                        text:‘slogan‘,
                        width:‘400‘,
                        height:‘100‘,
                        css:{backgroundColor:‘green‘,top:300,opacity:0},
                        center:true,
                        animateIn: {opacity:1},
                        animateOut: {opacity:0}
                    })
              .addPage(‘desc‘)
                    .addComponent(‘caption‘,{
                        text:‘核心理念‘,
                        width:‘400‘,
                        height:‘100‘,
                        css:{backgroundColor:‘blue‘,top:300,opacity:0},
                        center:true,
                        animateIn: {opacity:1},
                        animateOut: {opacity:0}
                    })
              .addPage(‘page-3‘)
                    .addComponent(‘caption‘,{
                        text:‘课程方向分布‘,
                        width:‘400‘,
                        height:‘100‘,
                        css:{backgroundColor:‘yellow‘,top:300,opacity:0},
                        center:true,
                        animateIn: {opacity:1},
                        animateOut: {opacity:0}
                    })
              .loader(); // 添加若干图片资源
    })

    </script>
</body>

</html>
  • CSS
/* H5对象的全局样式 */

.h5{
    height: 100%;
}
.h5_page{
    position: relative;
    height: 100%;
    width: 100%;
    background-color: #ddd;
    background-size: 100%;
    background-repeat: no-repeat;
    text-align: center;
}
  • JavaScript
/* 内容管理对象 */

var H5 = function () {
    this.id = (‘h5_‘+Math.random()).replace(‘.‘,‘_‘);
    this.el = $(‘<div class="h5" id="‘+this.id+‘">‘).hide();
    this.page = [];
    $(‘body‘).append( this.el );
    /**
     * 新增一个页
     * @param {string} name 组件的名称,会加入到ClassName中
     * @param {string} text 页内的默认文本
     * @return {H5} [description] H5对象,可以重复使用H5对象支持的方法
     */
    this.addPage = function( name,text ){
        var page = $(‘<div class="h5_page section">‘);

        if( name != undefined ){
            page.addClass(‘h5_page_‘+name);
        }
        if( text != undefined ){
            page.text(text);
        }
        this.el.append( page );
        this.page.push( page );
        return this;

    }
    /*新增一个组件*/
    this.addComponent = function( name, cfg ){
        var cfg = cfg || {};
        cfg = $.extend({
            type : ‘base‘
        },cfg);
        var component; // 定义一个变量,存储组件元素
        var page = this.page.slice(-1)[0];

        switch( cfg.type ){
            case ‘base‘:
                component = new H5ComponentBase(name,cfg);
            break;

            default:
        }
        page.append( component );
        return this;

    }
    /*H5对象初始化呈现*/
    this.loader = function(){
        this.el.fullpage({
            onLeave:function(index,nextIndex,direction){
                     // debugger;  测试
                $(this).find(‘.h5_component‘).trigger(‘onLeave‘);
                },
            afterLoad:function(anchorLink,index){
                     // debugger;  测试
                $(this).find(‘.h5_component‘).trigger(‘onLoad‘);
                }
        });
        this.page[0].find(‘.h5_component‘).trigger(‘onLoad‘);
        this.el.show();
    }
    return this;
}
时间: 2024-10-23 12:48:14

慕课网实战—《用组件方式开发 Web App全站 》笔记二的相关文章

慕课网实战—《用组件方式开发 Web App全站 》笔记五-折线图组件开发

运用HTML5.CSS3.JS流行技术,采用组件式开发模式,开发Web App全站!技术大牛带你统统拿下不同类型的HTML5动态数据报告! <用组件方式开发 Web App全站 > 折现图绘制大致步骤 折线图画布 JavaScript CSS 折线图绘制网格线 // 水平网格线 100份 -> 10份 var step = 10; ctx.beginPath(); ctx.lineWidth = 1; ctx.strokeStyle = '#AAAAAA'; window.ctx = c

慕课网实战—《用组件方式开发 Web App全站 》笔记七-饼图和环图组件开发

运用HTML5.CSS3.JS流行技术,采用组件式开发模式,开发Web App全站!技术大牛带你统统拿下不同类型的HTML5动态数据报告! <用组件方式开发 Web App全站 > 饼图开发(绘制饼图准备) 饼图实现原理 饼图开发(绘制饼图) 代码 /* 饼图组件对象 */ var H5ComponentPie =function ( name, cfg ) { var component = new H5ComponentBase( name ,cfg ); // 绘制网格线 - 背景层 v

慕课网实战—《用组件方式开发 Web App全站 》笔记四-柱状图组件开发

运用HTML5.CSS3.JS流行技术,采用组件式开发模式,开发Web App全站!技术大牛带你统统拿下不同类型的HTML5动态数据报告! <用组件方式开发 Web App全站 > 柱图开发思路 水平柱图开发(HTML的DOM搭建) ???? ???? 水平柱图开发(CSS样式编写) /* 柱状组件样式 */ .h5_component_bar{ } .h5_component_bar .line{ height: 15px; font-size: 12px; line-height: 15p

CK2059-组件方式开发web app全站

随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到程序开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了.对于学习有困难不知道如何提升自己可以加扣:1225462853进行交流得到帮助,获取学习资料. 下载地址:http://pan.baidu.com/s/1jI05TPW HTML5+组件式开发 让全站移动开发更简单! 运用HTML5.CSS3.JS流行技术,采用组件式开发模式,开发Web App全站!技术大牛带

超多慕课网实战教程破解自学教程百度云盘分享-Python/Java/前端后端/小程序/运维测试/人工智能

以下课程,需要的可以加我微*信:hgh813210,备注你需要的课程 Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式百度云实战分享 前端成长必经之路 基于Storm构建实时热力分布项目实战 Spark Streaming实时流处理项目实战 以慕课网日志分析为例 进入大数据 Spark SQL 的世界 手工测试企业项目实践及面试提升 Webpack + React全栈工程架构项目实战精讲 深度学习之神经网络核心原理与算法 Android应用发展趋势必备武器 热修复与插件化

最新最全慕课网实战教程-百度云盘-破解视频

以下课程,需要的可以加我微*信:hgh813210,备注你需要的课程 Java企业级电商项目架构演进之路 Tomcat集群与Redis分布式百度云实战分享 前端成长必经之路 基于Storm构建实时热力分布项目实战 Spark Streaming实时流处理项目实战 以慕课网日志分析为例 进入大数据 Spark SQL 的世界 手工测试企业项目实践及面试提升 Webpack + React全栈工程架构项目实战精讲 深度学习之神经网络核心原理与算法 Android应用发展趋势必备武器 热修复与插件化

《开源框架那点事儿23》:采用TinyDB组件方式开发

采用TinyDB组件方式开发 步骤 Icon 前文介绍四则运算的流程编程开发时,说过流程编排在开发重复功能时,可以利用已有的组件库快速开发.对于开发人员而言只需要简单配置流程就可以完成工作了. 开发增删改查的组件接口.本来这部分很花费时间,如果采用组件复用的话,就可以实现一次开发,终生受益. 配置curd.beans.xml和tinydb.xml. 使用流程编辑器定制组件流程curd.pageflow. 修改页面文件:list.page和operate.page,使之符合流程方式调用. 修改布局

《开源框架那点事儿23》:採用TinyDB组件方式开发

採用TinyDB组件方式开发 步骤 Icon 前文介绍四则运算的流程编程开发时,说过流程编排在开发反复功能时.能够利用已有的组件库高速开发.对于开发者而言仅仅须要简单配置流程就能够完毕工作了.开发增删改查的组件接口.本来这部分非常花费时间,假设採用组件复用的话,就能够实现一次开发,终生受益. 配置curd.beans.xml和tinydb.xml. 使用流程编辑器定制组件流程curd.pageflow. 改动页面文件:list.page和operate.page.使之符合流程方式调用. 改动布局

[Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续)

前言 本篇是承接上一篇: [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端 在上一篇粗略地介绍了如何使用Top-Down的方式创建一个web service .  但是对于如何部署及调用,以及一些细节的部分基本上没有介绍. 应某些博友的要求, 也适逢自己有空, 接下来就详细介绍一下整个部分如何进行. 环境准备 JDK 肯定要安装了, 这个就不多讲了. 1. eclipse  3.5.2 对eclipse 版本的要求其实不是很严