**變灰這個效果很常見,在我這裡暫時沒有找到最優解決方式,
先把今天的研究結果記錄一下。
第一種方案 :
對所有靜態資源檔案進行灰度處理,得到新乙個資源目錄,例如asset_ori 原始資源 asset_gray灰度資源,將檔案對映指向灰度資源
這裡面包括對img以及css中所有顏色屬性的處理,css裡面最好不要有red,green這種字母顏色,但是還是會有#xyz,rgb(x,y,z),rgba(x,y,z,o)
灰度演算法
臨時變數=(原紅色值*30+原綠色值*59+原藍色值*11)/100;第二種方案 css方案:原紅色值=臨時變數;
原綠色值=臨時變數;
原藍色值=臨時變數;
針對ie10以下 filter:progid:dximagetransform.microsoft.basicimage(grayscale=1);
針對ie10 不支援filter
針對chrome filter:grayscale(1);
針對firefox filter: url(desaturate.svg#grayscale); 利用svg,經測試,發現只能運用在img元素上,其他元素上運用直接不可見了
針對opera 暫未找
第三種方案 js方案
不說效能,先說原理,利用canvas對進行灰度處理,得到base64的新影象資料,可以直接設定在img的src或者element的backgroud-image上。
為了達到這個目的,可以在樣式中預留出需要重新編譯的部分,比如 .add.gray, .upload.gray,使用js將裡面的background-image重新設定
這個方案最終接近於第一種方案,只不過處理的動作和時間放在了客戶端
三種方案比較
第一種是完美的,可以寫個通用程式處理,工作量也不大,但是對於海量,這磁碟消耗就x2了,如果再有cdn,那消耗就更大了
第二種很便捷,不完美,有瀏覽器相容問題。
第三種看起來很美,能完美處理,處理動作和時間都放在了客戶端,只是優化的問題還需要再考慮
綜合起來
我傾向於三種綜合處理,根據場景,1||1+2||1+2+3,盡可能地利用原生css的能力
IE 10無法登陸
今天 遇到 ie10不能登陸的bug 摸索了半天,終於解決問題,在這裡跟大家分享下,希望對大家有所幫助 下面是驗證是否登入的標記 是否登陸 public static bool islogin 在ie10中登入時 islogin的值始終都是false 原因是在於c windows microsoft...
IE10中flexigrid無法顯示資料的解決方法
在其他瀏覽器是好的,ie10瀏覽器卻不能夠顯示資料,並且也沒有報任何錯誤。qaroyjt將 修改如下就好了 原來 t append tbody 修改後 複製 www.cppcns.com 如下 t程式設計客棧 append tbody.outerhtml 當然 情況可能各種各樣,這僅作一種思路參考。...
Vue CLI 3 配置相容IE10
最近做了乙個基於vue的專案,需要相容ie瀏覽器,目前實現了打包後可以在ie10以上執行,但是還不支援在執行時相容ie10及以上。vue2.0 相容ie9及其以上 安裝依賴 yarn add dev babel polyfill在入口檔案main.js引入依賴 import babel polyfi...