vue进度条显示进度,vue 进度条

  vue进度条显示进度,vue 进度条

  这篇文章主要为大家详细介绍了某视频剪辑软件视频时间进度条组件的使用方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  本文实例为大家分享了某视频剪辑软件视频时间进度条组件的使用方法,供大家参考,具体内容如下

  有些视频是以视频流的形式进行渲染的,没有视频滚动条,所以就写了24小时的时间组件

  

实现思路:

  1、24小时的时间刻度线总宽度为12960像素

  2、点击24小时线的某一点,获取这一点离左侧原点的距离(使用数字正射影像图元素layerX和获取综合判断)

  3、计算点击时线段的占比比率

  4、每天的时间是86400000毫秒

  5、占比比率乘以86400000就是获取的你点击的时间

  代码如下:

  模板

  div class=" time-main "

  div class= center-content ref= center ref

  差异

  ref=timeRef

  时间线

  @点击。capture= click timeline($ event)

  模板v-for=(item,i) in timeArr

  差异

  :key=a i

   class=基线

  :style={ left: 90 * i px ,height: 14 px }

  /div

  div:key= I class= base-title :style= { left:4 90 * I px }

  {{ item }}

  /div

  差异

  :key=b i

   class=基线

  :style={ left: 18 90 * i px }

  /div

  差异

  :key=c i

   class=基线

  :style={ left: 36 90 * i px }

  /div

  差异

  :key=d i

   class=基线

  :style={ left: 54 90 * i px }

  /div

  差异

  :key=e i

   class=基线

  :style={ left: 72 90 * i px }

  /div

  /模板

  /div

  /div

   BTN-内容

  div class= left-arow @ click= clickRightMove

  我是El-icon-向左箭头/i

  /div

  部门{{昨天日期时间格式日期时间} }/分区

  div class= right-arow @ click= click left move

  i class=el-icon-arrow-right/i

  /div

  /div

  /div

  /模板

  脚本

  导入{

  比较一下,

  exactDiv,

  exactMul,

  exactSub,

  exactAdd,

  十进制格式,

  }来自@/util/util。js’;

  导出默认值{

  名称:"时间线",

  //注入:[screenNum],

  //观察:{

  //screenNum: {

  //处理程序(瓦尔){

  //console.log(切换了val==,val);

  //},

  //},

  //},

  道具:{

  日期:{

  类型:数组,

  },

  },

  data() {

  返回{

  clickCnt: 0,

  leftMoveWidth: 0,

  endTimeFlag: false,

  timeArr: [

  00:00,

  00:10,

  00:20,

  00:30,

  00:40,

  00:50,

  01:00,

  01:10,

  01:20,

  01:30,

  01:40,

  01:50,

  02:00,

  02:10,

  02:20,

  02:30,

  02:40,

  02:50,

  03:00,

  03:10,

  03:20,

  03:30,

  03:40,

  03:50,

  04:00,

  04:10,

  04:20,

  04:30,

  04:40,

  04:50,

  05:00,

  05:10,

  05:20,

  05:30,

  05:40,

  05:60,

  06:00,

  06:10,

  06:20,

  06:30,

  06:40,

  06:50,

  07:00,

  07:10,

  07:20,

  07:30,

  07:40,

  07:50,

  08:00,

  08:10,

  08:20,

  08:30,

  08:40,

  08:50,

  09:00,

  09:10,

  09:20,

  09:30,

  09:40,

  09:50,

  10:00,

  10:10,

  10:20,

  10:30,

  10:40,

  10:50,

  11:00,

  11:10,

  11:20,

  11:30,

  11:40,

  11:50,

  12:00,

  12:10,

  12:20,

  12:30,

  12:40,

  12:50,

  13:00,

  13:10,

  13:20,

  13:30,

  13:40,

  13:50,

  14:00,

  14:10,

  14:20,

  14:30,

  14:40,

  14:50,

  15:00,

  15:10,

  15:20,

  15:30,

  15:40,

  15:50,

  16:00,

  16:10,

  16:20,

  16:30,

  16:40,

  16:50,

  17:00,

  17:10,

  17:20,

  17:30,

  17:40,

  17:50,

  18:00,

  18:10,

  18:20,

  18:30,

  18:40,

  18:50,

  19:00,

  19:10,

  19:20,

  19:30,

  19:40,

  19:50,

  20:00,

  20:10,

  20:20,

  20:30,

  20:40,

  20:50,

  21:00,

  21:10,

  21:20,

  21:30,

  21:40,

  21:50,

  22:00,

  22:10,

  22:20,

  22:30,

  22:40,

  22:50,

  23:00,

  23:10,

  23:20,

  23:30,

  23:40,

  23:50,

  ],

  开关宽度编号:540,

  昨天时间:0,

  clickTimeVal: 0,

  };

  },

  已安装(){

  //这个。handlewidthfn();

  这个。dealscrollmove();

  //console.log(mounted==,这个。日期arr);

  },

  方法:{

  dealScrollMove() {

  如果(这个参考文献。中心参考。offsetwidth=540){

  这个。开关宽度num=540

  } else if(这个参考文献。中心参考。offsetwidth=360){

  这个。开关宽度num=360

  } else if(这个参考文献。中心参考。offsetwidth=270){

  这个。开关宽度num=270

  } else if(这个参考文献。中心参考。offsetwidth=180){

  这个。开关宽度num=180

  }否则{

  这个。开关宽度num=90

  }

  设时间0=新日期(新日期()。toLocaleDateString()).getTime();//获取当日0点时间戳

  设时间1=新日期()。getTime();//当前时间

  设sumTimeWidth=12960

  设dayTimeSum=86400000//一天的毫秒数

  //if (this.clickTimeVal) {

  //时间1=这个。点击时间值;

  //console.log(进==,时间1);

  //console.log(进=2=,这个。点击时间值);

  //}

  if (this.dateArr.length 0) {

  时间1=这个。日期arr[0];

  time0=exactSub(time0,日时间总和);

  console.log(进==,这个。日期arr);

  console.log(进=2=,这个。点击时间值);

  }

  设timeSub=exactSub(time1,time 0);

  //console.log(timeSub=,timeSub);

  if (this.dateArr.length 0) {

  这个。昨天时间=这个。日期arr[0];

  这个。点击时间值=这个。日期arr[0];

  }否则{

  这个。yesterdaytime=exact sub(time 0,day time sum);

  }

  设dayPer=exactDiv(timeSub,day time sum);//一天的百分比

  console.log(exactDiv(timeSub,dayTimeSum)=),this。昨天时间);

  //console.log(dayPer==,day per);

  设滚动宽度=精确倍数(总时间宽度,每天);

  //控制台。log(滚动宽度=333333=,滚动宽度);

  //控制台。log(滚动宽度=33

  //除以开关宽度数量获取点击的个数

  设switchClickCnt=exact div(滚动宽度,this。开关宽度数);

  //控制台。log( switchClickCnt==,switchClickCnt);

  这个。click CNT=parse int(switchClickCnt)-1;

  这个。clickleftmove();

  //console.log(点击的数量1===,这个。点击CNT);

  },

  handleWidthFn() {

  这个. nextTick(()={

  如果(这个参考文献。中心参考。offsetwidth=540){

  这个。开关宽度num=540

  } else if(这个参考文献。中心参考。offsetwidth=360){

  这个。开关宽度num=360

  } else if(这个参考文献。中心参考。offsetwidth=270){

  这个。开关宽度num=270

  } else if(这个参考文献。中心参考。offsetwidth=180){

  这个。开关宽度num=180

  }否则{

  这个。开关宽度num=90

  }

  });

  },

  单击时间线(事件){

  //console.log(event==,event);

  //console.log(event=layerX==,事件。layerX);

  //控制台。日志( event=layerX=target==,事件。目标。向左偏移);

  设sumTimeWidth=12960

  设dayTimeSum=86400000//一天的毫秒数

  设时间0=新日期(新日期()。toLocaleDateString()).getTime();//获取当日0点时间戳

  设yesterdayTime=exactSub(time0,day time sum);

  设时间点num=0;

  //className:时间线

  如果(事件。目标。class name== time-line ){

  时间点编号=事件。layerx

  }否则{

  时间点编号=精确添加(事件。layerx,事件。目标。向左偏移);

  }

  设timemove=exactAdd(timePointNum,this。leftmovewidth);

  let timePer=exactDiv(timemove,sum时间宽度);//点击的百分比

  设clickTimeNum=exact mul(一天时间总和,每分钟时间);//

  设true time num=exact add(点击时间num,yesterdayTime);//时间

  设fomretTime=parse int(true time num);

  this.clickTimeVal=新日期(时间).getTime();

  这个发出(

  handleClickTimeLineFn ,

  新日期(时间)

  );

  //console.log(trueTimeNum==,true time num);

  //console.log(fomretTime==,fomretTime);

  //console.log(new Date==,new Date(fomretTime));

  },

  单击左移动(){

  //console.log(点击的数量==2=,这个。点击CNT);

  这个。handlewidthfn();

  //console.log(this .$refs.centerRef==,这个参考文献。中心参考);

  //控制台。log( center ref=offsetWidth=,this .$参考文献。中心参考。offsetwidth);

  //控制台。log( center ref=client width=,this .$参考文献。中心参考。客户端宽度);

  if (this.endTimeFlag) {

  返回;

  }

  this.clickCnt

  这个。leftmovewidth=this。点击CNT * this。开关宽度数字;

  设让宽度=这个。点击CNT * this。开关宽度数字“px”;

  //控制台。日志(这个。点击CNT);

  //console.log(this .$refs.timeRef==,这个参考文献。时间参考);

  if (this.leftMoveWidth this .$参考文献。中心参考。offsetwidth 12960){

  letWidth=12960 -这个参考文献。中心参考。offsetwidth“px”;

  这个。结束时间标志=真;

  }否则{

  这个。结束时间标志=假;

  }

  这个参考文献。时间参考。风格。transform= translate x(- lett width );

  这个参考文献。时间参考。风格。过渡=全0.5s ;

  },

  单击右键移动(){

  这个。handlewidthfn();

  if (this.clickCnt 0) {

  这个。点击CNT-;

  }

  这个。leftmovewidth=this。点击CNT * this。开关宽度数字;

  设让宽度=这个。点击CNT * this。开关宽度数字“px”;

  //控制台。日志(这个。点击CNT);

  //console.log(this .$refs.timeRef==,这个参考文献。时间参考);

  if (this.endTimeFlag) {

  这个。结束时间标志=假;

  }

  这个参考文献。时间参考。风格。transform= translate x(- lett width );

  这个参考文献。时间参考。风格。过渡=全0.5s ;

  },

  },

  };

  /脚本

  样式范围的语言=scss 。主要时间{

  位置:相对;

  宽度:100%;

  边距:自动;

  溢出:隐藏;

  //display:flex;

  //边框:1px纯红;

  }。中心-内容{

  宽度:calc(100%-30px);

  左边距:30px

  溢出:隐藏;

  }。BTN-内容{

  宽度:calc(100%-30px);

  左边距:30px

  显示器:flex

  justify-content:space-between;

  颜色:# fff

  }。时间线

  位置:相对;

  字体大小:12px

  /*左:-7357.15 px;*/

  //left:30px;

  高度:19px

  宽度:12960像素

  底部边框:1px纯色rgb(90,90,90);

  边距:0px

  填充:0px

  转场:左0.9秒缓0s;

  颜色:# fff

  z指数:10;

  :悬停{

  光标:指针;

  }。基本标题{

  位置:绝对;

  左:4px

  底部:3px

  颜色:# fff

  z索引:-1;

  }

  }。基线{

  位置:绝对;

  宽度:1px

  高度:4px

  底部:0px

  背景色:rgb(90,90,90);

  z指数:9;

  }。向左箭头{

  //位置:绝对;

  //左:2%;

  颜色:# fff

  字体大小:20px

  }。右箭头{

  //位置:绝对;

  //右:2%;

  颜色:# fff

  字体大小:20px

  }

  /风格

  以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: