版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、CSS3濾鏡及Canvas、SVG和IE濾鏡替代方案詳解一、前言 IE特有的濾鏡常常作為CSS3各種新特性的降級處理補(bǔ)充,而Adobe轉(zhuǎn)向HTML5后與Chrome合作推出CSS3的Filter特性,因此當(dāng)前僅 Webkit內(nèi)核的瀏覽器支持CSS3 Filter,而FF和IE10+則需要使用SVG濾鏡(svg effects for html)或Canvas作為替代方案處理了,而IE5.59則使用IE濾鏡、JS+DIV或VML處理!本篇為先占個坑,以后慢慢填_! CSS3 Filter兼容性表 SVG eff
2、ect for HTML兼容性表 下文將探討以下濾鏡! Speia濾鏡 灰度圖濾鏡 高斯模糊濾鏡 反色濾鏡 飽和度濾鏡 對比度濾鏡 亮度濾鏡 色相旋轉(zhuǎn)濾鏡 &
3、#160; 陰影濾鏡 先P張原圖作參考系(清純MM哦?。? 二、Speia濾鏡(Speia) Speia濾鏡是對圖片或元素整體進(jìn)行棕褐色處理,就是老照片那種效果。下面直接看療效! 看,歲月的痕跡啊,是不是有媽媽年代的感覺呢?! 1. CSS3濾鏡實(shí)現(xiàn)<style type="text/css"> .sepia /* 格式,filer: sepia(效果范圍) * 效果范圍,取值范圍為0-1或0-1
4、00%;0表示無效果,1或100%表示最大效果 */ -webkit-filter: sepia(100%); -moz-filter:sepia(100%); -o-filter: sepia(100%); -ms-filter: sepia(100%); filter: sepia(100%); </style><div class="sepia" style="background:url(./mm.jpg)"></div> 2. IE5.59特的處理
5、方式(待研究) 嘗試過IE濾鏡 filter:progid:XDImageTransform.Microsoft.MaskFilter(color=顏色) ,僅僅能使用gif圖片(其他格式的圖片將導(dǎo)致整個元素消失不見),而且遮罩層與圖片重合的部分將變?yōu)榭瞻滓黄?,另外在IE11瀏覽器文檔模式為5.59下濾鏡均失效(元素按照沒有設(shè)置濾鏡的方式被渲染顯示)。結(jié)論:IE濾鏡無法處理Sepia效果。 而通過js填坑方面,想法1:在元素表面附加一層半透明棕褐色的遮罩層,但效果與CSS3 Filter相距甚遠(yuǎn)
6、,失敗告終。 3. FF和IE10+的處理方式 可使用Canvas作處理,下面是簡單實(shí)現(xiàn)的代碼,目標(biāo)元素 <img id="sepia" src="./mm.jpg"/> / 定義處理方法var sepia = function(el) var canvas = document.createElement(canvas); var w = canvas.width = el.offsetWidth, h = canvas.height = el.
7、offsetHeight; var ctx = canvas.getContext(2d); ctx.drawImage(el, 0, 0); / 對像素作處理 var imgData = ctx.getImageData(0, 0, w, h), d = imgData.data; for (int i = 0, len = d.length; i < len; i+=4) var r = di, g = di+1, b = di+2; di = (r * 0.393)+(g * 0.769)+(b * 0.189); di+1 = (r * 0.349)+(g * 0.686)+(b
8、 * 0.168); di+2 = (r * 0.272)+(g * 0.534)+(b * 0.131); ctx.putImageData(imgData, 0, 0); / 導(dǎo)出 var img = new Image(); img.src = ctx.toDataURL("image/*"); return img;/ 調(diào)用var img = sepia(document.getElementById(sepia);document.body.appendChild(img); 三、灰度圖濾鏡(Grayscale) 灰度圖藝術(shù)范! &
9、#160; 1. CSS3濾鏡的實(shí)現(xiàn)<style type="text/css"> .grayscale /* 格式,filer: grayscale(效果范圍) * 效果范圍,取值范圍為0-1或0-100%;0表示無效果,1或100%表示最大效果 */ -webkit-filter: grayscale(100%); -o-filter: grayscale(100%); -moz-filter: grayscale(100%); -ms-filter: grayscale(100%); filter: grayscale(100%); </
10、style><div class="grayscale" style="background:url(./mm.jpg)"></div> 2. IE5.59的實(shí)現(xiàn) 使用IE濾鏡: filter:gray; 3. FF和IE10+的處理方式 使用SVG effect for HTML的方式: grayscale.svg:<svg xmlns="
11、/2000/svg"> <filter id="grayscale"> <feColorMatrix type="matrix" values="0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0"/> </filter> </svg> index.html:<s
12、tyle type="text/css">.grayscale filter:url(./grayscale.svg#grayscale);</style><div class="grayscale" style="background:url(./mm.jpg)"></div> 可使用Canvas作處理,下面是簡單實(shí)現(xiàn)的代碼,目標(biāo)元素 <img id="grayscale" src="./mm.jp
13、g"/> var grayscale = function(el) var canvas = document.createElement(canvas); var w = canvas.width = el.offsetWidth, h = canvas.height = el.offsetHeight; var ctx = canvas.getContext(2d); ctx.drawImage(el, 0, 0); / 對像素作處理 var imgData = ctx.getImageData(0, 0, w, h), d = imgData.data; for
14、 (int i = 0, len = d.length; i < len; i+=4) var r = di, g = di+1, b = di+2; di = di+1 = di+2 = (r+g+b)/3; ctx.putImageData(imgData, 0, 0); / 導(dǎo)出 var img = new Image(); img.src = ctx.toDataURL("image/*"); return img;/ 調(diào)用var img = grayscale(document.getElementById(grayscale);document.body.
15、appendChild(img); 四、高斯模糊濾鏡(Blur) 高斯模糊讓我想起忘了戴眼鏡上街的情景*! 1. CSS3濾鏡的實(shí)現(xiàn)<style type="text/css"> .blur /* 格式,filer: blur(模糊半徑) * 模糊半徑,取值范圍0Npx,0為無效果 */ -webkit-filter: blur(1px); -moz-filter: blur(1px); -o-filter: blur(1px); -ms-filter: blur(1px); filter:
16、 blur(1px); </style><div class="blur" style="background:url(./mm.jpg)"></div> 2. IE5.59的實(shí)現(xiàn) 使用IE濾鏡: filter: progid:DXImageTransform.Microsoft.Blur(PixelRadius=10, MakeShadow=false); ,該方式在IE11中文檔
17、模式為5.59均起作用。 3. FF和IE10+的實(shí)現(xiàn) 使用SVG effect for HTML的方式: blur.svg:<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-/W3C/DTD SVG 1.1/EN" "/Graphics/SVG/1.1/DTD/svg11.dtd&qu
18、ot;><svg version="1.1" xmlns="/2000/svg" xmlns:xlink="/1999/xlink" xmlns:ev="/2001/xml-events" baseProfile="full"> <defs> <filter id="blur"> <feGaussianBlur stdDeviatio
19、n="10" /> </filter> </defs> <image xlink:href="./mm.jpg" x="0" y="0" height="200" width="200" filter="url(#blur)"/></svg> index.html(FF下):<style type="tex
20、t/css">.blur filter: url(blur.svg#blur);</style><div class="blur" style="background:url(./mm.jpg)"></div> index.html(IE10+下,IE10+不支持直接在樣式表對元素應(yīng)用SVG濾鏡):<style type="text/css">.blur background-iam
21、ge: url(blur.svg);</style><div class="blur"></div> 使用Canvas作處理,高斯模糊的算法請參考:阮老師的“高斯模糊的算法”參考譯文,處理庫StackBlur.js。 處理庫API: stackBlurImage( sourceImageID, targetCanvasID, radius, blurAlphaChannel ); · sourceImageID表示要模糊的圖片的id,
22、默認(rèn)這個圖片要隱藏;· targetCanvasID表示要顯示模糊圖片的canvas元素的id;· radius表示模糊的半徑大小。不過,根據(jù)我的對比測試,radius好像與CSS中filter濾鏡的模糊值不是1:1匹配的,反倒是有些類似2:1. 也就是這里的20px的半徑模糊近似于CSS中blur濾鏡值設(shè)置為10px;· blurAlphaChannel為布爾屬性,表示aplha透明通道是否要模糊,true表示要模糊。 五、反色濾鏡(Inver) 經(jīng)歷過膠圈年代的同學(xué)都熟悉哦! 1. CSS3濾
23、鏡的實(shí)現(xiàn)<style type="text/css"> .invert /* 格式,filer: invert(效果范圍) * 效果范圍,取值范圍01或0100%,0為無效果,1或100%表示最大效果 */ -webkit-filter: invert(1); -moz-filter: invert(1); -o-filter: invert(1); -ms-filter: invert(1); filter: invert(1); </style><div class="invert" style="backgr
24、ound:url(./mm.jpg)"></div> 2. IE5.59的實(shí)現(xiàn)(待研究) 3. FF和IE10+的實(shí)現(xiàn) 可使用Canvas作處理,下面是簡單實(shí)現(xiàn)的代碼,目標(biāo)元素 <img id="invert" src="./mm.jpg"/> var invert = function(el) var canvas = document.
25、createElement(canvas); var w = canvas.width = el.offsetWidth, h = canvas.height = el.offsetHeight; var ctx = canvas.getContext(2d); ctx.drawImage(el, 0, 0); / 對像素作處理 var imgData = ctx.getImageData(0, 0, w, h), d = imgData.data; for (int i = 0, len = d.length; i < len; i+=4) var r = di, g = di+1,
26、b = di+2; di = 255 - r; di+1 = 255 - g; di+2 = 255 - b; ctx.putImageData(imgData, 0, 0); / 導(dǎo)出 var img = new Image(); img.src = ctx.toDataURL("image/*"); return img;/ 調(diào)用var img = invert(document.getElementById(invert);document.body.appendChild(img); 六、飽和度濾鏡(Saturate) 暖暖的趕腳!
27、 1. CSS3濾鏡的實(shí)現(xiàn)<style type="text/css"> .saturate /* 格式,filer: saturate(效果范圍) * 效果范圍,取值范圍>=0的數(shù)字或百分?jǐn)?shù),1為無效果,0為灰度圖 */ -webkit-filter: saturate(2); -moz-filter: saturate(2); -o-filter: saturate(2); -ms-filter: saturate(2); filter: saturate(2); </style><div class
28、="saturate" style="background:url(./mm.jpg)"></div> 2. IE5.59的實(shí)現(xiàn)(待研究) 3. FF和IE10+的實(shí)現(xiàn) (待研究) 七、對比度濾鏡(Contrast) 1. CSS3濾鏡的實(shí)現(xiàn)<style type="text/css"> .contrast /* 格式,filer: contrast(效果范圍) *
29、效果范圍,取值范圍>=0的數(shù)字或百分?jǐn)?shù),1為無效果 */ -webkit-filter: contrast(2); -moz-filter: contrast(2); -o-filter: contrast(2); -ms-filter: contrast(2); filter: contrast(2); </style><div class="contrast" style="background:url(./mm.jpg)"></div> 2. IE5.59的實(shí)現(xiàn)(待研究)
30、 3. FF和IE10+的實(shí)現(xiàn) (待研究) 八、亮度濾鏡(Brightness) 曝光過度哦! 1. CSS3濾鏡的實(shí)現(xiàn)<style type="text/css"> .brightness /* 格式,filer: brightness(效果范圍) * 效果范圍,取值范圍>=0的數(shù)字或百分?jǐn)?shù),1為無效果 */ -webkit-filter: brightness(2); -moz-filter: brightness(2); -o-filter: bri
31、ghtness(2); -ms-filter: brightness(2); filter: brightness(2); </style><div class="brightness" style="background:url(./mm.jpg)"></div> 2. IE5.59的實(shí)現(xiàn)(待研究) 3. FF和IE10+的實(shí)現(xiàn) 可使用Canvas作處理,下面是簡單實(shí)現(xiàn)的代碼,目標(biāo)元素 <img id="brig
32、htness" src="./mm.jpg"/> / 原理:讓圖像變得更亮或更暗,算法將紅色通道、綠色通道、藍(lán)色通道,同時加上一個正值或負(fù)值。var brightness = function(el, delta) var canvas = document.createElement(canvas); var w = canvas.width = el.offsetWidth, h = canvas.height = el.offsetHeight; var ctx = canvas.getContext(2d); ctx.drawIm
33、age(el, 0, 0); / 對像素作處理 var imgData = ctx.getImageData(0, 0, w, h), d = imgData.data; for (int i = 0, len = d.length; i < len; i+=4) var r = di, g = di+1, b = di+2; di = r + delta; di+1 = g + delta; di+2 = b + delta; ctx.putImageData(imgData, 0, 0); / 導(dǎo)出 var img = new Image(); img.src = ctx.toDat
34、aURL("image/*"); return img;/ 調(diào)用var img = brightness(document.getElementById(brightness, 10);document.body.appendChild(img); 九、色相旋轉(zhuǎn)濾鏡(Hue Rotate) 詭異的趕腳 1. CSS3濾鏡的實(shí)現(xiàn)<style type="text/css"> .hue-rotate /* 格式,filer: hue-rotate(效果范圍) * 效果范圍,取值范0deg36
35、5deg,0(默認(rèn)值)為無效果 */ -webkit-filter: hue-rotate(200deg); -moz-filter: hue-rotate(200deg); -o-filter: hue-rotate(200deg); -ms-filter: hue-rotate(200deg); filter: hue-rotate(200deg); </style><div class="hue-rotate" style="background:url(./mm.jpg)"></div>
36、 2. IE5.59的實(shí)現(xiàn)(待研究) 3. FF和IE10+的實(shí)現(xiàn) (待研究) 十、陰影濾鏡(Drop Shadow) 增加立體感! 1. CSS3濾鏡的實(shí)現(xiàn)<style type="text/css"> .drop-shadow /* 格式,filer: drop-shadow(x-offset y-offset 陰影模糊半徑 陰影顏色) * x-offset和y-offset為陰影的相對于元素左上角的位移距離; * 注意: * 1. 陰
37、影的外觀受border-radius樣式的影響; * 2. :after和:before等偽元素會繼承陰影的效果。 */ -webkit-filter: drop-shadow(5px 5px 0px #333); -moz-filter: drop-shadow(5px 5px 0px #333); -o-filter: drop-shadow(5px 5px 0px #333); -ms-filter: drop-shadow(5px 5px 0px #333); filter: drop-shadow(5px 5px 0px #333); / 圓角 border: solid 10px #e00; -webkit-border-radius: 10px; </style><div class="drop-shadow" style="background:url(./mm.jpg)"></div> 2. IE5.59的實(shí)現(xiàn) 在真實(shí)的IE5.59下可使用IE濾鏡(IE10+中文檔模式為5.59則下列的IE濾鏡無效):/* * color為陰
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版小區(qū)商業(yè)街物業(yè)社區(qū)環(huán)境美化服務(wù)合同3篇
- 2025版挖掘機(jī)產(chǎn)品售后服務(wù)與技術(shù)升級合同范本3篇
- 二零二五年度農(nóng)產(chǎn)品展銷中心攤位租賃合同
- 2024項目代建協(xié)議合同
- 二零二五個人權(quán)利質(zhì)押貸款合同范本3篇
- 2025年度旅游行業(yè)納稅擔(dān)保服務(wù)協(xié)議
- 2025版二手房買賣合同風(fēng)險評估協(xié)議3篇
- 2025年苗圃租賃合同及苗木種植與科研合作協(xié)議
- 二零二五寵物醫(yī)院獸醫(yī)職務(wù)聘任與培訓(xùn)合同4篇
- 二零二五年度出院患者出院前評估協(xié)議書范本4篇
- 寒潮雨雪應(yīng)急預(yù)案范文(2篇)
- 2024人教新目標(biāo)(Go for it)八年級英語下冊【第1-10單元】全冊 知識點(diǎn)總結(jié)
- 垃圾車駕駛員聘用合同
- 2024年大宗貿(mào)易合作共贏協(xié)議書模板
- 變壓器搬遷施工方案
- 單位轉(zhuǎn)賬個人合同模板
- 八年級語文下冊 成語故事 第十五課 諱疾忌醫(yī) 第六課時 口語交際教案 新教版(漢語)
- 中考語文二輪復(fù)習(xí):記敘文閱讀物象的作用(含練習(xí)題及答案)
- 2024年1月高考適應(yīng)性測試“九省聯(lián)考”數(shù)學(xué) 試題(學(xué)生版+解析版)
- (正式版)JBT 11270-2024 立體倉庫組合式鋼結(jié)構(gòu)貨架技術(shù)規(guī)范
- EPC項目采購階段質(zhì)量保證措施
評論
0/150
提交評論