元素跟随鼠标旋转,未待完续。。。。

本节主要讲的是元素跟随鼠标旋转主要是用到了原生js更改css的transform属性,这个属性下有不少方法,下面就只讲关于本节内容的几种方法,其余的能够私下本身去看一看

translate(x,y) 转换2D

translate(x,y)水平方向和垂直方向同时移动(也就是X轴和Y轴同时移动)
translateX(x)仅水平方向移动(X轴移动)
translateY(Y)仅垂直方向移动(y轴移动)
效果:

连接描述css

rotate(angle) 定义2D旋转,旋转角度在参数中定义

经过指定rotate内设置角度参数对元素进行一个2D的旋转,设置正数元素则顺时针旋转参数内的角度,设置负数则逆时针旋转参数内的角度
transform-origin能够定义旋转的原点,不设置的话会按中心点进行旋转,这个属性的参数也分为 x轴 y轴 z轴(偏移量)
效果:

连接描述spa

rotateX(angle) 定义沿着 x 轴的 3D 旋转。

这主要是沿着X轴进行旋转,顾名思义就是横向不动,肉眼看见的图形应该是上下翻转的效果

图片描述

rotateY(angle) 定义沿着 Y 轴的 3D 旋转。

这主要是沿着Y轴进行旋转,顾名思义就是垂直不动,肉眼看见的图形应该是左右翻转的效果,盗个图吧,做者看见别怪!

clipboard.png

rotateZ(angle) 定义沿着 Z 轴的 3D 旋转。

Z轴我我的的理解就是按照你设置的旋转原点,绕圈旋转
 
 下面就是x,y,z 轴的图解

clipboard.png

连接描述.net

另外还有最重要的就是transform的矩阵matrix(n,n,n,n,n,n)里面的六个值分别表明不一样的属性,这里就不说它,没啥好说的本身下去看看吧!!!code

利用上一篇文章所讲的坐标来计算鼠标移动的时候计算角度

  1. 获取旋转元素的中心点orm

    设置默认旋转的中心X原点以及Y的中心原点,根据元素的位置计算,利用元素的width + 元素的偏移量 计算 旋转原点,鼠标点击
       时获取
       centerX = n.offsetLeft + n.offsetWidth / 2
       centerY = n.offsetTop + n.offsetHeight / 2
  2. 这里会用到计算弧度Math.atan2
  3. 获取旋转的角度centerxblog

    static angle (centerx, centery, endx, endy) {
           // 鼠标移动获取鼠标移动的e.client - 鼠标点击时的client
           var diff_x = endx - centerx, // 拿到计算弧度的差值
               diff_y = endy - centery
           // Math.atan2利用x,y坐标计算角度
           // 360 * Math.atan2(diff_y, diff_x) 映射到360度
           // 一个完整的圆的弧度是2π,因此:2π rad = 360°
           // / (2 * Math.PI) 转换成角度
           var c = 360 * Math.atan2(diff_y, diff_x) / (2 * Math.PI)
           // 其实在这里就分逆时针和顺时针旋转了,(360 + -c)逆时针
           // 若是为-90 = 360 + -90 ,若是为-80 = -80 + 90
           c = c <= -90 ? (360 + c) : c
           // 补上-90度的差值
           return c + 90
       }

    例如:图片

    centerx:40,centery:30 取的都是中心点的值
        endx: 80, endy: 60

    图片描述

相关文章
相关标签/搜索