äº‹å‡ºè‡ªç„¶æœ‰å› ï¼Œæœ¬æ–‡ä¹Ÿæ˜¯å¦‚æ¤ï¼Œé›…å®‰ï¼ŒåŠ æ²¹ï¼?
相信最近ä¸?少站长和技术在度娘谷æŒâ€œCSS 网页 ç?°è‰²â€?
本æ?¥è§‰å¾—这类的介ç»?网上已ç»?很多了,ä¸?想å†?æ?’一脚了,ä¸?过今天忽然有朋å?‹å?ˆå?‘æˆ‘é—®èµ·ï¼Œè‡ªä»¥ä¸ºè‡ªå·±å¾ˆäº†è§£çš„æƒ…å†µä¸‹ç»™äº†å‡ ä¸ªæ–¹æ¡ˆï¼š
- å ªç§°å®Œç¾Žçº§
æ•´ç«™æ?¢å›¾ç‰‡ï¼Œä¸?过就是工作é‡?ç¨?大,还得æ?¢å›žæ?¥ï¼Œè¦?æ˜¯æœ‰ä¼šå‘˜ä¸Šä¼ çš„å›¾å°±æ›´éº»çƒ¦äº†ï¼ˆæ˜Žæ˜¾è°ƒä¾ƒï¼‰
- 纯CSS实现
IE:filter
Chrome:filter
效果很�错,实现也简�,�过 FF, OPERA,SAFARI �支�, 手机端就更�行了
- HTML5 filereader实现去色功能
效果良好,而且有�错类库实现了
代ç ?é‡?ç¨?大,ä¸?过低版本æµ?览器全挂掉
- 结���两点
filter - ç•¥
grayscale.js -
缺点:
如果页é?¢å›¾ç‰‡é‡?å¾ˆå¤§ï¼Œå›¾ç‰‡åŠ è½½æ—¶é—´å¾ˆå¾ˆé•¿ï¼Œé¡µé?¢å?¯èƒ½ä¼šå‡ºçŽ°é—ªå±?
然å?Žï¼ŒJS本æ?¥æ•ˆçŽ‡å°±å??低,所以处ç?†å¤§é‡?图片,自然页é?¢ä¼šå?¡
然�在自己�得�的时候,朋��过�一段(说是�事给的):
html{
filter: url("svg+xml;utf8,<svg xmlns=\'http://www.w3.org/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>#grayscale");
filter:gray;
-webkit-filter: grayscale(100%);
}
ä¹?一看,虽然让我想起了还有SVG这么个东西å?¯ä»¥ä½¿ï¼Œä¸?过估计也就IEå’ŒChromeè¡Œå?§ï¼Œå?°è±¡ä¸çœŸæ²¡è®°å¾—FF有支æŒ?filter
,然�打开FF测试了下,还真�以。
然å?Žè‡ªå·±ä¹ŸåŠ¨æ‰‹åŽ»è°·æŒäº†ä¸‹ï¼Œæ‰?想上é?¢çš„代ç ?出处应该是在这里:
����现在stackoverflow上也有讨论:
然��找了些资料,总结方案如下:
html{
/*
* SVG,�建议�独SVG文件
* ä¼šå¢žåŠ ä¸€æ¬¡è¯·æ±‚ï¼Œå¦‚æžœæ”¯æŒ?SVG基本data:基本也就没压力了,如下
* SVG文件:/test/grayscale.svg
*/
/* filter: url(grayscale.svg#grayscale); */
/*
* æœ‰å“¥ä»¬ç ”ç©¶è¯´SVG的支æŒ?情况如下:
* http://www.fettblog.eu/blog/2012/06/11/forcing-chrome-to-print-all-pages-in-grayscale/
* SVG version for IE10, Chrome 17, FF3.5, Safari 5.2 and Opera 11.6 -- does not, need to be prefixed. See below
* �过我测试了下IE10(WIN7&WIN8)都�支�,所以基本兼容情况如下:
* Chorme 25/26�支�,手上没有更低版本的Chorme测试
* FF3.5+
*/
filter:url(svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxmaWx0ZXIgaWQ9ImdyYXlzY2FsZSI+PGZlQ29sb3JNYXRyaXggdHlwZT0ibWF0cml4IiB2YWx1ZXM9IjAuMzMzMyAwLjMzMzMgMC4zMzMzIDAgMCAwLjMzMzMgMC4zMzMzIDAuMzMzMyAwIDAgMC4zMzMzIDAuMzMzMyAwLjMzMzMgMCAwIDAgMCAwIDEgMCIvPjwvZmlsdGVyPjwvc3ZnPg==#grayscale);
/* Webkit only, Chrome & Safari 6+ */
-webkit-filter:grayscale(100%);
/* future-proof */
filter:grayscale(100%);
/* IE4-8 and 9 (deprecated). */
filter:gray;
}
从上�注释基本�以看出对于IE10和低版本Opera CSS处�基本就是没折了;
以上代ç ?使用时属性顺åº?ä¸?能调æ?¢ï¼›
以上选择器建议html或作用于html上,å?¦åˆ™åœ¨IE下å?¯èƒ½ä¼šçœ‹åˆ°éƒ¨åˆ†å…ƒç´ ä¾?旧彩色,当然IE9æ— è®ºæ€Žæ ·éƒ½å¤„ç?†çš„ä¸?是很好
说了这么多,我们�实践下:
æ?¥å¼ 美女看效果:
到了这里,在找资料的过程还�现一个Future-filter的测试页,�以看看未�的filter,下�还有�Filtered Video“ ^O^
OK,上�说的都是CSS解决方案,我��还说了有JS的解决方案;主�说下grayscale.js
的,如果自己去写原生JS解决,看��以自己动手试试
项目地�:
首先,grayscale.js
ä¸?是兼容所有æµ?è§ˆå™¨ï¼Œçœ‹å…¶ä¸»é¡µçš„æ ‡é¢˜ï¼šã€Šâ€œGrayscalingâ€? in non-IE browsers》 ,解决方案并ä¸?适应于IE,至少是低版本的IE
然å?ŽDEMO效果在æ¤ï¼š
最��grayscale.js
的用法:
var el = document.getElementById( 'myEl' );
grayscale( el );
// Alternatively, pass a DOM collection
// (all elements will get "grayscaled")
grayscale( document.getElementsByTagName('div') );
//�作用于jQuery
// Even works with jQuery collections:
grayscale( $('div') );
//To reset an element (back to its original colourful state) you must call grayscale.reset() and pass whatever elements you want reset:
grayscale.reset( el );
// reset() also accepts DOM/jQuery collections
grayscale.reset( $('div') );
//预处�,主�用于大图片
//The ‘prepare’ function, as discussed earlier, should be called when there’s a large image to process or even if there are several smaller images. Be aware that larger images will take quite a while to process (just a 300×300 PNG takes about 3 seconds in ‘prepare’ mode).
grayscale.prepare( document.getElementById('myEl') );
// Also accepts DOM/jQuery collections
grayscale.prepare( $('.gall_img') );
�演示一下:
grayscale(document.body);
æ?¥å¼ 美女看效果:
�考:
上一��:Chrome更改parseInt默认转�规则
下一篇:javascriptä½?è¿?算转整型å˜åœ¨é£Žé™©
共1评论
�宇轩说:
于 2013-5-18 12:32:58 #
欢迎回访,æ?¥çœ‹ä½ 了
回�