国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

CSS3 Notes: -webkit-box-reflect實現倒影的實例

2024-07-11 08:58:06
字體:
來源:轉載
供稿:網友

平常我們要實現倒影的效果,一般的做法是使用多個DOM元素絕對定位+scale(負-1)或者rotate。這種方法的缺點是占據空間以及DOM元素過多。

在使用webkit內核的瀏覽器中(chrome,safari,移動端瀏覽器),可以使用-webkit-box-reflect屬性來實現倒影,語法如下所示

[ above | below | right | left ]? <length>? <image>?

該值包涵了三部分:方位+偏移量+遮罩層

方位是必不可少的;在使用遮罩層的時候,偏移量是不可少的,如沒有則用零代替

!!!重要:遮罩層的效果與顏色無關,例如使用漸變顏色做遮罩,都是實色則透明,透明則暴漏原始顏色

使用示例如下所示:

<!DOCTYPE html><html><head>  <meta charset="utf-8">  <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,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-8">  <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,-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實現最簡單效果也好。希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南华县| 洪洞县| 手机| 顺昌县| 桐梓县| 托克托县| 温泉县| 温州市| 同心县| 奉化市| 平和县| 双牌县| 扶风县| 左贡县| 日喀则市| 温泉县| 四会市| 平南县| 金沙县| 民权县| 禄丰县| 柳林县| 商城县| 五峰| 马鞍山市| 丽水市| 南涧| 原阳县| 旺苍县| 涞水县| 凤凰县| 新巴尔虎右旗| 和静县| 石景山区| 读书| 布拖县| 柘荣县| 太保市| 太康县| 平山县| 德兴市|