html部分
<body>
<div class="new-wrapper fullPage" ref="fullPage" id="app" v-cloak>
<div class="returnTop"
ref="returnTop"
@click="returnTop"
v-show="showReturnTop"
@mousedown.stop="dragMove"
>
</div>
</div>
</body>
css部分
.returnTop{
color: #fbb810;
text-align: center;
position: fixed;
right:30px;
bottom:22px;
cursor:pointer;
z-index: 2;
width:60px;
height:60px;
background: url(<%=basePath%>images/returnTop.png) no-repeat;
background-size: 100% 100%;
}
js部分
new Vue({
el: '#app',
data: {
//拖拽返回顶部
positionX:0,
positionY:0,
},
methods:{
//点击返回顶部
returnTop:function(){
var isDrag = this.$refs.returnTop.getAttribute('drag-flag');
if (isDrag === 'true') {
return false;
}else{
this.directToMove(1,'pre');
};
},
//拖拽返回顶部
dragMove:function(e){
var dragStartTime = '';
var dragEndTime = '';
var target = e.target;
target.setAttribute('drag-flag', false);
dragStartTime = new Date().getTime()
//鼠标相对元素的位置
var disX = e.clientX - target.offsetLeft;
var disY = e.clientY - target.offsetTop;
document.onmousemove = function(e){
//元素的位置
var left = e.clientX - disX;
var top = e.clientY - disY;
this.positionX = top;
this.positionY = left;
target.style.left = left + 'px';
target.style.top = top + 'px';
dragEndTime = new Date().getTime();
if (dragEndTime - dragStartTime > 200) {
target.setAttribute('drag-flag', true)
};
};
document.onmouseup = function(e) {
document.onmousemove = null;
document.onmouseup = null;
};
},
},
});