zoukankan      html  css  js  c++  java
  • 关于重力加速计文章

    https://www.jianshu.com/p/f7acfafc9fa2

    https://zhuanlan.zhihu.com/p/32752030?edition=yidianzixun&yidian_docid=0I5ffTxm

    /**
      design by zhangyingying at 2018-02-28
      重力感应 el元素需要定位 消耗性能,建议页面使用效果不超过5个
      参数 x, y => x, y轴的相对位移 d=> 位移方向
      使用 v-gravity="{x: 20, y: 20, d: 1}"
    **/
    export default (Vue) => {
      Vue.directive('gravity', {
        bind: function(el, binding, vNode) {
          let objM = binding.modifiers
          let objV = binding.value
          let objA = binding.arg
          let conf = {
            gx: 0,
            gy: 0
          }
          let direction = 1
          if(!!objV.x) {
            conf.gx = objV.x
          }
          if(!!objV.y) {
            conf.gy = objV.y
          }
          if(!!objV.d) {
            direction = objV.d
          }
          let target = el
          function handleOrientation(event) {
            var x = event.beta;  //  [-180, 180]
            var y = event.gamma; //  [-90, 90]
            if (x > 90) {
              x = 90
            };
            if (x < -90) {
              x = -90
            };
            if(x>80 && x<150) {
              // 粘度系数0.2
              // 当beta>80时,gamma转动速度变大,并且当gamma大于80时容易正负突变
              y = Math.abs(y)*0.2
            }
            x += 90;
            y += 90;
            if(!!objM.rotateX) {
              target.style['-webkit-transform-style'] = `preserve-3d`
              target.style['transform-style'] = `preserve-3d`
              target.style['-webkit-transform'] = `rotateX(${x*conf.gx}deg)`
              target.style['transform'] = `rotateX(${x*conf.gx}deg)`
            }else if(!!objM.rotateY){
              target.style['-webkit-transform-style'] = `preserve-3d`
              target.style['transform-style'] = `preserve-3d`
              target.style['-webkit-transform'] = `rotateY(${y*conf.gy}deg)`
              target.style['transform'] = `rotateY(${y*conf.gy}deg)`
            }else if(!!objM.rotate){
              target.style['-webkit-transform-style'] = `preserve-3d`
              target.style['transform-style'] = `preserve-3d`
              target.style['-webkit-transform'] = `rotateX(${x*conf.gy}deg rotateY(${y*conf.gy}deg)`
              target.style['transform'] = `rotateX(${x*conf.gy}deg) rotateY(${y*conf.gy}deg)`
            }else {
              target.style.top = direction*(conf.gy * x / 180 - conf.gy/2) + "px";
              target.style.left = direction*(conf.gx * y / 180 - conf.gx/2) + "px";
            }
          }
          window.addEventListener('deviceorientation', handleOrientation);
        },
      })
    }
    

      

  • 相关阅读:
    springboot整合springmvc应用
    spring注解使用
    亨元模式 四大引用 逃逸引用 池化思想
    springboot整合连接池
    springboot整合mybatis(待更新)
    php安装imagick扩展
    js复制功能代码
    PHP7兼容mysql_connect的方法
    linux开机启动
    centos8安装php扩展memcached报错
  • 原文地址:https://www.cnblogs.com/wilsunson/p/13737900.html
Copyright © 2011-2022 走看看