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 相关文章推荐
js中将多个语句写成一个语句的两种方法小结
Dec 08 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
Dec 11 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
May 28 Javascript
详解JavaScript的变量和数据类型
Nov 27 Javascript
Winform客户端向web地址传参接收参数的方法
May 17 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
Aug 30 Javascript
手机端实现Bootstrap简单图片轮播效果
Oct 13 Javascript
Mongoose中document与object的区别示例详解
Sep 18 Javascript
vue项目webpack中Npm传递参数配置不同域名接口
Jun 15 Javascript
js canvas实现写字动画效果
Nov 30 Javascript
详解vue中router-link标签所必备了解的属性
Apr 15 Javascript
Vue使用虚拟dom进行渲染view的方法
Dec 26 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中基本符号及使用方法
2010/03/23 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
2017/07/20 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
javascript实用小函数使用介绍
2013/11/11 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
2020/04/16 Javascript
基于Bootstrap仿淘宝分页控件实现代码
2016/11/07 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
JS 实现计算器详解及实例代码(一)
2017/01/08 Javascript
javascript简写常用的12个技巧(可以大大减少你的js代码量)
2020/03/28 Javascript
200行代码实现blockchain 区块链实例详解
2018/03/14 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
JS通用方法触发点击事件代码实例
2020/02/17 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python中协程实现TCP连接的实例分析
2018/10/14 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
python对矩阵进行转置的2种处理方法
2019/07/17 Python
python SVM 线性分类模型的实现
2019/07/19 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
python中字典增加和删除使用方法
2020/09/30 Python
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
家长会主持词开场白
2014/03/18 职场文书
小学家长学校培训材料
2014/08/24 职场文书
何玥事迹观后感
2015/06/16 职场文书
读书笔记格式
2015/07/02 职场文书
iPhone13再次曝光
2021/04/15 数码科技