视差效果的实际应用

简介: 用JS实现跟鼠标的互动效果,图片向着鼠标移动的相反方向转动。可以想象一下,Z轴上从远到近,有三张背景透明的图(从屏幕正方看,三张图重叠,看上去就是一张图)然后,让他们在 X轴 或者 Y轴转动,就形成了视差效果。

视差效果的实际应用



在实际开发中,应用一些微交互、视差效果,可以让页面更加生动。如下面的

例子:


20181115185347457.gif


这个例子中运行了3D transform 的相关知识。具体细节如下分析。


1、切图


将psd稿上的这个区域切成如下图的3块图片,方便在页面上进行叠加、


20181115185449871.png


2、布局


给三张图片设置不一样的translateZ(translateZ的值越小,元素大小越小,因为元素远去,我们眼睛看到的就会变小),这样三层图片就形成了远近的层次效果,否则都在一个平面上,就没有了视差效果,如下:


20181115185740854.gif


(缺少了层次效果,就没有了视差效果)

html布局代码:


<div class="banner-row move-row" style="transform-style: preserve-3d;">
         <div class="layer right-image" style="transform: translateZ(50px);">
        <img src="images/index/br4_img1.png" />
       </div>
       <div class="layer right-image" style="transform: translateZ(100px);">
        <img src="images/index/br4_img2.png" />
       </div>
       <div class="layer right-image" style="transform: translateZ(150px);">
        <img src="images/index/br4_img3.png" />
       </div>
      </div>


3、JS


用JS实现跟鼠标的互动效果,图片向着鼠标移动的相反方向转动。可以想象一下,Z轴上从远到近,有三张背景透明的图(从屏幕正方看,三张图重叠,看上去就是一张图)然后,让他们在 X轴 或者 Y轴转动,就形成了视差效果。


20181113134953675 (1).png


主要js如下:


var w = $(window).width(), h = $(window).height();
 function move(t) {
  var moveX = (t.pageX / w - .5) * (-25) || 10, moveY = -(t.pageY / h - .5) * (-20) || 10;
  var n = "rotateX(" + moveY + "deg) rotateY(" + moveX + "deg) ";
  return n;
 }
 $(".left-header").on("mousemove", function(e) {
  var n = move(e);
  $(".move-row").css("transform", n);
 });
 $(".move-row").on("mousemove", function(e) {
  var n = move(e);
  $(this).css("transform", n);
 });


参考:


https://codepen.io/agelber/pen/wAgzI


https://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/comment-page-7/#comment-389111


目录
相关文章
|
图形学
浅谈Unity之ShaderGraph-等高线和高程渐变设色
ShaderGraph实现等高线和高程渐变设色
Threejs实现天空盒,全景场景,地面草地
Threejs实现天空盒,全景场景,地面草地
1268 0
Threejs实现天空盒,全景场景,地面草地
|
2月前
|
开发者
ThreeJs实现小球自由落体效果
这篇文章详细介绍了如何在Three.js中利用物理引擎Cannon.js实现小球自由落体效果,包括物理世界的创建、物体的添加及同步物理状态到三维场景中的具体实现。
53 3
ThreeJs实现小球自由落体效果
|
2月前
|
JavaScript
ThreeJs通过DragControls实现物体拖动
这篇文章详细讲解了如何在Three.js中使用DragControls实现3D物体的鼠标拖动功能。
112 1
ThreeJs通过DragControls实现物体拖动
|
2月前
ThreeJs绘制贝塞尔曲线
这篇文章介绍了如何利用Three.js绘制贝塞尔曲线,并提供了实现的代码示例与说明。
39 2
ThreeJs绘制贝塞尔曲线
|
2月前
ThreeJs给物体添加贴图
这篇文章详细说明了在Three.js中如何给3D物体添加贴图,并展示了实现局部贴图的技术和方法。
131 1
ThreeJs给物体添加贴图
|
4月前
|
开发框架
threejs做特效:实现物体的发光效果-EffectComposer详解!
【8月更文挑战第7天】实现物体的发光效果-EffectComposer详解!
515 6
threejs做特效:实现物体的发光效果-EffectComposer详解!
|
5月前
|
前端开发
css特效——“凹”和“凸”效果
css特效——“凹”和“凸”效果
284 1
|
7月前
|
移动开发 HTML5
HTML5球体下落粒子爆炸特效
HTML5球体下落粒子爆炸特效
37 1
HTML5球体下落粒子爆炸特效
|
编解码 图形学 Python
ArcMap:如何渲染一幅精美的地形图
ArcMap:如何渲染一幅精美的地形图
308 1

热门文章

最新文章