js实现一个拖拽效果(本例vue中),边界限定,获取鼠标坐标,div坐标
有事没事搞个图:

demo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0 maximum-scale=1.0, user-scalable=0">
<title>九宫格</title>
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
<style>
html,body{
margin: 0;
padding: 0;
height: 98%;
width: 100%;
padding-top: 2%;
}
#app{
width: 100%;
position: relative;
left: 0;
}
#box{
position: fixed;
bottom: 0;
margin: 0 auto;
width:100px;
height:100px;
background-color: gray;
}
#box>div{
color: skyblue;
}
</style>
<script type="text/javascript">
window.onload=function(){
var app = new Vue({
el: '#app',
data: {
X:0,
Y:0
},
created(){ },
methods:{
touchmove(event){
this.X = event.targetTouches[0].clientX
this.Y = event.targetTouches[0].clientY
let screenWid = $(window).width()
let screenHei = $(window).height()
let midLeft = event.targetTouches[0].clientX-($('#box').width()/2)
let midRight = $(window).width()-(event.targetTouches[0].clientX+($('#box').width()/2))
let midBottom = $(window).height()-(event.targetTouches[0].clientY+($('#box').width()/2))
let midTop = event.targetTouches[0].clientY-($('#box').height()/2)
if(midLeft<0) midLeft = 0
if(midTop<0) midTop = 0
if(midRight<0) return
if(midBottom<0) return
$('#box').css({left:midLeft,top:midTop})
}
}
})
}
</script>
<!-- 引入vue -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<div id="box" @touchmove='touchmove'>
<div>鼠标x:{{X}}</div>
<div>鼠标y:{{Y}}</div>
</div>
</div>
</body>
</html>
js实现一个拖拽效果(本例vue中),边界限定,获取鼠标坐标,div坐标的更多相关文章
- 原生js简单实现拖拽效果
实现弹窗拖拽效果的原理是:按下鼠标并移动——拖拽移动物体,抬起鼠标——停止移动.主要触发三个事件:onmousedown.onmousemove以及onmouseup: 首先搭建结构:一个宽350px ...
- 用JS实现版面拖拽效果
类似于这样的一个版面,点击标题栏,实现拖拽效果. 添加onmousedown事件 通过获取鼠标的坐标(clientX,clientY)来改变面板的位置 注意:面板使用绝对定位方式,是以左上角为参考点, ...
- js实现简单拖拽效果
方法如下: var params = { left: 0, top: 0, currentX: 0, currentY: 0, flag: false }; var getCss = function ...
- React.js实现原生js拖拽效果及思考
一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...
- JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
转自<JS实现漂亮的窗口拖拽效果(可改变大小.最大化.最小化.关闭)>:http://www.jb51.net/article/73157.htm 这篇文章主要介绍了JS实现漂亮的窗口 ...
- js实现音量拖拽的效果模拟
<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>js ...
- js拖拽效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js div浮动层拖拽效果代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js实现本地图片文件拖拽效果
如何拖拽图片到指定位置,具体方法如下 在从本地上传图片的时候,如果使用拖拽效果,想想应该是更加的高大上,下面直接上js代码 完整代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- 原生js实现拖拽效果
面向对象 + 原生js拖拽 拖拽div等盒子模型,都是日常操作没有什么问题,如果是拖拽图片的话,会有一点小坑要踩...... 那么我们看代码: var Move_fn = {}; (function( ...
随机推荐
- Oracle存储过程打印输出错误信息、行号,快速排查
测试存储过程如下: create or replace procedure prc_test is p_1 varchar2(2); begin p_1 := 'lxw测试'; exception w ...
- vue项目 nginx部署
nginx.conf中的server配置片段 server { listen 8080 ;#默认端口是80,如果端口没被占用可以不用修改 server_name localhost; #charset ...
- KingbaseES V8R6集群运维案例之---访问系统表unrecognized token- false故障
KingbaseES V8R6集群运维案例之---访问系统表'unrecognized token: "false"'故障 案例说明: KingbaseES V8R6集群在升级补丁 ...
- 【已解决】idea编译器插入数据到数据库乱码以及jsp页面乱码的解决方法
1.jsp页面需要设置编码格式为utf-8 1 <%@ page contentType="text/html;charset=UTF-8" language="j ...
- 面试官:如何搭建Redis集群?
Redis 集群(Redis Cluster)是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高 Redis 服 ...
- Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
目录 简介 Spring Boot的基本操作 Spring Boot的构建和部署 Spring Boot工具 Spring Boot的测试 Spring Boot中使用JPA Spring Boot和 ...
- 父组件明明使用了v-model,子组件竟然可以不用定义props和emit抛出事件,快来看看吧
前言 vue3.4增加了defineModel宏函数,在子组件内修改了defineModel的返回值,父组件上v-model绑定的变量就会被更新.大家都知道v-model是:modelValue和@u ...
- SSM框架整合——书籍管理系统
1.准备工作: 1.1.环境要求 IDEA MySQL 5.7.19 Tomcat 9 Maven 3.6 1.2.数据库设计 创建一个存放书籍数据的数据库表: CREATE DATABASE `ss ...
- 生成 MFC ActiveX (OCX)时,报错:MSB801:未能注册输出
我们在生成 ocx 控件时,报错:MSB801:未能注册输出,如下图: 解决方法: 1.打开 项目属性 -> 链接器 -> 常规 : 逐用户重定向 改为 是 2. 重新生成 如果此时 ...
- opengauss-jdbc问题整理
opengauss-jdbc问题整理(更新中) 问题 1 jdbc 批量执行 insert 语句时返回结果不符合 Spring jpa 预期 问题描述: jdbc 执行查询时,可以使用prepares ...