美文网首页我爱编程
锤子官网3D效果的实现

锤子官网3D效果的实现

作者: zy懒人漫游 | 来源:发表于2018-06-10 03:27 被阅读0次

    效果演示

    关键点:

    1. clientX,clientY: 设置或获取鼠标指针位置相对于当前窗口的 x ,y坐标,其中客户区域不包括窗口自身的控件和滚动条. screenX是相对与客户端显示器而言,是绝对位置!
      特别说明:IE下此属性不规范,它们的最小值不是0而是2,也就是说IE下的clientX/clientY比火狐下始终大2px。

    2. offsetX,offsetY: 设置或获取鼠标指针位置相对于触发事件的对象的 x,y 坐标。
      特别说明:只有IE支持!相当于IE下的pageX,pageY。

    e.clientX + document.documentElement.scrollLeft - document.documentElement.clientLeft = e.pageX
    e.clientY + document.documentElement.scrollTop  - document.documentElement.clientTop = e.pageY
    
    1. pageX,pageY: 鼠标相对于整个页面的x,y坐标。

    2. screenX,screenY: 设置或获取获取鼠标指针位置相对于用户屏幕的 x ,y坐标。

      var offset = $('.box').offset()//偏移
      var x = e.pageX - offset.left //获取X方向偏移值
      var y = e.pageY - offset.top//获取Y方向偏移值
      var centerX = $('.box').outerWidth() /2 //X轴中心点
      var centerY = $('.box').outerHeight() /2 //Y轴中心点
      var deltaX = x - centerX
      var deltaY = y - centerY
      var percentX = deltaX / centerX //鼠标距x轴终点的距离
      var percentY = deltaY / centerY //鼠标距y轴终点的距离
      var deg = 15  //保存角度
     $('.image').css({
        transform: 'rotateX('+deg * -percentY + 'deg)'+
        ' rotateY('+deg*percentX+'deg)'
      })
    

    css代码:

    *{box-sizing: border-box;}
    .box{
      width: 100%;
      height: 500px;
      background: white;
      padding: 100px 0; 
      margin: 10px auto;
      border: 1px solid #ddd;  
      perspective: 1000px;  //关键
    }
    
    .image{
      height: 300px;
      width: 400px;
      margin: 0 auto;
      background:  #37D7B2;
      transition: transform 0.1s;
      box-shadow: 0 0 15px rgba(0,0,0,0.25);
      text-align: center;
      line-height: 300px;
      font-size: 50px;
      color: #fff;
    }
    
    body{
      background: white;
      padding: 20px;
    }
    

    perspective: 1000px; 这个很关键

    相关文章

      网友评论

        本文标题:锤子官网3D效果的实现

        本文链接:https://www.haomeiwen.com/subject/txoxeftx.html