色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

vue滑動進度圖

傅智翔1年前8瀏覽0評論

滑動進度圖是一種常用的數據可視化方式,在數據可視化中發揮了重要作用,可以用于展示各種數據的變化趨勢和關系。

Vue是一個前端框架,其具有非常靈活和易于擴展的特點,非常適合構建交互式的UI組件。在Vue中,可以很容易地實現滑動進度圖,為用戶提供一個清晰的數據展示界面。

//Vue代碼實現
<template>
<div class="slide-progress">
<div class="slide-progress-bar" :style="{ width: progress + '%' }"></div>
<div class="slide-progress-thumb" :style="{ left: progress + '%' }"></div>
</div>
</template>
<script>
export default {
name: 'SlideProgress',
props: {
value: { type: Number, default: 0 }
},
data() {
return {
progress: 0
}
},
watch: {
value(newValue) {
this.setProgress(newValue);
}
},
mounted() {
this.setProgress(this.value);
this.$el.addEventListener('mousedown', this.handleMouseDown);
document.addEventListener('mouseup', this.handleMouseUp);
},
beforeDestroy() {
this.$el.removeEventListener('mousedown', this.handleMouseDown);
document.removeEventListener('mouseup', this.handleMouseUp);
},
methods: {
setProgress(value) {
const limitValue = Math.max(0, Math.min(value, 100));
this.progress = limitValue;
},
handleMouseDown(e) {
const startX = e.pageX;
const startProgress = this.progress;
document.addEventListener('mousemove', this.handleMouseMove);
this.$el.classList.add('is-dragging');
const handleMouseUp = () =>{
document.removeEventListener('mousemove', this.handleMouseMove);
document.removeEventListener('mouseup', handleMouseUp);
this.$el.classList.remove('is-dragging');
}
document.addEventListener('mouseup', handleMouseUp);
const handleMouseMove = (e) =>{
const offsetX = e.pageX - startX;
const progress = startProgress + offsetX / this.$el.offsetWidth * 100;
this.setProgress(progress);
}
document.addEventListener('mousemove', handleMouseMove);
},
handleMouseUp() {
document.removeEventListener('mousemove', this.handleMouseMove);
}
}
}
</script>
<style scoped>
.slide-progress {
position: relative;
height: 8px;
background-color: #eee;
border-radius: 4px;
overflow: hidden;
cursor: pointer;
user-select: none;
}
.slide-progress-bar {
height: 8px;
background-color: #409eff;
transition: width .3s ease;
}
.slide-progress-thumb {
position: absolute;
top: -4px;
left: 0;
width: 16px;
height: 16px;
background-color: #409eff;
border-radius: 50%;
transform: translateX(-50%);
cursor: pointer;
transition: left .3s ease;
}
.slide-progress-thumb.is-dragging {
opacity: .8;
}
</style>

上述代碼實現了一個基本的Vue滑動進度圖組件。其中,通過props屬性傳入value值來控制進度條進度。進度條由兩個子元素組成,一個表示進度條的進度,一個表示拖動塊的位置。在mounted生命周期鉤子函數中添加了鼠標事件監聽器,實現了拖動功能。

除此之外,我們還可以對滑動進度圖組件進行擴展,添加更多的樣式和交互功能。比如,我們可以添加進度值的提示,讓用戶更加直觀地了解當前進度。我們也可以添加動畫效果,讓進度條呈現更加流暢和自然的動態效果。

總之,Vue滑動進度圖組件是一種常用的數據可視化方式,在Vue中實現非常簡單,同時又可以很容易地進行擴展和定制化。如果你在構建交互式UI組件時需要滑動進度圖,那么Vue是一個非常適合的選擇。