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 相关文章推荐
javascript完美拖拽的实现方法
Sep 29 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
Jan 28 Javascript
jQuery实现复选框批量选择与反选的方法
Jun 17 Javascript
仿iframe效果Aajx文件上传实例
Nov 18 Javascript
vue2笔记 — vue-router路由懒加载的实现
Mar 03 Javascript
jQuery实现遍历复选框的方法示例
Mar 06 Javascript
vue调用高德地图实例代码
Apr 28 Javascript
js自定义弹框插件的封装
Aug 24 Javascript
Three.js实现简单3D房间布局
Dec 30 Javascript
使用Vue实现移动端左滑删除效果附源码
May 16 Javascript
使用ThinkJs搭建微信中控服务的实现方法
Aug 08 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 json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
php 参数过滤、数据过滤详解
2015/10/26 PHP
PHP类型约束用法示例
2016/09/28 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
jQuery Ajax使用 全解析
2010/12/15 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
js转换对象为xml
2017/02/17 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
node.js中path路径模块的使用方法实例分析
2020/02/13 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
Python-基础-入门 简介
2014/08/09 Python
Django与遗留的数据库整合的方法指南
2015/07/24 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
python实现画出e指数函数的图像
2019/11/21 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
开普敦通行证:Cape Town Pass
2019/07/18 全球购物
Alexandre Birman美国官网:亚历山大·伯曼
2019/10/30 全球购物
消防应急演练方案
2014/02/12 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
幼儿园评语大全
2014/04/17 职场文书
布达拉宫的导游词
2015/02/02 职场文书
春晚观后感
2015/06/11 职场文书
关于antd tree 和父子组件之间的传值问题(react 总结)
2021/06/02 Javascript
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android