慕课网实战—《用组件方式开发 Web App全站 》笔记二
来源:互联网 发布:加购软件 编辑:程序博客网 时间:2024/05/16 06:14
运用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;}
0 0
- 慕课网实战—《用组件方式开发 Web App全站 》笔记二
- 慕课网实战—《用组件方式开发 Web App全站 》笔记三 -散点图组件开发
- 慕课网实战—《用组件方式开发 Web App全站 》笔记四-柱状图组件开发
- 慕课网实战—《用组件方式开发 Web App全站 》笔记一
- 慕课网实战—《用组件方式开发 Web App全站 》笔记五-折线图组件开发
- 慕课网实战—《用组件方式开发 Web App全站 》笔记六-雷达图组件开发
- 慕课网实战—《用组件方式开发 Web App全站 》笔记七-饼图和环图组件开发
- 组件方式开发 Web App全站框架源码
- 组件方式开发 Web App全站-1
- 组件方式开发 Web App全站-3
- 组件方式开发 Web App全站-4- 页面切换
- 组件方式开发 Web App全站-8-总项目
- 走近大前端:组件方式开发web app全站
- 组件方式开发 Web App全站-6-图表组件-散点图组件开发
- 组件方式开发 Web App全站-7-图表组件-柱状图组件开发
- 组件方式开发 Web App全站-5-开发基本图文组件H5ComponentBase
- 用组件方式开发 Web App全站之通用图文组件类-H5ComponentBase(接受 onLoad、onLeave事件)
- 组件方式开发 Web App全站-5-开发H5对象
- 异步消息的传递-回调机制
- 虚析构函数
- html5---拖放demo----拖放图片
- Hello World
- windows 32 eclipse 远程hadoop开发环境搭建
- 慕课网实战—《用组件方式开发 Web App全站 》笔记二
- mysql索引详解
- Codeforces 427C Checkposts (强连通分量 tarjan模板)
- 朴素贝叶斯与贝叶斯网络
- 程序员的3年之痒改变的不止薪水(二)
- 关于动态数据
- Valid Palindrome
- ListIterator接口
- 安装Genymotion + Virtualbox 出现 “不能为虚拟电脑打开一个新任务 E_FAIL(0x80004005)”错误的解决办法