中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue中怎么實現一個拖拽進度條滑動組件

發布時間:2021-06-17 17:00:35 來源:億速云 閱讀:1043 作者:Leah 欄目:web開發

這期內容當中小編將會給大家帶來有關vue中怎么實現一個拖拽進度條滑動組件,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

調用組件如下:

<slider :min=0 :max=100 v-model = "per"></slider>
<template>
 <div class="slider" ref="slider">
 <div class="process" :></div>
 <div class="thunk" ref="trunk" :>
  <div class="block"></div>
  <div class="tips">
  <span>{{scale*100}}</span>
  <i class="fas fa-caret-down" ></i>
 </div>
 </div>
 </div>
</template>
<script>
 /*
 * min 進度條最小值
 * max 進度條最大值
 * v-model 對當前值進行雙向綁定實時顯示拖拽進度
 * */
 export default{
 props:['min','max','value'],
 data(){
 return{
  slider:null, //滾動條DOM元素
  thunk:null,  //拖拽DOM元素
  per:this.value, //當前值
 }
 },
 //渲染到頁面的時候
 mounted () {
 this.slider = this.$refs.slider;
 this.thunk = this.$refs.trunk;
 var _this = this;
 this.thunk.onmousedown = function (e) {
  var width = parseInt(_this.width);
  var disX = e.clientX;
  document.onmousemove = function(e){
  // value, left, width
  // 當value變化的時候,會通過計算屬性修改left,width

  // 拖拽的時候獲取的新width
  var newWidth = e.clientX - disX + width;
  // 拖拽的時候得到新的百分比
  var scale = newWidth / _this.slider.offsetWidth;
  _this.per = Math.ceil((_this.max - _this.min) * scale + _this.min);
  _this.per = Math.max(_this.per,_this.min);
  _this.per = Math.min(_this.per,_this.max);
  }
  document.onmouseup = function(){
  document.onmousemove = document.onmouseup = null;
  }
  return false;
 }
 },
 computed:{
 // 設置一個百分比,提供計算slider進度寬度和trunk的left值
 // 對應公式為 當前值-最小值/最大值-最小值 = slider進度width / slider總width
 // trunk left = slider進度width + trunk寬度/2
 scale(){
  return (this.per - this.min) / (this.max - this.min);
 },
 width(){
  if(this.slider){
  return this.slider.offsetWidth * this.scale + 'px';
  }else{
  return 0 + 'px'
  }
 },
 left(){
  if(this.slider){
  return this.slider.offsetWidth * this.scale - this.thunk.offsetWidth/2 + 'px';
  }else{
  return 0 + 'px'
  }
 }
 },
 }
</script>
<style>
 .box{margin:100px auto 0;width:80%}
 .clear:after{content:'';display:block;clear:both}
 .slider{position:relative;margin:20px 0;width:400px;height:10px;background:#e4e7ed;border-radius:5px;cursor:pointer}
 .slider .process{position:absolute;left:0;top:0;width:112px;height:10px;border-radius:5px;background:#409eff}
 .slider .thunk{position:absolute;left:100px;top:-7px;width:20px;height:20px}
 .slider .block{width:20px;height:20px;border-radius:50%;border:2px solid #409eff;background:rgba(255,255,255,1);transition:.2s all}
 .slider .tips{position:absolute;left:-7px;bottom:30px;min-width:15px;text-align:center;padding:4px 8px;background:#000;border-radius:5px;height:24px;color:#fff}
 .slider .tips i{position:absolute;margin-left:-5px;left:50%;bottom:-9px;font-size:16px;color:#000}
 .slider .block:hover{transform:scale(1.1);opacity:.6}
</style>

上述就是小編為大家分享的vue中怎么實現一個拖拽進度條滑動組件了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

瑞金市| 鸡东县| 江永县| 昆山市| 宜州市| 册亨县| 柞水县| 滦平县| 宜兴市| 丹东市| 三原县| 九龙县| 兴安县| 闵行区| 阜新市| 克拉玛依市| 浦江县| 巩留县| 四川省| 松潘县| 长乐市| 当雄县| 枣庄市| 临汾市| 南部县| 汉沽区| 临桂县| 包头市| 云梦县| 杭锦旗| 建阳市| 清远市| 吴旗县| 精河县| 原平市| 安陆市| 仁化县| 布尔津县| 玛多县| 辽阳市| 大连市|