*新闻详情页*/>
平时大家要完成倒映的实际效果,1般的做法是应用好几个DOM元素肯定精准定位+scale(负⑴)或rotate。这类方式的缺陷是占有室内空间和DOM元素过量。
在应用webkit核心的访问器中(chrome,safari,挪动端访问器),可使用-webkit-box-reflect特性来完成倒映,英语的语法以下所示
[ above | below | right | left ]? <length>? <image>?
该值包含了3一部分:方向+偏位量+遮罩层
方向是必不能少的;在应用遮罩层的情况下,偏位量是不能少的,如沒有则用零替代
!!!关键:遮罩层的实际效果与色调不相干,比如应用渐变色色调做遮罩,全是实色则全透明,全透明则暴漏初始色调
应用示比如下所示:
<!DOCTYPE html> <html> <head> <meta charset="utf⑻"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> <style type="text/csss"> .box{ width:200px; height:200px; margin-bottom:20px;transform:scale(⑴,1); background-image:linear-gradient(90deg,red,yellow);-webkit-box-reflect:below 10px linear-gradient(180deg,transparent,#000); } </style> </head> <body> <div class="box"></div> </body> </html>
实际效果以下:
假如必须在firefox中完成相近实际效果,可使用-moz-element()涵数来完成,可是在转动下实际效果区别较大,以下所示。
<!DOCTYPE html> <html> <head> <meta charset="utf⑻"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> <style type="text/css"> .box{ width:200px; height:200px; margin:100px 0 0 100px; } .box1{ background-image:linear-gradient(180deg,red,yellow); transform:scale(1,⑴) rotate(45deg)} .box2{ background-image:-moz-element(#box1); } </style> </head> <body> <div class="box box1" id="box1"></div> <div class="box box2" id="box2"></div> </body> </html>
在chrome下应用-webkit-box-reflect的实际效果是这样的
假如要适配IE访问器还能够应用SVG或canvas来做,SVG关键运用pattern+mask+linearGradient+scale来做,canvas应用scale+globalCompositeOperation。
SVG事例一部分编码以下:
<svg width="200" height="200"> <defs> <linearGradient id="a" x1="0" y1="0" x2="0" y2="1"> <stop offset="0%" style="stop-color:yellow"/> <stop offset="100%" style="stop-color:red"/> </linearGradient> <linearGradient id="b" x1="0" y1="0" x2="0" y2="100%"> <stop offset="0%" style="stop-color:rgba(255,255,255,0)"/> <stop offset="100%" style="stop-color:rgba(255,255,255,1)"/> </linearGradient> <mask id="c" x="0" y="0" width="1" height="1"> <rect x="0" y="0" width="100%" height="100%" style="fill:url(#b)" /> </mask> </defs> <rect x="0" y="0" width="200" height="200" style="fill:url(#a);" mask="url(#c)"> </svg>
canvas事例一部分编码以下
var canvas = document.getElementById('canvas'), ctx = canvas.getContext('2d'); var linearGradient1 = ctx.createLinearGradient(0,0,0,200); linearGradient1.addColorStop(0,"red"); linearGradient1.addColorStop(1,"yellow"); var linearGradient2 = ctx.createLinearGradient(0,0,0,200); linearGradient2.addColorStop(0,"transparent"); linearGradient2.addColorStop(1,"#ffffff"); ctx.fillStyle = linearGradient1; ctx.fillRect(0,0,200,200); ctx.globalCompositeOperation = 'destination-out'; ctx.fillStyle = linearGradient2; ctx.fillRect(0,0,200,200);
以上就是倒映完成的各种各样方式,比照之下用css3的-webkit-box-reflect完成最简易实际效果也好。期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多适用脚本制作之家。
Copyright © 2002-2020 如何创建网站_免费网站建站_网站建设文章_网站建设7个基本流程_自动建站 版权所有 (网站地图) 粤ICP备10235580号