美文网首页
3DHover效果

3DHover效果

作者: 老虎爱吃母鸡 | 来源:发表于2016-12-05 23:33 被阅读0次

实现例如锤子手机官网的3DHover效果

思路

  1. 在mouseover的时候通过event获得鼠标的位置
  2. 让div随着鼠标实现轻微rotate效果

实现

// HTML
  <div id="parent">
    <div id="root">banner</div>    
  </div>
// JS
  <script>
    $('#root'). on('mousemove', e => {
      const pos = $('#parent').offset()
      const x = e.pageX - pos.left
      const y = e.pageY - pos.top
      const centerX = $('#parent').innerWidth()/2
      const centerY = $('#parent').innerHeight()/2
      const deg = 10
      const degX = (x - centerX)/centerX * deg
      const degY = - (y - centerY)/centerY * deg
      $('#root').css({
        transform: `rotateX(${degY}deg) rotateY(${degX}deg)`  
      })
    })
  </script>
// CSS
#root {
  text-align: center;
  line-height: 200px;
  font-size: 30px;
  height: 200px;
  background-color: #00f;
  transition: transform .1s;
}
#parent {
  perspective: 1000px;
  margin-top: 100px;
}

值得注意的细节

  1. perspective属性
    视点与div的距离, 可以抽象理解为电影院的最后一排与第一排的区别, 离得越近, 同样rotate的角度看起来更倾斜, 注意这个属性使用在父元素上作用在子元素上
  2. offsetX, offsetY
    会返回相对于最近div的坐标, 所以要算出正确的鼠标在div中的位置需要使用pageX, pageY减去div的offsetX(使用jQuery)
  3. rotate的方向
    当鼠标在左边即在X轴移动的时候, rotate的是Y轴的平面, 从中心到边界, Y轴的方向从下往上看应该是逆时针方向, 但是rotateY正数是顺时针, 所以需要加上负号

相关文章

  • 3DHover效果

    实现例如锤子手机官网的3DHover效果 思路 在mouseover的时候通过event获得鼠标的位置 让div随...

  • CAReplicatorLayer

    效果一 效果二 效果三 效果四 效果五 效果六 效果七 效果八 效果九

  • 简书 Markdown 编辑器丨文字颜色详解

    效果: 代码: 效果: 代码: 效果: 代码: 效果: 代码: - ### 效果: 代码: 效果: 代码: 效果:...

  • MarkDown 合并表格

    效果: 效果: 效果: 效果:

  • CGRectInset、CGRectOffset、UIEdgeI

    效果: 效果: 效果:

  • 北京王府井整体效果

    1.门头效果 门头效果 美家店邻铺效果(昨晚效果,未拆时) 1区效果 1区效果 2区整体效果 2区效果 3区效果 ...

  • CoreAnimation的粒子效果

    粒子效果 效果1 代码实现 效果2 代码实现 效果3 效果4 代码实现

  • 效果

    今天儿子午睡后醒来,我还在绞尽脑汁的马字,那个累呀。 儿子又想抢我的手机了,因为手机里有他喜欢的游戏,还有他...

  • 效果

  • 效果

    2、 感受老麻雀的勇敢无畏 教师深情地引入:“当猎狗张开大嘴,准备扑向小麻雀的时候。为了拯救自己的幼儿,老麻雀不顾...

网友评论

      本文标题:3DHover效果

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