炫酷多层鼠标悬停图片背景3D视觉差效果

 所属分类:鼠标滑过

 浏览:518次-  下载:2次-  评论: 0次-  更新时间:2023-07-03

jQuery和CSS3 3D海报背景视觉差特效。该视觉差特效在使用鼠标在屏幕上下左右移动的时候,海报中的各种元素就会以不同的速度运动,形成视觉差效果,并且还带有一些流光特效。

HTML结构:

该Apple TV背景视觉差的基本HTML结构如下:其中.light和.light-2是流光层。余下的3个层是背景图片层

1
2
3
4
5
6
7
8
9
<div class="wrapper">
  <div class="ad">
    <div class="layer light"></div>
    <div class="layer light light-2"></div>
    <div class="layer layer-1"></div>
    <div class="layer layer-2"></div>
    <div class="layer layer-3"></div>
  </div>
</div>

CSS样式:

包裹容器.wrapper设置了固定的高度,定位方式为相对定位,并且设置透视度perspective为800,使其转换为3D空间

1
2
3
4
5
6
.wrapper {
 positionrelative;
 height800px;
 -webkit-perspective: 800;
 perspective: 800;
}

所有的图层.layer元素都采用绝对定位,并使用will-change属性告诉浏览器对即将执行的transform进行优化。

1
2
3
4
.layer {
 positionabsolute;
 will-change: transform;
}

视觉差容器.container使用绝对定位,相对于包裹容器居中。overflow属性设置为hidden,同时设置圆角和阴影效果。并使用transform-style: preserve-3d;来使所有子元素在3D空间中展现。由于IE不支持该属性,所以在IE中没有3D效果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
.container {
 positionabsolute;
 left50%;
 top50%;
 width840px;
 height500px;
 margin-left-420px;
 margin-top-250px;
 backgroundblack;
 overflowhidden;
 border-radius: 3px;
 -webkit-transform-style: preserve-3d;
 transform-style: preserve-3d;
 will-change: transform;
 box-shadow: 0 60px 100px rgba(0000.5);
}

3个背景图层同样居中定位,使用transform属性将其缩小0.7倍。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
.layer-1,
.layer-2,
.layer-3 {
 top50%;
 left50%;
 margin-left-630px;
 margin-top-375px;
 width1260px;
 height750px;
 -webkit-transform: scale(0.7);
         transform: scale(0.7);
}
.layer-1 {
 background-imageurl(../img/1.jpg);
}
.layer-2 {
 background-imageurl(../img/2.png);
}
.layer-3 {
 background-imageurl(../img/3.png);
}

流光层也居中定位,使用椭圆渐变作为背景,并设置背景混合模式mix-blend-mode为color-dodge模式。并分别为各个层设置背景图像。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.light {
 top50%;
 left50%;
 margin-left-840px;
 margin-top-800px;
 width1680px;
 height1000px;
 background: -webkit-radial-gradient(ellipse closest-side at center#6c6c6c#000000);
 background: radial-gradient(ellipse closest-side at center#6c6c6c#000000);
 mix-blend-mode: color-dodge;
 opacity: .6;
 z-index3;
}
.light-2 {
 z-index4;
 background: -webkit-radial-gradient(ellipse closest-side at center#ffffff#000000);
 background: radial-gradient(ellipse closest-side at center#ffffff#000000);
 mix-blend-mode: screen;
 opacity: .3;
}

JavaScript

该视觉差特效使用jQuery代码来处理鼠标移动时为各个图层应用不同的CSS transform属性,来达到视觉差效果。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var $body = $('body');
var WIDTH = $body.width();
var HEIGHT = $body.height();
var $ad = $('.container');
var $light = $ad.find('.light');
var $layer1 = $ad.find('.layer-1');
var $layer2 = $ad.find('.layer-2');
var $layer3 = $ad.find('.layer-3');
 
function moveAd(e) {
    var xPer = e.clientX / WIDTH;
    var yPer = e.clientY / HEIGHT;
    var rotateX = 5 - (yPer * 10);
    var rotateY = -5 + (xPer * 10);
    $ad.css({
        transform: 'rotateX(' + rotateX + 'deg) rotateY(' + rotateY + 'deg) '
    });
    var translateX = -5 + (xPer * 10);
    var translateY = -5 + (yPer * 10);
    $layer2.css({
        transform: 'scale(.7) translateX(' + translateX + 'px) translateY(' + translateY + 'px)'
    });
    $layer3.css({
        transform: 'scale(.7) translateX(' + (translateX * 2) + 'px) translateY(' + (translateY * 2) + 'px)'
    });
    var lightX = 800 - (xPer * 1600);
    var lightY = 300 - (yPer * 600);
    $light.css({
        transform: 'translateX(' + lightX + 'px) translateY(' + lightY + 'px)'
    });
}
$body.on('mousemove', moveAd);


金币说明:注册即送10金币,每日签到可获得更多金币,成为VIP会员可免金币下载! 充值金币充值会员更多说明»
描述:jQuery和CSS3 3D海报背景视觉差特效。该视觉差特效在使用鼠标在屏幕上下左右移动的时候,海报中的各种元素就会以不同的速度运动,形成视觉...
 标签:

文件目录结构

  • img
      • ┝ breaking-bad-layer-2.png
      • ┝ breaking-bad-layer-3.png
      • ┝ breaking-bad-layer-1.jpg
  • ┝ www.zzsucai.com.txt
  • ┝ 站长素材网.url
  • css
      • ┝ style.css
  • js
      • ┝ jquery-2.1.1.min.js
  • ┝ index.html

相关素材

讨论这个素材(0)回答他人问题或分享使用心得奖励金币

〒_〒 居然一个评论都没有……

表情  文明上网,理性发言!
我的金币余额: 0 已下载次数: 2
所需金币:免费开始下载

金币获取:签到、评论、投搞、充值、发帖、回帖    » 在线充值(10金币=1元)