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 学习第七课 扩展jQuery的功能 插件开发
May 17 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
Mar 11 Javascript
遍历DOM对象内的元素属性示例代码
Feb 08 Javascript
jQuery给动态添加的元素绑定事件的方法
Mar 09 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
Aug 28 Javascript
javascript中的 object 和 function小结
Aug 14 Javascript
关于Node.js的events.EventEmitter用法介绍
Apr 01 Javascript
让你彻底掌握es6 Promise的八段代码
Jul 26 Javascript
bootstrap fileinput实现文件上传功能
Aug 23 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
Mar 08 Javascript
openlayers4.6.5实现距离量测和面积量测
Sep 25 Javascript
聊聊vue 中的v-on参数问题
Jan 29 Vue.js
解决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
编译问题
2006/10/09 PHP
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
Nodejs全局安装和本地安装的不同之处
2016/07/04 NodeJs
js 弹出对话框(遮罩)透明,可拖动的简单实例
2016/07/11 Javascript
Canvas 制作动态进度加载水球详解及实例代码
2016/12/09 Javascript
js常用DOM方法详解
2017/02/04 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
JavaScript Array对象使用方法解析
2019/09/24 Javascript
js节流防抖应用场景,以及在vue中节流防抖的具体实现操作
2020/09/21 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
[01:00:53]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Secret
2018/03/30 DOTA
浅谈python迭代器
2017/11/08 Python
Python使用wxPython实现计算器
2018/01/30 Python
Python实现的微信支付方式总结【三种方式】
2019/04/13 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
Django配置MySQL数据库的完整步骤
2019/09/07 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
2020/10/21 Python
详解HTML5中表单验证的8种方法介绍
2016/12/19 HTML / CSS
校园之声广播稿
2014/01/31 职场文书
函授本科自我鉴定
2014/02/04 职场文书
贷款委托书
2014/08/01 职场文书
四风问题查摆材料
2014/08/25 职场文书
2014年医药代表工作总结
2014/11/22 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
怎么用Python识别手势数字
2021/06/07 Python
详解Python自动化之文件自动化处理
2021/06/21 Python
javascript之Object.assign()的痛点分析
2022/03/03 Javascript
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫