最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實(shí)現(xiàn)拖拽進(jìn)度條

 更新時(shí)間:2021年03月01日 09:51:00   作者:前端菜雞日常  
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)拖拽進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了vue實(shí)現(xiàn)拖拽進(jìn)度條的具體代碼,供大家參考,具體內(nèi)容如下

組件代碼:

<template>
 <div>
  <div class="slider" ref="slider">
   <div class="process" :style="{ width }"></div>
   <div class="thunk" ref="trunk" :style="{ left }">
    <div class="block"></div>
    <div class="tips">
     <!-- <span>{{scale*100}}</span> -->
     <i class="fas fa-caret-down"></i>
    </div>
   </div>
  </div>
  <div>
   <button
    @click="
     () => {
      this.per++;
     }
    "
   >
    +</button
   >{{ per }}%<button
    @click="
     () => {
      if (this.per > 0) {
       this.per--;
      }
     }
    "
   >
    -
   </button>
  </div>
 </div>
</template>
<script>
/*
 * min 進(jìn)度條最小值
 * max 進(jìn)度條最大值
 * v-model 對當(dāng)前值進(jìn)行雙向綁定實(shí)時(shí)顯示拖拽進(jìn)度
 * */
export default {
 props: ["min", "max", "value"],
 data() {
  return {
   slider: null, //滾動條DOM元素
   thunk: null, //拖拽DOM元素
   per: this.value, //當(dāng)前值
  };
 },
 //渲染到頁面的時(shí)候
 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
    // 當(dāng)value變化的時(shí)候,會通過計(jì)算屬性修改left,width

    // 拖拽的時(shí)候獲取的新width
    var newWidth = e.clientX - disX + width;
    // 拖拽的時(shí)候得到新的百分比
    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);
    _this.$emit("input", _this.per);
   };
   document.onmouseup = function () {
    document.onmousemove = document.onmouseup = null;
   };
   return false;
  };
 },
 computed: {
  // 設(shè)置一個(gè)百分比,提供計(jì)算slider進(jìn)度寬度和trunk的left值
  // 對應(yīng)公式為 當(dāng)前值-最小值/最大值-最小值 = slider進(jìn)度width / slider總width
  // trunk left = slider進(jìn)度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 {
 user-select: none;
 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: #81b159;
}
.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: 0.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: 0.6;
}
</style>

調(diào)用:

<template>
 <slider :min="0" :max="100" v-model="per"></slider>
</template>

<script>
import slider from "@/components/slider";
export default {
 data() {
  return {};
 },
 computed: {
  per: {
   get() {
    return 0;
   },
   set(val) {
    console.log(val);
   },
  },
 },
 components: { slider },
 mounted() {},
 methods: {},
};
</script>

<style >
</style>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue中使用echarts實(shí)現(xiàn)繪制人體動態(tài)圖

    Vue中使用echarts實(shí)現(xiàn)繪制人體動態(tài)圖

    這篇文章主要為大家詳細(xì)介紹了Vue中如何使用echarts實(shí)現(xiàn)繪制人體動態(tài)圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • vue2.0實(shí)現(xiàn)分頁組件的實(shí)例代碼

    vue2.0實(shí)現(xiàn)分頁組件的實(shí)例代碼

    這篇文章主要介紹了vue2.0實(shí)現(xiàn)分頁組件的實(shí)例代碼,需要的朋友可以參考下
    2017-06-06
  • vue 項(xiàng)目打包通過命令修改 vue-router 模式 修改 API 接口前綴

    vue 項(xiàng)目打包通過命令修改 vue-router 模式 修改 API 接口前綴

    這篇文章主要介紹了vue 項(xiàng)目打包通過命令修改 vue-router 模式 修改 API 接口前綴的相關(guān)知識,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-06-06
  • Vue.js?前端項(xiàng)目在常見?Web?服務(wù)器上的部署配置過程

    Vue.js?前端項(xiàng)目在常見?Web?服務(wù)器上的部署配置過程

    Web服務(wù)器支持多種編程語言,如 PHP,JavaScript,Ruby,Python 等,并且支持動態(tài)生成 Web 頁面,這篇文章主要介紹了Vue.js?前端項(xiàng)目在常見?Web?服務(wù)器上的部署配置,需要的朋友可以參考下
    2023-02-02
  • vue中@click如何綁定多個(gè)事件

    vue中@click如何綁定多個(gè)事件

    這篇文章主要介紹了vue中@click如何綁定多個(gè)事件問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 關(guān)于在Vue中import和require的用法分析

    關(guān)于在Vue中import和require的用法分析

    在Vue項(xiàng)目中,我們經(jīng)常需要引入外部的模塊或文件,這時(shí)候就會用到import和require這兩個(gè)關(guān)鍵字,本文將詳細(xì)分析它們的用法,并提供具體的代碼實(shí)例和解釋,需要的朋友可以參考下
    2023-06-06
  • Vue組件中prop屬性使用說明實(shí)例代碼詳解

    Vue組件中prop屬性使用說明實(shí)例代碼詳解

    這篇文章主要介紹了Vue組件中prop屬性使用說明,非常不錯具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • vue 子組件watch監(jiān)聽不到prop的解決

    vue 子組件watch監(jiān)聽不到prop的解決

    這篇文章主要介紹了vue 子組件watch監(jiān)聽不到prop的解決,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue3使用video.js播放m3u8格式視頻的操作指南

    vue3使用video.js播放m3u8格式視頻的操作指南

    有時(shí)候我們需要播放 m3u8 格式的視頻,或者實(shí)現(xiàn)視頻播放器更多定制化需求,HTML 的 video 元素?zé)o法實(shí)現(xiàn)這些需求,這時(shí)候可以考慮使用 Video.js,本文給大家介紹了vue3使用video.js播放m3u8格式視頻的操作指南,需要的朋友可以參考下
    2024-07-07
  • 在vue中:style 的使用方式匯總

    在vue中:style 的使用方式匯總

    在Vue開發(fā)中使用:style綁定樣式是常見需求,應(yīng)注意:class與:style的配合使用,錯誤的使用可能導(dǎo)致樣式不生效,正確的方法是使用數(shù)組綁定多個(gè)樣式,這些技巧有助于提高開發(fā)效率和保持代碼整潔,感興趣的朋友跟隨小編一起看看吧
    2024-09-09

最新評論

中阳县| 古田县| 仙居县| 桦甸市| 山丹县| 连城县| 新竹县| 鹰潭市| 临沭县| 民勤县| 乌拉特中旗| 淮南市| 嵩明县| 陇西县| 东乌珠穆沁旗| 容城县| 乌兰察布市| 宁武县| 教育| 临城县| 体育| 西宁市| 留坝县| 普定县| 遂溪县| 宾川县| 无棣县| 六安市| 肥西县| 靖远县| 新竹县| 扶风县| 高雄市| 桂东县| 大港区| 华容县| 明溪县| 安平县| 洪湖市| 正宁县| 清苑县|