慕课网实战—《用组件方式开发 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: 15px;
    margin-bottom: 15px;
}

.h5_component_bar .name{
    width: 60px;
    float: left;
    color: #000;
    text-align: center;
}

.h5_component_bar .rate{
    height: 15px;
    margin-left: 5px;
    float: left;
    position: relative;
}
.h5_component_bar .rate .bg{
    background-color: #99c0ff;
    width: 0%;
    height: 100%;
    position: absolute;
    left: 0;
    top: 0;
    border-radius: 3px;
}

.h5_component_bar .per{
    width: 20px;
    color: #99c0ff;
    margin-left: 5px;
    float: left;
    -webkit-opacity:0;
}

.h5_component_bar_load .rate .bg{
    -webkit-transition:all 1s .5s;
    width: 100%;
}

.h5_component_bar_leave .rate .bg{
    width: 0%;
}

.h5_component_bar_load .per{
    -webkit-transition:all 1s 1.5s;
    -webkit-opacity:1;
}
.h5_component_bar_leave .per{
    -webkit-opacity:0;
}

水平柱图开发(生长动画制作)

  • JavaScript
/* 柱图组件对象 */

var H5ComponentBar =function ( name, cfg ) {
  var component =  new H5ComponentBase( name ,cfg );

  $.each(cfg.data,function(idx,item){

    var line = $(‘<div class="line">‘);
    var name = $(‘<div class="name">‘);
    var rate = $(‘<div class="rate">‘);
    var per = $(‘<div class="per">‘);

    var width = item[1]*100 + ‘%‘;

    var  bgStyle = ‘‘;
    if( item[2] ){
      bgStyle = ‘style="background-color:‘+item[2]+‘"‘;
    }

    rate.html( ‘<div class="bg" ‘+bgStyle+‘></div>‘ );

    rate.css(‘width‘,width);

    name.text( item[0]);

    per.text(width);

    line.append( name ).append( rate ).append( per );

    component.append(line);
  });

  return component;
}
  • HTML
    <body>
        <!-- 用于开发测试 H5ComponentBar 对象(柱图组件) -->
        <div class="iphone">

        </div>

        <script type="text/javascript">
            var cfg = {
                type : ‘bar‘,

                width : 530,
                height : 600,
                data : [
                    [‘JavaScript‘,.4,‘#ff7676‘],
                    [‘HTML/CSS‘,.2],
                    [‘CSS3‘,.3],
                    [‘HTML5‘,.1],
                    [‘jQuery‘,.2],
                    [‘Bootstrap‘,.05],
                    [‘AngularJs‘,.09]
                ],
                css : {
                    top:100,
                    opacity:0
                },
                animateIn:{
                    opacity:1,
                    top:200,
                },
                animateOut:{
                    opacity:0,
                    top:100,
                },
                center:true,
            }
            var h5 = new H5ComponentBar(‘myBar‘,cfg);
            $(‘.iphone‘).append(h5);
            var leave = true;
            $(‘body‘).click(function(){
                leave = !leave;
                $(‘.h5_component‘).trigger( leave ? ‘onLeave‘ : ‘onLoad‘);

            });

        </script>

    </body>
  • 实现效果:

拓展:垂直柱图实现

  • 思路分析:

  • HTML
<script type="text/javascript" src="../js/lib/jquery.js"></script>
    <script type="text/javascript" src="../js/H5ComponentBase.js"></script>
    <link rel="stylesheet" type="text/css" href="../css/H5ComponentBase.css">

    <!-- 任务一:(1)引入需要继承的水平柱图对象js文件 -->
    <script type="text/javascript" src="../js/H5ComponentBar.js"></script>

    <!-- 引入柱图-垂直的资源 -->
    <script type="text/javascript" src="../js/H5ComponentBar_v.js"></script>
    <link rel="stylesheet" type="text/css" href="../css/H5ComponentBar_v.css">

    <body>
        <!-- 用于开发测试 H5ComponentBar_v 对象(垂直柱图组件) -->
        <div class="iphone">

        </div>

        <script type="text/javascript">

            var cfg = {

                // 任务一: (2)修正配置文件的组件类型(type)定义为 ? (注意:这个类型名称的定义关系到样式设置)
                type : ‘bar_v‘,

                width : 530,
                height : 400,
                data:[
                    [‘Js‘ , .4  ,‘#ff7676‘],
                    [‘CSS3‘ , .1 ],
                    [‘HTML5‘ , .2  ],
                    [‘PHP‘ , .05  ],
                    [‘jQuery‘ , .35 ]
                ],
                css : {
                    top:100,
                    opacity:0
                },
                animateIn:{
                    opacity:1,
                    top:200,
                },
                animateOut:{
                    opacity:0,
                    top:100,
                },
                center : true,
            }

            var h5 = new H5ComponentBar_v( ‘myBarComponent‘, cfg );
            $(‘.iphone‘).append(h5);

            var leave = true;
            $(‘body‘).click(function (){
                leave = !leave;
                $(‘.h5_component‘).trigger( leave ? ‘onLeave‘ : ‘onLoad‘ )
            }).click();

        </script>

    </body>
  • CSS
/* 垂直柱状组件样式 */
.h5_component_bar_v{
}

.h5_component_bar_v .line{
    float: left;
    height: 100%;
    font-size: 12px;
    position: relative;

}

.h5_component_bar_v .name{
    width: 100%;
    position: absolute;
    left: 0;
    height: 20px;
    line-height: 20px;
    bottom: -20px;
    text-align: center;
}

.h5_component_bar_v .rate{
    height: 100%;
    width: 15px;
    position: absolute;
    bottom: 0;
    left: 50%;
    margin-left: -8px;
}
.h5_component_bar_v .rate .bg{
    background-color: #99c0ff;
    width: 100%;
    height: 0%;
    position: absolute;
    left: 0;
    bottom: 0;
    border-radius: 3px;
}

.h5_component_bar_v .per{
    width: 100%;
    position: absolute;
    left: 0;
    /*任务三:(1)修正 百分比数字 的位置,使其保持在 .bg 的顶端*/
    top: -20px;
    height: 20px;
    line-height: 20px;
    text-align: center;
    color: #99c0ff;
    -webkit-opacity:0;
}

.h5_component_bar_v_load .rate .bg{
    -webkit-transition:all 1s .5s;
    height: 100%;
}

.h5_component_bar_v_leave .rate .bg{
    height: 0%;
}

.h5_component_bar_v_load .per{
    -webkit-transition:all 1s 1.5s;
    -webkit-opacity:1;
}
.h5_component_bar_v_leave .per{
    -webkit-opacity:0;
}
  • JavaScript
/* 垂直柱图组件对象 */

var H5ComponentBar_v =function ( name, cfg ) {

  //  任务二:(1) 完成 component 的初始化定义(补全 var component = ???)
  var component =  new H5ComponentBar( name ,cfg );

  //  任务二:(2) 完成 width 每个柱图中项目的宽度计算。(补全 var width = ???)
  var width = ( 100 / cfg.data.length ) >> 0 ;
  component.find(‘.line‘).width( width + ‘%‘);

  $.each( component.find(‘.rate‘) ,function(){
      var w = $(this).css(‘width‘);
      //  任务二:(3) 把进度区的宽度重设为高度,并且取消原来的宽度
      $(this).height(w).width(‘‘);
  });

  $.each( component.find(‘.per‘),function(){
      //  任务二:(4) 重新调整 DOM 结构,把百分比数值(.per)添加到 进度区 (.rate)中,和色块元素(.bg)同级。提示,获得 进度区 元素:$(this).prev()
      $(this).appendTo( $(this).prev() ) ;
  })

  return component;
}
  • 实现效果:

时间: 2024-12-25 21:07:20

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

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

运用HTML5.CSS3.JS流行技术,采用组件式开发模式,开发Web App全站!技术大牛带你统统拿下不同类型的HTML5动态数据报告! <用组件方式开发 Web App全站 > 项目JS类开发 静态页思路验证 jQuery全屏滚动插件fullPage.js ??使用参考:Fullpage入门指南 组件切换,入场,出场动画 ???? DOM事件循环传播-无限循环 ??使用return false;或者triggerHander()方法阻止事件向上传播. 相关代码 HTML <body&

慕课网实战—《用组件方式开发 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

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应用发展趋势必备武器 热修复与插件化

WEB前端学习笔记 四

接上一篇,web学习笔记 四,在此感谢您对此篇笔记的认可,但转发时请注明文章出自网知博学. 2.0  html的语法格式 html的标签要写在尖括号中 :<> 在在英文输入法状态下,按住shift键然后再按它左侧的尖括号就可了, 先学习一个简单的h1标签,是个标题标签,在html中这样写: <h1>我在h1标签中,我就是标题</h1> 那么h1标签中所包裹的文字,就标记成标题了.通过浏览器的解析后在页面上显示出来的效果就是字体加粗,加黑,和word中的标题性质一样! 大

使用 jQuery Mobile 与 HTML5 开发 Web App —— jQuery Mobile 事件详解

在前文<使用 jQuery Mobile 与 HTML5 开发 Web App —— jQuery Mobile 默认配置与事件基础>中,Kayo 对 jQuery Mobile 事件的基础作出了一些说明,建议在阅读本文前首先阅读前文,这里 Kayo 再引用前文的重要内容. “jQuery Mobile 在基于本地事件上,创建了一系列的自定义事件,大部分事件是基于触摸设备的使用情况开发的,当然这些事件对于桌面环境也会有适当的处理,开发者可以使用 bind() 函数绑定到需要的页面对象中. 值得

利用JQuery Mobile开发web app

什么是web app web app 是基于web的应用程序,是针对移动设备优化后的web站点,它具有 开发成本低——采用web开发技术,不需要考虑跨平台以及底层适配问题: 升级简单——不需要通知用户,在服务端更新文件即可: 维护方便——本质是站点,所以维护方式于web站点相同 等优点.开发web app使用的技术:前端 html5 + css + JavaScript / 后端 php | java | .net. 随着 html5 的发展,我们能使用越来越多的功能,比如:地理定位.本地数据储