 
						该Apple TV背景视觉差的基本HTML结构如下:其中.light和.light-2是流光层。余下的3个层是背景图片层
| 1 2 3 4 5 6 7 8 9 | <divclass="wrapper">  <divclass="ad">    <divclass="layer light"></div>    <divclass="layer light light-2"></div>    <divclass="layer layer-1"></div>    <divclass="layer layer-2"></div>    <divclass="layer layer-3"></div>  </div></div> | 
包裹容器.wrapper设置了固定的高度,定位方式为相对定位,并且设置透视度perspective为800,使其转换为3D空间
| 1 2 3 4 5 6 | .wrapper { position: relative; height: 800px; -webkit-perspective: 800; perspective: 800;} | 
所有的图层.layer元素都采用绝对定位,并使用will-change属性告诉浏览器对即将执行的transform进行优化。
| 1 2 3 4 | .layer { position: absolute; 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 { 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: 060px100pxrgba(0, 0, 0, 0.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{ 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模式。并分别为各个层设置背景图像。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | .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;} | 
该视觉差特效使用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');varWIDTH = $body.width();varHEIGHT = $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');functionmoveAd(e) {    varxPer = e.clientX / WIDTH;    varyPer = e.clientY / HEIGHT;    varrotateX = 5 - (yPer * 10);    varrotateY = -5 + (xPer * 10);    $ad.css({        transform: 'rotateX('+ rotateX + 'deg) rotateY('+ rotateY + 'deg) '    });    vartranslateX = -5 + (xPer * 10);    vartranslateY = -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)'    });    varlightX = 800 - (xPer * 1600);    varlightY = 300 - (yPer * 600);    $light.css({        transform: 'translateX('+ lightX + 'px) translateY('+ lightY + 'px)'    });}$body.on('mousemove', moveAd); | 
特别申明:
			本站所有资源都是由网友投稿发布,或转载各大下载站,请自行检测软件的完整性!
			本站所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!
			如有侵权请联系我们删除下架,联系方式:lei1294551502@163.com