Vue实现按钮旋转和移动位置的实例代码


Posted in Javascript onAugust 09, 2018

1.静态效果图

Vue实现按钮旋转和移动位置的实例代码

Chrom移动端浏览模式下可拖动按钮处于任意位置,并且点击可旋转按钮

2.代码

<template>
 <div id="app">
  <div class="icon-add-50" :style="iconstyle" @click='click' @touchmove='touchmove' @touchstart='touchstart(this,$event)' @touchend='touchend'></div>
 </div>
</template>
<script>
export default {
 name: 'App',
 data(){
  return{
   /*--------图标样式变量--------------*/
   iconrotate:45,//旋转deg
   icontranslateX:100,//沿x轴位移px
   icontranslateY:100,//沿y轴位移px
   /*--------拖动计算变量------------*/
   mouseX:0,
   mouseY:0,
   objX:0,
   objY:0,
   isDown:false
  }
 },
 methods:{
  click:function(){//图标点击事件
   if (this.iconrotate==0) {
     this.iconrotate=315;
   }else {
    this.iconrotate=0;
   }
  },
  touchstart:function(obj,e){//finger touch 触发
   this.objX = this.icontranslateX;
   this.objY = this.icontranslateY;
   this.mouseX = e.touches[0].clientX;
   this.mouseY = e.touches[0].clientY;
   this.isDowm = true;
  },
  touchmove:function(e){//finger move 触发
   let x = e.touches[0].clientX;
   let y = e.touches[0].clientY;
   if (this.isDowm) {
     this.icontranslateX = parseInt(x) - parseInt(this.mouseX) + parseInt(this.objX);
     this.icontranslateY = parseInt(y) - parseInt(this.mouseY) + parseInt(this.objY);
   }
  },
  touchend:function(e){//finger from touch to notouch
   if (this.isDowm) {
     let x = e.touches[0].clientX;
     let y = e.touches[0].clientY;
     this.icontranslateX = parseInt(x) - parseInt(this.mouseX)+ parseInt(this.objX);
     this.icontranslateY = parseInt(y) - parseInt(this.mouseY)+ parseInt(this.objY);
     this.isDowm=false;
   }
  }
 },
 computed:{
  iconstyle:function(){//图标动态样式
   let arr = new Array();
   arr.push('transform:');//注意:先移动后旋转,实现原地旋转;先旋转后移动,位置按照旋转后的新坐标系确定
   arr.push('translateX('+this.icontranslateX+'px) ');
   arr.push('translateY('+this.icontranslateY+'px) ');
   arr.push('rotate('+this.iconrotate+'deg) ');
   return arr.join("");
  }
 }
}
</script>
<style>
#app {
 font-family: 'Avenir', Helvetica, Arial, sans-serif;
 -webkit-font-smoothing: antialiased;
 -moz-osx-font-smoothing: grayscale;
 text-align: center;
 color: #2c3e50;
 margin-top: 60px;
}
 /*加号*/
.icon-add-50{
  position: relative;
  box-sizing: border-box;
  width: 50px;
  height: 50px;
  border: 2px solid gray;
  border-radius: 50%;
  box-shadow:darkgrey 0px 0px 2px 2px;
  background-color: CornflowerBlue;
}
.icon-add-50:before{
  content: '';
  position: absolute;
  width: 30px;
  height: 2px;
  left: 50%;
  top: 50%;
  margin-left: -15px;
  margin-top: -1px;
  background-color: white;
}
.icon-add-50:after{
  content: '';
  position: absolute;
  width: 2px;
  height: 30px;
  left: 50%;
  top: 50%;
  margin-left: -1px;
  margin-top: -15px;
  background-color: white;
}
</style>

总结

以上所述是小编给大家介绍的Vue实现按钮旋转和移动位置的实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jquery中eq和get的区别与使用方法
Apr 14 Javascript
基于jquery的一个拖拽到指定区域内的效果
Sep 21 Javascript
TimergliderJS 一个基于jQuery的时间轴插件
Dec 07 Javascript
js中cookie的添加、取值、删除示例代码
Oct 21 Javascript
JavaScript 基本概念
Jan 20 Javascript
jQuery插件MixItUp实现动画过滤和排序
Apr 12 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
Sep 12 Javascript
前端js文件合并的三种方式推荐
May 19 Javascript
浅谈Node.js 中间件模式
Jun 12 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
Sep 21 Javascript
JavaScript 如何计算文本的行数的实现
Sep 14 Javascript
js定时器出现第一次延迟的原因及解决方法
Jan 04 Javascript
解决vue数组中对象属性变化页面不渲染问题
Aug 09 #Javascript
JavaScript引用类型Function实例详解
Aug 09 #Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
Aug 09 #jQuery
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
Aug 09 #Javascript
vue修改对象的属性值后页面不重新渲染的实例
Aug 09 #Javascript
vue异步axios获取的数据渲染到页面的方法
Aug 09 #Javascript
vue2.0的虚拟DOM渲染思路分析
Aug 09 #Javascript
You might like
php的控制语句
2006/10/09 PHP
php截取utf-8中文字符串乱码的解决方法
2010/03/29 PHP
php连接odbc数据源并保存与查询数据的方法
2014/12/24 PHP
PHP实现导出excel数据的类库用法示例
2016/10/15 PHP
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
jquery实现保存已选用户
2014/07/21 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
微信小程序 开发之顶部导航栏实例代码
2017/02/23 Javascript
NodeJS实现微信公众号关注后自动回复功能
2017/05/31 NodeJs
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
2017/07/23 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
使用JavaScript实现一个小程序之99乘法表
2017/09/21 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
vue this.reload 方法 配置
2018/09/12 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
js闭包的9个使用场景
2020/12/29 Javascript
通过5个知识点轻松搞定Python的作用域
2016/09/09 Python
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
详谈Python2.6和Python3.0中对除法操作的异同
2017/04/28 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
资产经营总监岗位职责
2013/12/04 职场文书
经济管理自荐书
2014/06/09 职场文书
建筑工地文明标语
2014/10/09 职场文书
综合素质评价自我评价
2015/03/06 职场文书
小马王观后感
2015/06/11 职场文书
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技