炫酷多层背景视觉差特效

所属分类:UI,媒体-悬停,图片展示

 17739  221  查看评论 (3)
分享到微信朋友圈
X
炫酷多层背景视觉差特效 ie兼容12

HTML结构:

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

<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空间

.wrapper {
 position: relative;
 height: 800px;
 -webkit-perspective: 800;
 perspective: 800;
}

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

.layer {
 position: absolute;
 will-change: transform;
}

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

.container {
 position: absolute;
 left: 50%;
 top: 50%;
 width: 840px;
 height: 500px;
 margin-left: -420px;
 margin-top: -250px;
 background: black;
 overflow: hidden;
 border-radius: 3px;
 -webkit-transform-style: preserve-3d;
 transform-style: preserve-3d;
 will-change: transform;
 box-shadow: 0 60px 100px rgba(0, 0, 0, 0.5);
}

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

.layer-1,
.layer-2,
.layer-3 {
 top: 50%;
 left: 50%;
 margin-left: -630px;
 margin-top: -375px;
 width: 1260px;
 height: 750px;
 -webkit-transform: scale(0.7);
         transform: scale(0.7);
}
.layer-1 {
 background-image: url(../img/1.jpg);
}
.layer-2 {
 background-image: url(../img/2.png);
}
.layer-3 {
 background-image: url(../img/3.png);
}

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

.light {
 top: 50%;
 left: 50%;
 margin-left: -840px;
 margin-top: -800px;
 width: 1680px;
 height: 1000px;
 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-index: 3;
}
.light-2 {
 z-index: 4;
 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属性,来达到视觉差效果。

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);
相关插件-悬停,图片展示

Css菜单悬停效果

一些菜单链接悬停效果为您的灵感, 使用CSS和Javript创建单个字母动画。
  悬停
 31770  350

jQuery hover时实现浮动

以简单的实现hover是的效果,加入了延时误操作处理鼠标快速滑过不会被触发。
  悬停
 39927  412

jQuery图片边框线条动画效果

本案例的主要效果是鼠标悬停在图片上,从其中的两个角分别延伸出两条线 类似两条河流交汇的效果
  悬停
 40777  436

12种CSS3 hover效果插件

非常好看实用的CSS3的hover效果, 用transition 、amination 制造好看及实用的交互体验
  悬停
 61474  488

讨论这个项目(3)回答他人问题或分享插件使用方法奖励jQ币 评论用户自律公约

    kelisi123 0
    2021/7/22 17:26:00
    为甚恶魔小芬的脸绿了😀
        eh?eh!0
        2021/9/14 18:13:58
        是的,他绿了
    回复
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
取消回复