当前位置: 首页 > news >正文

官方网站建设报价联通物联网服务运营平台

官方网站建设报价,联通物联网服务运营平台,手机网速慢怎么办,营销型网站建设 课程基于JS简单甘特图 基于JS简单甘特图 先来看一下效果吧#xff0c;这里的需求是从早上的5点为开始时间#xff0c;到第二天到凌晨5点 前期准备 其实网上有很多甘特图的实现方式#xff0c;但是他们都只能具象到天#xff0c;不能具体到某个时间点#xff0c;而且每一个…基于JS简单甘特图 基于JS简单甘特图 先来看一下效果吧这里的需求是从早上的5点为开始时间到第二天到凌晨5点 前期准备 其实网上有很多甘特图的实现方式但是他们都只能具象到天不能具体到某个时间点而且每一个具体的时间段中的描述是不能自定义的所以准备自己写一下了。 实现逻辑 我们可以先模拟一些demo数据这里面最为主要的数据为每个时间点我们要实现上面的效果需要对每个时间点进行拆分。 var demoData: [{ carNum: 川A09384,innerData: [{start: 2019/1/21 6:23,end: 2019/1/21 7:45,value: A站点,bg: green},{start: 2019/1/21 12:23,end: 2019/1/21 16:45,value: B站点,bg: yellow},{start: 2019/1/21 20:00,end: 2019/1/21 23:25,value: C站点,bg: blue}]},{ carNum: 川A04384,innerData: [{start: 2019/1/21 5:23,end: 2019/1/21 6:05,value: A站点,bg: blue},{start: 2019/1/21 10:23,end: 2019/1/21 13:45,value: B站点,bg: green},{start: 2019/1/21 21:00,end: 2019/1/22 3:35,value: C站点,bg: yellow},]}]首先创建时间 // 创建时间 createHours: function(){var startHour 5;var endHour 11;var html ;for (let i startHour; i 24; i) {html div${i 10 ? 0${i} : i}:00/div}for (let i 0; i endHour; i) {html div${i 10 ? 0${i} : i}:00/div}document.getElementById(hour).innerHTML html; },根据数据绘制甘特图 我们将 1H 60px这样去定宽即 1px 1M 绘制第一个时间段 start:‘2019/1/21 6:23’; end: ‘2019/1/21 7:45’; var start new Date(2019/1/21 6:23),end new Date(2019/1/21 7:45),start_h start.getHours(), // 开始时间start_m start.getMinutes(), // 开始分钟 end_h end.getHours(), // 结束时间end_m end.getMinutes(), // 结束分钟left_offset 0;_left_offset 0;width ;// 获取时间段甘特图的开始位置我们从5点开始,所以-5left_offset (start_h - 5) * 60 start_m;// 获取每一段甘特图的宽度// 先计算出结束时间的位置然后在减去开始时间的左边距width ((end_h - 5) * 60 end_m) - left_offset;// 使用现有的左边距减去前一个时间的左边距_left_offset left_offset - allLeft;// 因为存在多个时间段所以在绘制下一个时间断时left_offset// 使用allLeft存储上一个时间断距离左边的距离。allLeft left_offset width;// 将其添加到DOM中html span stylewidth:${width}px;margin-left:${_left_offset}px;${innerData[i].value}/span;首先需要找到时间段中开始时间的开始位置 计算出时间的width遵循1px 1M的规则。 在设置margin-left时记得减去上一个时间段甘特图的margin-left重点。 没绘制一条后存储其margin-left方便下一个时间段使用。 关于跨天怎么计算 当我们的时间段是属于跨天的怎么计算他的开始和结束位置以及他的宽度呢直接贴代码了哈 createData: function() { var data this.demoData; var today new Date().getDate(); // 今天的日期 for (let m 0; m data.length; m) {var innerData data[m].innerData;var html ;var allLeft 0;for (let i 0; i innerData.length; i) {var start new Date(innerData[i].start),end new Date(innerData[i].end),start_d start.getDate(),end_d end.getDate(),start_h start.getHours(),start_m start.getMinutes(),end_h end.getHours(),end_m end.getMinutes(),left_offset 0;_left_offset 0;width ;if (start_d (today 1)) {left_offset ((23 - 5) * 60) ((start_h 1) * 60) start_m;_left_offset left_offset - allLeft;width (((23 (end_h 1)) - 5) * 60 end_m) - left_offset;} else if (end_d (today 1)) {left_offset ((start_h - 5) * 60) start_m;_left_offset left_offset - allLeft;width (((24 end_h) - 5) * 60 end_m) - left_offset;} else {left_offset (start_h - 5) * 60 start_m;_left_offset left_offset - allLeft;width ((end_h - 5) * 60 end_m) - left_offset;}allLeft left_offset width;html span stylewidth:${width}px;margin-left:${_left_offset}px;background:${innerData[i].bg}${innerData[i].value}/span;}document.getElementById(container).innerHTML div classgantt-item ${html}/div; } }这个地方就不详细解说了有什么不懂的地方欢迎大家留言。代码很简洁主要用于实现一个比较简单的甘特图。不需要下载什么插件之类的。 这里把代码贴出来哈大家可以一起交流或许你有更好的实现方式呢。 htmlheadtitle测试demo/titlestyle typetext/css#container {width: 100%;overflow: scroll;height: calc(100vh - 0px);width: 1900px;}.carNum {float:left;width:100px;text-align: center;}#hour {width: 1800px;overflow: scroll;}#hour div{width: 60px;float: left;border-left: 1px solid #ddd;background: #ccc;text-align: center;box-sizing: border-box;}.gantt-item {width: 1800px;}.gantt-item:hover{background:rgba(0,0,0,.1);}.gantt-item span {height: 20px;;display: inline-block;margin: 5px 0px;font-size: 12px;text-align: center;color:#fff;background:green;}.nowTime {border: 1px solid green;display: inline-block;height: 500px;height: calc(100vh - 0px);position: absolute;top: 0px;}/style/headbodydiv idcontainerdiv classcarNumdiv stylebackground:#ccc;车牌号/divdiv styleline-height:30px;川A09384/divdiv styleline-height:30px;川A09384/divdiv styleline-height:30px;川A09384/div/divdiv idhour stylefloat:righ/div/div/bodyscript typetext/javascriptvar gantt {demoData: [{ innerData: [{start: 2019/1/21 6:23,end: 2019/1/21 7:45,value: A站点,bg: green},{start: 2019/1/21 12:23,end: 2019/1/21 16:45,value: B站点,bg: yellow},{start: 2019/1/21 20:00,end: 2019/1/21 23:25,value: C站点,bg: blue}]},{ innerData: [{start: 2019/1/21 5:23,end: 2019/1/21 6:05,value: A站点,bg: blue},{start: 2019/1/21 10:23,end: 2019/1/21 13:45,value: B站点,bg: green},{start: 2019/1/21 21:00,end: 2019/1/22 3:35,value: C站点,bg: yellow},]},{ innerData: [{start: 2019/1/21 8:23,end: 2019/1/21 10:05,value: A站点,bg: blue},{start: 2019/1/21 13:23,end: 2019/1/21 14:45,value: B站点,bg: green},{start: 2019/1/21 22:00,end: 2019/1/22 3:35,value: C站点,bg: red},{start: 2019/1/22 4:00,end: 2019/1/22 7:35,value: D站点,bg: green},]},],// 初始化init: function() {this.showNowTime();this.createHours();this.createData();},// 创建时间createHours: function(){var startHour 5;var endHour 11;var html ;for (let i startHour; i 24; i) {html div${i 10 ? 0${i} : i}:00/div}for (let i 0; i endHour; i) {html div${i 10 ? 0${i} : i}:00/div}document.getElementById(hour).innerHTML html;},// 当前时间线showNowTime: function() {var date new Date();var h date.getHours(),m date.getMinutes();var offset (h - 5) * 60 m;var html div classnowTime stylemargin-left:${offset}px/div;document.getElementById(container).innerHTML div classgantt-item${html}/div;},createData: function() {var data this.demoData;var today new Date().getDate(); // 今天的日期for (let m 0; m data.length; m) {var innerData data[m].innerData;var html ;var allLeft 0;for (let i 0; i innerData.length; i) {var start new Date(innerData[i].start),end new Date(innerData[i].end),start_d start.getDate(),end_d end.getDate(),start_h start.getHours(),start_m start.getMinutes(),end_h end.getHours(),end_m end.getMinutes(),left_offset 0;_left_offset 0;width ;if (start_d (today 1)) {left_offset ((23 - 5) * 60) ((start_h 1) * 60) start_m;_left_offset left_offset - allLeft;width (((23 (end_h 1)) - 5) * 60 end_m) - left_offset;} else if (end_d (today 1)) {left_offset ((start_h - 5) * 60) start_m;_left_offset left_offset - allLeft;width (((24 end_h) - 5) * 60 end_m) - left_offset;} else {left_offset (start_h - 5) * 60 start_m;_left_offset left_offset - allLeft;width ((end_h - 5) * 60 end_m) - left_offset;}allLeft left_offset width;html span stylewidth:${width}px;margin-left:${_left_offset}px;${innerData[i].value}/span;}document.getElementById(container).innerHTML div classgantt-item ${html}/div;}}}gantt.init();/script /html
http://www.w-s-a.com/news/818554/

相关文章:

  • 泰州网站整站优化惠州做网站多少钱
  • 做博客网站的php代码一建论坛建工教育网
  • 邢台网站制作费用单页营销网站后台
  • 红色网站建设的比较好的高校用vs2010做购物网站
  • 网站域名备案号查询网页设计实验报告总结模板
  • 什么软件 做短视频网站好大型论坛网站建设
  • 视频网站用什么cms网络运营与维护主要做什么
  • 设计网站主页要多少钱赣州制作网站百度
  • 什么叫高端网站定制网站收录大幅度下降
  • 汝城县网站建设公司aspx网站实例
  • 专业微网站营销diywap手机微网站内容管理系统
  • 盗版做的最好的网站温州logo设计公司
  • 网站建设 中山南充微网站建设
  • 企业网站更新什么内容免费设计软件下载
  • 夏天做哪些网站能致富做网站怎么每天更新内容
  • 个人网站的设计与开发网站建设流程中哪些部分比较重要
  • 招聘网站如何建设中国计算机网络公司排名
  • 工信部网站备案规定厦门在线制作网站
  • 商丘网站公司智联招聘手机app下载
  • 江西专业南昌网站建设中国专业的网站建设
  • 物流企业网站建设方案招标网站有哪些
  • 网站建设服务中企动力建筑工程网络进度计划备注填写范例
  • 电子商务网站开发与建设试卷php网站开发专业
  • 运城网站制作路90江苏省网站备案系统
  • 唐山做企业网站实体门店管理系统
  • 网站优化推广教程深圳网站建设世纪前线
  • 网站建设专家哪家好兰州网络推广执行
  • 广东住房和城乡建设厅网站王芃增加网站收录
  • 北京网站建设手机app电子商务网红营销的劣势
  • 网站 营销型wordpress获取4条文章标题