3D Hover

作者: ZombieBrandg | 来源:发表于2018-06-04 22:42 被阅读0次

3D Hover

persperctive

persperctive是CSS样式中调整视距,它需要在父容器使用如persperctive: 1000px;,子元素中才能配合transform:translateZ(10px);

BoundingClientRect()

语法:rectObject = object.getBoundingClientRect();

BoundingClientRect()是用来获取元素边界的位置信息。例如:

let position = divmy.getBoundingCilentRect();控制台会返回一个例如:

[object ClientRect] {
  bottom: 194, //从窗口到元素底部距离
  height: 194, //元素内容的高度
  left: 0,     //从窗口到元素左部距离
  right: 242,  //从窗口到元素右部距离
  top: 0,      //从窗口到元素顶部距离
  width: 242   //元素内容的宽度
}

client

client使用来获取元素在当前视口的距离(并不是元素在页面的距离)。

page

page使用来获取元素在当前页面的距离

3D Hover 例子

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
<div class="parent">
  <div class="child">banner</div>
</div>
</body>
  <style>
    .parent {
  width: 400px;
  border: 1px solid;
  padding: 80px;
  perspective: 1000px;                                        //添加视距距离
  margin: 100px auto;
}
.child {
  background:#2aa;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:50px;
  color:white;
  height: 300px;
  border: 1px solid #2aa;
  transition: transform 0.1s;                                          //过度动画时间(添加该效果会很顺滑)
  transform-style: preserve-3d;                                     //增加3D效果
}
.child::after{
  content:'banner';
  transform:translateZ(100px);
  text-shadow:5px 5px 15px #000;
  opacity:0.8;                                                         //透明度
  
}
  </style>
  <script>
    var divparent = document.querySelector('.parent');    //通过选择器获取parent元素
var divchild = document.querySelector('.child');          //通过选择器获取child元素
divparent.addEventListener('mousemove', function(e){      //添加对divparent元素进行事件监听(鼠标移动)
  //console.log(e.clientX,e.clientY);                     //client可以获取鼠标位置信息
  var parentPosition = divparent.getBoundingClientRect(); //获取divparent在屏幕中的位置信息
  var parentX = parentPosition.left;                      //获取divparent元素左边部的位置信息
  var parentY = parentPosition.top;                       //获取divparent元素顶边部的位置信息
  var deltaX = e.clientX - parentX;                       //使X轴的位置在divparent左上角位置
  var deltaY = e.clientY - parentY;                       //使y轴的位置在divparent左上角位置
  var centerX = deltaX - parentPosition.width/2;          //使X轴的位置在divparent中间位置
  var centerY = deltaY - parentPosition.height/2;         //使y轴的位置在divparent中间位置
  var degreeY = centerX / 100 * 5;                        //将移动的位置像素位置距离转换成角度
  var degreeX = -centerY / 100 * 5;                       //将移动的位置像素位置距离转换成角度(由于X轴的角度变换是根据Y轴决定并且Y轴负值是Y轴顺时针旋转所以前边需要添加负号)
  divchild.style.transform='rotateX(' + degreeX + 'deg) rotateY(' + degreeY + 'deg)' //将获取的鼠标位置信息添加到CSS中的divchild元素中
});
  </script>
</html>

CSS transform 属性允许你修改CSS视觉格式模型的坐标空间。
使用它,元素可以被转换(translate)、旋转(rotate)、缩放(scale)、倾斜(skew)。
transition:transform 1s;过度动画1秒

代码测试地址

相关文章

  • 3D Hover

    3D Hover persperctive persperctive是CSS样式中调整视距,它需要在父容器使用如p...

  • js找弟弟

    hover之后动画效果 我们可以在需要hover的元素hover之后用::after {content:''; d...

  • 小程序学习过程中遇到的问题 整理1

    view标签下hover必须为true时,设置hover-class才有效,hover-start-time和ho...

  • img:hover闪烁问题

    最近项目做首页,上面很多图片导航需要hover效果,使用css的:hover选择器发现加载hover图片时会闪烁,...

  • hover

    CSS的hover选择器 id .text{ class=’text’的元素的样式} id:hover .text...

  • hover

    优化图片鼠标悬停效果的 10 个 CSS 库 - 前端 - 掘金 iHover gudh.github.io

  • hover

  • 超链接样式

    超链接伪类 a:link a:visited a:hover a:active :hover可以用于任何元素鼠标经...

  • Css3 - transition(过渡)

    经常配合:hover、transform使用,实现属性过渡。 例子1:配合hover实现width,height及...

  • 小程序常见组件04

    view :hover-class 按下去颜色改变 hover-stop-propagation:指定是否阻止...

网友评论

      本文标题:3D Hover

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