?解決方案:
1. Css sprite 雪碧圖,也稱為css精靈圖
2. Icon font 圖標(biāo)字體
3. Data URI scheme
實(shí)現(xiàn)原理:
雪碧圖: ? 它的基本原理是將網(wǎng)站中的所有的圖標(biāo)圖片整合到一張圖片中,該圖片使用css 中的width,height,background屬性和background-position屬性來(lái)渲染網(wǎng)站中請(qǐng)求頁(yè)面中的圖標(biāo)蚜枢。
Icon font: ?它的基本原理自定義一種字體,將不同的字配置作為icon圖案饭尝,然后通過(guò)css嵌入其中使用光坝。
?DataURI scheme: ? ?Data URI scheme是在RFC2397中定義的肴熏,將一些小的數(shù)據(jù),直接嵌入到網(wǎng)頁(yè)中硝皂,從而不用再?gòu)耐獠课募d入
優(yōu)勢(shì)&劣勢(shì)
雪碧圖
優(yōu)勢(shì)
1. 加快網(wǎng)頁(yè)加載速度
2. 能減少圖片的字節(jié)數(shù)
3. 解決了前端工程師的命名問(wèn)題
4. 便于后期維護(hù)常挚,更換方便
5. 可以避免鼠標(biāo)滑過(guò)的一些bug(IE6)
劣勢(shì)
1. 占據(jù)內(nèi)存(大量無(wú)用的空白)
2. 雪碧圖拼圖制作麻煩,
3. 影響瀏覽器的縮放功能
4. 雪碧圖調(diào)用的圖片不能被打印稽物,除非在@media中特殊說(shuō)明
5. 為了減少 HTTP 請(qǐng)求數(shù)(這是使用 CSS Sprite 一直強(qiáng)調(diào)的好處)奄毡,然而把所有的圖片都當(dāng)背景圖片來(lái)處理,尤其是那些傳達(dá)重要信息的圖片贝或,將會(huì)導(dǎo)致一個(gè)網(wǎng)站缺乏可訪問(wèn)性的問(wèn)題吼过,也會(huì)降低 HTML 中 title 和 alt 潛在的好處。其實(shí)咪奖,CSS sprite 本身并不會(huì)出錯(cuò)盗忱,也不會(huì)引發(fā)可訪問(wèn)性問(wèn)題(事實(shí)上,正確得使用會(huì)提高可訪問(wèn)性)羊赵。
不適合使用雪碧圖的場(chǎng)景
1. 網(wǎng)絡(luò)環(huán)境比較差
2. 移動(dòng)頁(yè)面夜間模式下
?ICON font
優(yōu)勢(shì)
1. 很好的解決了響應(yīng)式設(shè)計(jì)中圖形無(wú)損自適應(yīng)的問(wèn)題趟佃,可以通過(guò)font-size和color屬性來(lái)控制icon的大小和顏色
2. 體積小,可以無(wú)限拉伸
?劣勢(shì)
1. 樣式單一昧捷、顏色單一
2. 有少量的移動(dòng)設(shè)備可能會(huì)和icon fonts的字符編碼沖突闲昭,導(dǎo)致icon顯示不正常
3. 跨域問(wèn)題
4. 文字圖片的大小設(shè)置
5. 10p以下的字體chrome瀏覽器顯示12px
Data URI scheme
優(yōu)勢(shì)
使用一個(gè)data uri scheme
劣勢(shì)
瀏覽器使用的過(guò)程中不會(huì)緩存該圖片
?參考資料:
?Sprite
http://www.cnblogs.com/hustskyking/archive/2015/08/17/iconfont-opt.html
http://www.cnblogs.com/demix/archive/2009/11/28/1612715.html
https://segmentfault.com/q/1010000000407231
http://ntx.me/2015/05/21/IconFont/
https://think2011.net/2017/03/31/css-sprite/
Iconfont
http://www.cnblogs.com/hustskyking/archive/2015/08/17/iconfont-opt.html
http://www.cnblogs.com/demix/archive/2009/11/28/1612715.html
https://segmentfault.com/q/1010000000407231
http://ntx.me/2015/05/21/IconFont/
Data URI scheme
Data URI中,data表示取得數(shù)據(jù)的協(xié)定名稱靡挥,image/png 是數(shù)據(jù)類型名稱序矩,base64 是數(shù)據(jù)的編碼方法,逗號(hào)后面就是這個(gè)image/png文件base64編碼后的數(shù)據(jù)芹血。
Data URI scheme支持的類型有:
data: ,文本數(shù)據(jù)
data:text/plain,文本數(shù)據(jù)
data:text/html,HTML代碼
data:text/html;base64,base64編碼的HTML代碼
data:text/css,CSS代碼
data:text/css;base64,base64編碼的CSS代碼
data:text/javascript,Javascript代碼
data:text/javascript;base64,base64編碼的Javascript代碼
data:image/gif;base64,base64編碼的gif圖片數(shù)據(jù)
data:image/png;base64,base64編碼的png圖片數(shù)據(jù)
data:image/jpeg;base64,base64編碼的jpeg圖片數(shù)據(jù)
data:image/x-icon;base64,base64編碼的icon圖片數(shù)據(jù)
http://blog.csdn.net/c_mihoo/article/details/12774719
https://isux.tencent.com/understand-data-uri-performance.html