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.jstree 增加节点的双击事件代码
Jul 27 Javascript
修改好的jquery滚动字幕效果实现代码
Jun 22 Javascript
js左右弹性滚动对联广告代码分享
Feb 19 Javascript
javascript中数组的定义及使用实例
Jan 21 Javascript
jQuery实现单击和鼠标感应事件
Feb 01 Javascript
jQuery 3.0十大新特性
Jul 06 Javascript
AngularJS 支付倒计时功能实现思路
Jun 05 Javascript
Javascript中 toFixed四舍六入方法
Aug 21 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
Mar 01 Javascript
js实现每日签到功能
Nov 29 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
Aug 10 Javascript
vue+echarts实现多条折线图
Mar 21 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
php 删除记录实现代码
2009/03/12 PHP
PHP微信API接口类
2016/08/22 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
微信封装的调用微信签名包的类库
2017/06/08 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
10款新鲜出炉的 jQuery 插件(Ajax 插件,有幻灯片、图片画廊、菜单等)
2011/06/08 Javascript
js函数调用常用方法详解
2012/12/03 Javascript
解决jquery实现的radio重新选中的问题
2015/07/03 Javascript
jQuery实现邮箱下拉列表自动补全功能
2016/09/08 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
2016/11/04 Javascript
移动端基础事件总结与应用
2017/01/12 Javascript
JS验证码实现代码
2017/09/14 Javascript
解决淘宝cnpm 安装后cnpm不是内部或外部命令的问题
2018/05/17 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
python使用cookie库操保存cookie详解
2014/03/03 Python
使用Python导出Excel图表以及导出为图片的方法
2015/11/07 Python
教大家使用Python SqlAlchemy
2016/02/12 Python
python实现杨辉三角思路
2017/07/14 Python
Python使用PIL模块生成随机验证码
2017/11/21 Python
Python字符串逆序的实现方法【一题多解】
2019/02/18 Python
Flask使用Pyecharts在单个页面展示多个图表的方法
2019/08/05 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
Python模块常用四种安装方式
2020/10/20 Python
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程
2016/01/06 面试题
全国道德模范事迹
2014/02/01 职场文书
汽车机修工岗位职责
2014/03/06 职场文书
珠宝店促销方案
2014/03/21 职场文书
老兵退伍标语
2014/10/07 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
四风之害观后感
2015/06/09 职场文书
寻找成龙观后感
2015/06/12 职场文书
年终奖金发放管理制度,中小企业适用,拿去救急吧!
2019/07/12 职场文书
win10下go mod配置方式
2021/04/25 Golang
Django一小时写出账号密码管理系统
2021/04/29 Python