Css gray 無法覆蓋IE10

2022-03-30 19:50:09 字數 1118 閱讀 9441

**變灰這個效果很常見,在我這裡暫時沒有找到最優解決方式,

先把今天的研究結果記錄一下。

第一種方案 :

對所有靜態資源檔案進行灰度處理,得到新乙個資源目錄,例如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...