繼續送假期干貨——響應式圖片工具smartImg


中午看《眾妙之門》看到一個響應式圖片處理工具(點此查看)的介紹,然后就心血來潮想着不妨自己寫一個基於JQ的吧,於是就又有了這么一個干貨給大家。

smartImg 的全部文件可以從我的Github上下載,其實它非常小巧,去掉注釋一共也就40行,之所以這么輕便,JQ也是幫了大忙。

應用場景

我們在搭建響應式頁面時,對於圖片的處理或多或少都有些煩躁,例如我們希望在某個屏寬的環境下顯示某一張圖片,在另一個屏寬的環境下則顯示為另一張圖片。

這種做法對於用戶體驗是比較重要的,常規建議是用戶用大屏幕設備訪問我們頁面時,圖片顯示為大分辨率的;若用戶使用小屏幕的移動設備訪問我們頁面時,依舊加載大尺寸的圖片顯然是很不妥當的做法,這樣太吃用戶流量,也影響加載速度。

我們的確可以用一個設置有background的容器來替代圖片,然后在css media query中定義不同屏寬范圍下該容器背景所對應的地址,但這種寫法較為繁瑣、不利維護和seo(當然它的效率會高一些)。

smartImg為解決這個問題提供了方案。

使用方式

在頁面引入了jQuery和smartImg文件之后,在需要響應的<img>標簽里添加 s-src="圖片地址1 屏寬1,圖片地址2 屏寬2, ..., 圖片地址n 屏寬n" ,若屏寬參數沒寫則默認為0。

如下示例:

<img s-src="img/large.jpg 900,img/huge.jpg 1100,img/small.jpg" />

它表示當屏幕寬度大於1100px時顯示img/huge.jpg,當屏幕寬度小於1100px但大於900px時顯示img/large.jpg,其它更小屏幕寬度時則顯示img/small.jpg。

當然,如果圖片地址前綴是一樣的,我們還可以加上s-prefix屬性:

<img s-prefix="img/" s-src="large.jpg 900,huge.jpg 1200,middle.jpg 650,small.jpg 0" />

smartImg也為頁面動態圖片提供方案,在圖片動態地新增后執行 $.smartImg() 方法即可。

雖然初衷是將其用於移動頁面,但smartImg也可用於PC頁面,支持屏幕大小縮放事件。

Demo

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no" />
    <title>Demo</title>
    <style type="text/css">
      html,body{margin:0;padding:0;}
      div{position:relative;margin:20px auto;width: 90%; }
      .img1{width: 100%;}
      .img2{width: 100%;}
    </style>

  </head>
  <body>
        <div>
            <img class="img1" s-prefix="img/" s-src="large.jpg 900,huge.jpg 1200,middle.jpg 650,small.jpg 0" />
            <img class="img2" s-src="img/large2.jpg 900,img/huge2.jpg 1100,img/small2.jpg" />
        </div>
        <script src="jq.js"></script>
        <script src="smartImg.js"></script>
  </body>
</html>

效果:

更具體的體驗請下載 smartImg 后自行運行demo.html來查看。

共勉~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM