vue2 + vant2
实现一个页面底部的面板 手指点击拖拽可以上下滑动
<van-action-sheet v-model="searchShow" title=" " :closeable="true" :overlay="false" @close="hiddenClose()"
class="linear"
:class="{ 'remove-linear': popTouch.isTouch, 'fullscreen': popTouch.parking.isFs, 'minimum': popTouch.parking.isMin }"
:style="{ 'height': popTouch.parking.height + 'px' }">
<div class="drag-bar" @touchstart="popTouchStart('parking', $event)"
@touchmove="popTouchMove('parking', $event)" @touchend="popTouchEnd('parking', $event)"></div>
</van-action-sheet>
//data里面
popTouch: {
vh: 0,
originHeight: 0,
menu: {
height: 0,
isFS: false,
isMin: false,
},
parking: {
height: 0,
isFS: false,
isMin: false,
origin: "calc(32vh + 44px)"
},
mapInfo: {
height: 0,
isFS: false,
isMin: false,
},
isTouch: false,
originY: 0,
deltaY: 0,
offY: 0,
},
methods:{
popTouchStart(name, e) {
let self = this.popTouch;
self.deltaY = e.touches[0].clientY - self.vh + self[name].height;
self.isTouch = true;
},
popTouchMove(name, e) {
let self = this.popTouch;
let _y = e.touches[0].clientY;
self[name].height = self.vh - _y + self.deltaY;
},
popTouchEnd(name) {
let self = this.popTouch;
self.isTouch = false;
if (self[name].height / self.vh > .7) {
self[name].isFS = true;
setTimeout(() => {
// self[name].height = self[name].height;
self[name].isFS = false;
}, 100);
} else if (self[name].height <= 200) {
self[name].isMin = true;
setTimeout(() => {
self[name].height = 40;
self[name].isMin = false;
}, 250);
} else {
setTimeout(() => {
self[name].height = self.originHeight;
}, 100);
}
},
}
实现的效果
00