成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

詳解CSS玩轉圖片Base64編碼

瀏覽:128日期:2022-06-02 16:14:21
目錄
  • 什么是 base64 編碼?  
  • 為什么要使用 Base64 編碼?  
  • CssSprites與Base64編碼  
  • 更便捷的將圖片轉化為Base64編碼  
  • 一些誤區
    • 1. 使用 Base64 不代表性能優化
    • 2. 頁面解析 CSS 生成的 CSSOM 時間增加

什么是 base64 編碼?  

我不是來講概念的,直接切入正題,圖片的 base64 編碼就是可以將一副圖片數據編碼成一串字符串,使用該字符串代替圖像地址。

這樣做有什么意義呢?我們知道,我們所看到的網頁上的每一個圖片,都是需要消耗一個 http 請求下載而來的(所有才有了 csssprites 技術的應運而生,但是 csssprites 有自身的局限性,下文會提到)。

沒錯,不管如何,圖片的下載始終都要向服務器發出請求,要是圖片的下載不用向服務器發出請求,而可以隨著 HTML 的下載同時下載到本地那就太好了,而 base64 正好能解決這個問題。

那么圖片的 base64 編碼長什么樣子呢?舉個栗子。www.google.com的首頁搜索框右側的搜索小圖標使用的就是base64編碼。我們可以看到:

//在css里的寫法#fkbx-spch, #fkbx-hspch {  background: url(data:image/gif;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAAP///yH5B…EoqQqJKAIBaQOVKHAXr3t7txgBjboSvB8EpLoFZywOAo3LFE5lYs/QW9LT1TRk1V7S2xYJADs=) no-repeat center;}
//在html代碼img標簽里的寫法<img src="data:image/gif;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAAP///yH5B…EoqQqJKAIBaQOVKHAXr3t7txgBjboSvB8EpLoFZywOAo3LFE5lYs/QW9LT1TRk1V7S2xYJADs=">

上面分別是圖片的 base64 編碼在 css 里面的寫法和在 html<img> 標簽里的寫法。base64 編碼長得就是這個樣子,當然 base64 編碼不僅僅運用在圖片編碼,還可以:

thunder://QUFodHRwOi8vZG93bi5zYW5kYWkubmV0L3RodW5kZXI3L1RodW5kZXI3LjEuNS4yMTUyLmV4ZVpa(不要復制我我真的不是種子)

嘿嘿沒錯,迅雷的“專用地址”也是用 Base64 加密的,有興趣自行 google,不做贅述。

為什么要使用 Base64 編碼?  

那么為什么要使用 base64 傳輸圖片文件?上文也有提及,因為這樣可以節省一個 http 請求。圖片的 base64 編碼可以算是前端優化的一環。效益雖小,但卻缺能積少成多。

說到這里,不得不提的是 CssSprites 技術,后者也是為了減少 http 請求,而將頁面中許多細小的圖片合并為一張大圖。那么圖片的 base64 編碼和 CssSprites 有什么異同,又該如何取舍呢?

所以,在這里要明確使用 base64 的一個前提,那就是被 base64 編碼的圖片足夠尺寸小。以博客園的 logo 為例:

如圖所示,博客園的 Logo 只有 3.27KB,已經很小了,但是如果將其制作轉化成 base64 編碼,生成的 base64 字符串編碼足足有 4406 個,也就是說,圖片被編碼之后,生成的字符串編碼大小一般而言都會比原文件稍大一些。即便 base64 編碼能夠被 gzip 壓縮,壓縮率能達到 50% 以上,想象一下,一個元素的 css 樣式編寫居然超過了 2000個 字符,那對 css 整體的可讀性將會造成十分大的影響,代碼的冗余使得在此使用 base64 編碼將得不償失。

那么,是不是表示 base64 編碼無用武之地呢?不然。當頁面中的圖片滿足以下要求,base64 就能大顯生手。

如果圖片足夠小且因為用處的特殊性無法被制作成雪碧圖(CssSprites),在整個網站的復用性很高且基本不會被更新。

那么此時使用 base64 編碼傳輸圖片就可謂好鋼用在刀刃上,思前想后,符合這個規則的,有一個是我們經常會遇到的,就是頁面的背景圖 background-image 。在很多地方,我們會制作一個很小的圖片大概是幾px*幾px,然后平鋪它頁面當背景圖。因為是背景圖的緣故,所以無法將它放入雪碧圖,而它卻存在網站的很多頁面,這種圖片往往只有幾十字節,卻需要一個 http 請求,十分不值得。那么此時將它轉化為 base64 編碼,何樂而不為?

下面是一個只有 50 字節的2*2的的背景圖。將其轉化成 base64 編碼,只有 100 多個字符,相比一個 http 請求,這種轉換無疑更值得推崇。

CssSprites與Base64編碼  

簡單陳述一下我對何時這使用這兩種優化方法的看法。

使用CssSprites合并為一張大圖:

頁面具有多種風格,需要換膚功能,可使用CssSprites

網站已經趨于完美,不會再三天兩頭的改動(例如button大小、顏色等)

使用時無需重復圖形內容

沒有 Base64 編碼成本,降低圖片更新的維護難度。(但注意 Sprites 同時修改 css 和圖片某些時候可能造成負擔)

不會增加 CSS 文件體積

使用base64直接把圖片編碼成字符串寫入CSS文件:

無額外請求

對于極小或者極簡單圖片

可像單獨圖片一樣使用,比如背景圖片重復使用等

沒有跨域問題,無需考慮緩存、文件頭或者cookies問題

更便捷的將圖片轉化為Base64編碼  

將圖片轉化為 base64 編碼有許多工具,例如本文中我所使用的http://www.pjhome.net/web/html5/encodeDataUrl.htm,但是很多這些網站是國外網站,經常被墻登陸不了。這里介紹一個更為快捷的方法,就是利用 Chrome 瀏覽器(我想 FEer 都應該有Chrome 瀏覽器吧=。=)。

在 chrome 下新建一個窗口,然后把要轉化的圖片直接拖入瀏覽器,打開控制臺,點 Source,如下圖所示,點擊圖片,右側就會顯示該圖片的 base64 編碼,是不是很方便。

一些誤區

Base64 雖有優點,但是缺點也很明顯,在使用上存在一些明顯的缺陷。

1. 使用 Base64 不代表性能優化

是的,使用 Base64 的好處是能夠減少一個圖片的 HTTP 請求,然而,與之同時付出的代價則是 CSS 文件體積的增大。

而 CSS 文件體積的增大意味著什么呢?意味著 CRP 的阻塞。

CRP(Critical Rendering Path,關鍵渲染路徑):當瀏覽器從服務器接收到一個HTML頁面的請求時,到屏幕上渲染出來要經過很多個步驟。瀏覽器完成這一系列的運行,或者說渲染出來我們常常稱之為“關鍵渲染路徑”。

通俗而言,就是圖片不會導致關鍵渲染路徑的阻塞,而轉化為 Base64 的圖片大大增加了 CSS 文件的體積,CSS 文件的體積直接影響渲染,導致用戶會長時間注視空白屏幕。HTML 和 CSS 會阻塞渲染,而圖片不會。

2. 頁面解析 CSS 生成的 CSSOM 時間增加

Base64 跟 CSS 混在一起,大大增加了瀏覽器需要解析CSS樹的耗時。其實解析CSS樹的過程是很快的,一般在幾十微妙到幾毫秒之間。

CSS 對象模型 (CSSOM):CSSOM是一個建立在web頁面上的 CSS 樣式的映射,它和DOM類似,但是只針對CSS而不是HTML。

CSSOM 生成過程:

CSSOM 生成過程大致是,解析 HTML ,在文檔的 head 部分遇到了一個 link 標記,該標記引用一個外部 CSS 樣式表,下載該樣式表后根據上述過程生成 CSSOM 樹。這里我們要知道的是,CSSOM 阻止任何東西渲染,(意味著在CSS沒處理好之前所有東西都不會展示),而如果CSS文件中混入了Base64,那么(因為文件體積的大幅增長)解析時間會增長到十倍以上。

而且,最重要的是,增加的解析時間全部都在關鍵渲染路徑上。

所以,當我們需要使用到 Base64 技術的時,一定要意識到上述的問題,有取舍的進行使用。

以上就是詳解CSS玩轉圖片Base64編碼的詳細內容,更多關于CSS玩轉圖片Base64編碼的資料請關注其它相關文章!

標簽: CSS HTML
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
国产网红主播福利一区二区| 亚洲1区2区3区4区| 欧美一级免费观看| 欧美日韩另类一区| 欧美一a一片一级一片| 在线观看成人免费视频| 久久国产主播精品| 一本一道久久a久久精品综合蜜臀| 一本不卡影院| 亚洲一区图片| 在线观看三级视频欧美| 色婷婷精品大在线视频| 欧美日韩色一区| 欧美一区二区三区在线视频 | 亚洲一区二区精品久久av| 亚洲最色的网站| 天天做天天摸天天爽国产一区| 视频一区二区国产| 久久99精品国产麻豆不卡| 国产成人免费在线观看| 91在线小视频| 99精品99| 欧美日韩在线三级| 久久免费看少妇高潮| 亚洲欧洲无码一区二区三区| 亚洲香肠在线观看| 激情六月婷婷综合| av中文字幕在线不卡| 国色天香一区二区| 欧美中日韩免费视频| 日韩一区和二区| 欧美高清一级片在线观看| 亚洲欧美区自拍先锋| 美女被吸乳得到大胸91| 99久久婷婷国产综合精品| 精品1区2区| 欧美亚洲综合一区| 欧美激情综合网| 美腿丝袜亚洲一区| 91小视频在线| 在线一区二区三区四区| 精品黑人一区二区三区久久| 亚洲丝袜自拍清纯另类| 国产资源在线一区| 亚洲国产一区二区在线| 欧美日韩激情在线| 亚洲丝袜另类动漫二区| 国产在线精品一区二区| 一区在线免费观看| 91精品国产综合久久精品| 亚洲男人的天堂网| 国产ts人妖一区二区| 亚洲精品一级| 日韩欧美自拍偷拍| 舔着乳尖日韩一区| 国内激情久久| 欧美一区二区免费视频| 亚洲精品成人a在线观看| 成人在线综合网| 一本久道久久综合中文字幕| 国产三区在线成人av| 久久精品国产澳门| 中文精品一区二区三区| 久久蜜桃av一区精品变态类天堂| 午夜免费欧美电影| 极品中文字幕一区| 欧美一区二区三区免费观看视频| 中文字幕一区二区三区在线不卡| 国产精品影视在线观看| 国产精品永久入口久久久| 51精品久久久久久久蜜臀| 香蕉成人啪国产精品视频综合网 | 亚洲国产精品第一区二区三区 | 国产精品中文字幕日韩精品| 色综合天天综合色综合av| 亚洲精品日日夜夜| 亚洲成国产人片在线观看| 国产福利视频一区二区三区| 99国产精品久久| 欧美日韩国产精品成人| 亚洲一区二区三区四区中文字幕| 国产suv精品一区二区三区| 在线日韩av| 国产三级精品视频| 成人午夜电影小说| 精品视频资源站| 亚洲国产视频在线| 亚洲性感美女99在线| 国产午夜精品久久久久久久| 国产精品亚洲人在线观看| 国产伦精品一区二区三区| 国产精品视频第一区| 成人黄色大片在线观看| 欧美日韩亚洲综合一区二区三区| 亚洲国产欧美一区二区三区丁香婷| 一区二区三区免费看| 亚洲欧美日韩在线| 久久看人人爽人人| 国产成人免费视频网站| 久久精品在线观看| 麻豆成人av| 懂色av中文一区二区三区 | 亚洲最新在线观看| 粉嫩一区二区三区性色av| 99亚洲一区二区| 精品盗摄一区二区三区| 激情欧美日韩一区二区| 欧美人牲a欧美精品| 精品一区二区免费| 91精品在线观看入口| 岛国精品在线播放| 国产精品视频九色porn| 亚洲另类视频| 欧美日韩午夜| 小嫩嫩精品导航| 国产一区二区在线视频| 成人免费av资源| 日韩美女在线视频| 欧美精品午夜| 亚洲黄网站在线观看| 久久国产精品久久w女人spa| 日本午夜一区二区| 91精品国产综合久久久久久| 成人激情动漫在线观看| 久久久国产一区二区三区四区小说| 色综合天天综合网天天狠天天| 中文字幕中文字幕一区| 久久婷婷麻豆| 国产成人亚洲综合a∨婷婷图片| 久久婷婷久久一区二区三区| 国产在线视频欧美一区二区三区| 一区二区三区 在线观看视频| 欧美性videosxxxxx| 91在线高清观看| 一区二区三区四区在线播放 | 香蕉精品999视频一区二区| 久热成人在线视频| 国产午夜精品福利| 亚洲免费网站| 成人午夜视频在线| 亚洲日本在线天堂| 欧美男人的天堂一二区| 欧美系列一区| 免费精品视频最新在线| 久久综合精品国产一区二区三区| 国产日韩精品一区观看| 国产精品亚洲成人| 亚洲精选免费视频| 日韩午夜精品视频| 亚洲一区欧美二区| 99久久免费视频.com| 亚洲成a人片综合在线| 日韩欧美国产麻豆| 国产精品一区二区你懂得| 国产毛片精品一区| 亚洲欧美日韩电影| 欧美tickle裸体挠脚心vk| 亚洲美女一区| 96av麻豆蜜桃一区二区| 日韩成人一级大片| 国产精品日韩精品欧美在线| 欧美日韩亚洲综合一区 | 久久久精品2019中文字幕之3| 美女成人午夜| 午夜精品一区二区三区四区| 麻豆极品一区二区三区| 亚洲视频综合在线| 精品国产乱码久久久久久牛牛| 91精品办公室少妇高潮对白| 激情文学一区| 91网站在线播放| 国产一区二区电影| 日韩精品一二三区| 日韩理论片网站| 久久亚区不卡日本| 6080yy午夜一二三区久久| 亚洲一区二区三区免费在线观看| 欧美福利网址| 成人国产在线观看| 紧缚奴在线一区二区三区| 亚洲国产精品久久艾草纯爱| 国产精品久久久久久久久久免费看 | 一区二区三区欧美视频| 欧美—级在线免费片| 精品国产乱码久久久久久蜜臀| 在线欧美日韩精品| 亚洲精品在线电影| 欧美精品v国产精品v日韩精品 | 亚洲另类一区二区| 国产精品网站导航| 久久久噜噜噜久噜久久综合| 制服.丝袜.亚洲.另类.中文| 精品视频一区 二区 三区| 色婷婷精品久久二区二区蜜臀av| 亚洲一区综合| 久久久蜜桃一区二区人| 校园春色综合网| 久久久久天天天天| 性色一区二区三区| 美女亚洲精品|