欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解網(wǎng)站中圖片日常使用以及優(yōu)化手法

 更新時間:2017年01月09日 12:04:51   作者:beidan  
一直都覺得網(wǎng)站優(yōu)化的重點是圖片,圖片的使用也是博大精深。本文將總結(jié)一下圖片的日常使用以及優(yōu)化手法,下面跟著小編一起來看下吧

前言: 最近新到一個團(tuán)隊,才意識到基礎(chǔ)的薄弱,牛人遍地,還是好好學(xué)習(xí),天天向上。

一直都覺得網(wǎng)站優(yōu)化的重點是圖片,圖片的使用也是博大精深。有必要總結(jié)一下圖片的日常使用以及優(yōu)化手法~

總的來說,圖片的使用分為background和img兩種,而優(yōu)化方向來說分為減少請求,減少大小和清晰度 三個方面

一. background和img的區(qū)別:

日常開發(fā)中使用的場景區(qū)別:

img是內(nèi)容部分的東西,background-image是修飾性的東西。

加載方式的區(qū)別:

在網(wǎng)頁加載的過程中,以css背景圖存在的圖片background-image會等到結(jié)構(gòu)加載完成(網(wǎng)頁的內(nèi)容全部顯示以后)才開始加載,

而html中的標(biāo)簽img是網(wǎng)頁結(jié)構(gòu)(內(nèi)容)的一部分會在加載結(jié)構(gòu)的過程中加載,換句話講,網(wǎng)頁會先加載標(biāo)簽img的內(nèi)容,再加載背景圖片background-image,如果你用引入了一個很大的圖片,那么在這個圖片下載完成之前,img后的內(nèi)容都不會顯示。而如果用css來引入同樣的圖片,網(wǎng)頁結(jié)構(gòu)和內(nèi)容加載完成之后,才開始加載背景圖片,不會影響你瀏覽網(wǎng)頁內(nèi)容。

二. 平時使用圖片有以下幾種方式:

1. 圖片內(nèi)聯(lián) (base 64)          減少http請求

2. 圖片雪碧圖(多張圖片合并)  減少http請求

3. webp     在壓縮方面比 JPEG 格式更優(yōu)越,并能節(jié)省大量的服務(wù)器帶寬資源和數(shù)據(jù)空間。與 JPEG 相同,WebP 也是一種有損壓縮,主要優(yōu)勢在于高效率。在質(zhì)量相同的情況下,WebP 格式圖像的體積要比 JPEG 格式圖像小 40%。

4. svg  

三. 日常圖片展示主要有以下三種形式

1.普通圖片

顧名思義,非常普通的圖片,不需要因為屏幕擴(kuò)張或者縮小改變寬度以及高度, 以京東手機(jī)網(wǎng)站為例,常見于以下布局

不管在任何手機(jī)下面,該圖片都是以100*100的形式展示,對于這種圖片,可以直接給一個寬度100,高度100,處理起來也非常簡單粗暴

2.圖片的寬高比

此種常見于響應(yīng)式網(wǎng)站,以下為京東手機(jī)網(wǎng)站舉例

在iphone5 及320*568的手機(jī)上,該圖片顯示的寬度和高度分別如下

在iphone6 即375*667的手機(jī)上,該圖片顯示的寬度和高度分別如下

不難看出,上面的寬高比實際上為同一個數(shù)值,這樣既可以保證該圖片適配屏幕,又不讓圖片變形,因為這種場景,也產(chǎn)生了以下需求

1.列表是響應(yīng)式的,在不同瀏覽器下要自適應(yīng)寬度高度

2.圖片在自適應(yīng)中,圖片的長寬比要保持不變

在實際開發(fā)中,我們通常會設(shè)置圖片的寬度為百分比來滿足自適應(yīng),不設(shè)置高度來滿足長寬比不變,但是這樣又會出現(xiàn)一種問題,在圖片沒有加載出來的時候,瀏覽器是無法計算出圖片的實際尺寸的,當(dāng)圖片加載出來后,再把容器撐高,造成頁面抖動 

優(yōu)化方案:

1. 首先,按照往例,先上一個知識點

塊級元素(div,p)的padding設(shè)置為百分比的時候,是按照父級塊的寬度來定的,所以由padding(padding-top/padding-bottom)來撐開容器高度,而不是height,保證了容器的寬高比例。圖片在絕對定位于塊級元素(div,p)下面即可。

代碼實現(xiàn):

.placeholder{
 height: 0;
 padding-bottom: 56.25%; /* 16:9 */
 position: relative;
 width: 100%;
}
.placeholder .img{
 position: absolute;
 left: 0;
 top: 0;
 width: 100%;
 height: 100%;
}

3.背景圖片

background這個屬性花樣很多,也很雜,常見的有以下幾種

  1. background-color  
  2. background-position 
  3. background-size
  4. background-repeat
  5. background-attachment
  6. background-image

在定義背景屬性的時候,可以分開對單個屬性進(jìn)行賦值,通常建議使用下面這個屬性,而不是分別使用單個屬性,因為需要鍵入的字母也更少。

 body{ 
 background: #00FF00 url(bgimage.gif) no-repeat fixed top;
 // background: color url() repeat attachment position
 }

1. background-position 屬性  這個屬性設(shè)置背景原圖像的位置

常見使用的值:順序方面,首先是 x 軸,其次是 y 軸,

2.background-repeat   比較簡單,設(shè)置背景圖片是否重復(fù)

3.background-size       在響應(yīng)式布局中背景圖片上用得比較多的一個屬性

兼容性:

  • 安卓4.3- 不支持將background,所以必須單獨申明這個樣式   [所以background-size一般不寫進(jìn)background中,而是單獨 background-size:]
  • 安卓4.3- 不支持contain

常見屬性: auto ,cover,contain, 100%

從上圖可以看到,contain其實等同于background-size: 100% auto;cover等同background-size: auto 100%。

但是,如果背景圖像是一張縱向的圖(高>寬),那么cover應(yīng)該等同于background-size: 100% auto;contain等同background-size: auto 100%。

在實際開發(fā)中,最常用到的值是cover,如果容器已經(jīng)有了寬高(當(dāng)然這里的寬高是指可以隨著機(jī)型變化的),比如全屏,我們就直接用cover了;而如果容器沒有寬高,那就又回到了第二個問題(圖片的寬高比),我們可以使用圖片或者把設(shè)置背景圖的這個容器設(shè)置成我們圖片的寬高比,那樣再使用cover或contain都可以。

四. 優(yōu)化方法:

1. 減少請求

將圖片變成base64內(nèi)聯(lián)圖片, 合并成雪碧圖,

以上2種方法在目前一些流行的自動化構(gòu)建工具都會自動幫忙生成,使用非常方便

適用對象: 不經(jīng)常改變的icon小圖標(biāo)

2. 減少大小

壓縮圖片,使用webp格式圖片

3.提高清晰度

由于目前的手機(jī)高清度越來越高,日常開發(fā)中使用2倍圖,3倍圖的方法

常見優(yōu)化方法:

1.圖片懶加載

優(yōu)點:通常應(yīng)用于圖片比較多的網(wǎng)頁,如果一個頁面圖片比較多,且頁面高度或?qū)挾扔泻脦灼粒撁娉醮渭虞d時,只顯示可視區(qū)域的圖片,當(dāng)頁面滾動的時候,圖片進(jìn)入了可視區(qū)域再進(jìn)行加載,這樣可以顯著的提高頁面的加載速度,更少的圖片并發(fā)請求數(shù)也可以減輕服務(wù)器的壓力。

懶加載有多種場景,但原理都是一樣的。以下舉例滾動懶加載。

原理:將圖片的真實地址緩存在一個自定義的屬性(lazy-src)中,而src地址使用一個1×1的全透明的占位圖片來代替,當(dāng)然占位圖片也可以是其他的圖片。

github源碼: https://github.com/beidan/lazeLoadImg

2.圖片預(yù)加載

基于用戶行為的預(yù)加載就是,雖然在用戶看不到的時候加載了,但是,用戶卻有更大或者說很大的概率會看到此圖。

后續(xù)再對這個進(jìn)行詳細(xì)的說明~ 

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關(guān)文章

  • js 解析 JSON 數(shù)據(jù)簡單示例

    js 解析 JSON 數(shù)據(jù)簡單示例

    這篇文章主要介紹了js 解析 JSON 數(shù)據(jù)的方法,結(jié)合簡單實例形式分析了js 解析 JSON 格式數(shù)據(jù)的相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2020-04-04
  • Webpack實現(xiàn)按需打包Lodash的幾種方法詳解

    Webpack實現(xiàn)按需打包Lodash的幾種方法詳解

    這篇文章主要給大家介紹了關(guān)于Webpack實現(xiàn)按需打包Lodash的幾種方法,文中介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • js瀏覽器html5表單驗證

    js瀏覽器html5表單驗證

    這篇文章主要為大家詳細(xì)介紹了js瀏覽器html5表單驗證,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 從基礎(chǔ)開始建立一個JS代碼庫

    從基礎(chǔ)開始建立一個JS代碼庫

    從基礎(chǔ)開始建立一個JS代碼庫,更新中 有心人會領(lǐng)技術(shù)走的更遠(yuǎn)
    2009-07-07
  • Js 獲取HTML DOM節(jié)點元素的方法小結(jié)

    Js 獲取HTML DOM節(jié)點元素的方法小結(jié)

    在Web應(yīng)用程序特別是Web2.0程序開發(fā)中,經(jīng)常要獲取頁面中某個元素,然后更新該元素的樣式、內(nèi)容等。
    2009-04-04
  • JavaScript創(chuàng)建對象的四種常用模式實例分析

    JavaScript創(chuàng)建對象的四種常用模式實例分析

    這篇文章主要介紹了JavaScript創(chuàng)建對象的四種常用模式,結(jié)合實例形式分析了javascript使用工廠模式、構(gòu)造函數(shù)模式、原型模式及動態(tài)原型模式創(chuàng)建對象的相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2019-01-01
  • 淺談webpack性能榨汁機(jī)(打包速度優(yōu)化)

    淺談webpack性能榨汁機(jī)(打包速度優(yōu)化)

    這篇文章主要介紹了淺談webpack性能榨汁機(jī)(打包速度優(yōu)化),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 微信小程序 websocket 實現(xiàn)SpringMVC+Spring+Mybatis

    微信小程序 websocket 實現(xiàn)SpringMVC+Spring+Mybatis

    這篇文章主要介紹了 微信小程序websocket實現(xiàn)SpringMVC+Spring+Mybatis的相關(guān)資料,這里提供實現(xiàn)思路及實現(xiàn)代碼,需要的朋友可以參考下
    2017-08-08
  • JavaScript數(shù)據(jù)結(jié)構(gòu)之鏈表的實現(xiàn)

    JavaScript數(shù)據(jù)結(jié)構(gòu)之鏈表的實現(xiàn)

    鏈表是一種常見的數(shù)據(jù)結(jié)構(gòu)。它是動態(tài)地進(jìn)行存儲分配的一種結(jié)構(gòu)。本文主要介紹JavaScript數(shù)據(jù)結(jié)構(gòu)中鏈表的實現(xiàn),具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • javascript:以前寫的xmlhttp池,代碼

    javascript:以前寫的xmlhttp池,代碼

    用javascript寫的xmlhttp池代碼,最下面有調(diào)用方法
    2008-05-05

最新評論