純CSS(無 JavaScript)實現的響應式映像顯示

來源:互聯網
上載者:User

  有許多方法可以實現web頁面裡映像的應答。然而,我碰到的所有方案都使用了JavaScript。這使我疑惑不用JavaScript實現映像響應是否可行。

  我提出了下面純CSS的方案。

  它是如何工作的呢?

  我把<img>標籤防止在<span>內。src屬性將從伺服器獲得手機版本的映像。接著我還在<span>元素內部包含了一點CSS。

  什嗎??HTML文檔中能嵌入了CSS?

  是的,只要你增加了scoped屬性,這就在HTML5裡就是非常有效。在這個CSS裡,我從某個斷點開始用了@media查詢把作為背景的高清映像添加到<span>裡。 在下面這段代碼裡,我只添加了一個斷點,然而你當然可以按你喜歡的增加許多。

  通過使用背景映像指示符,只有在需要的時候才會從伺服器擷取這個映像。也就是說,只有在media查詢滿足的時候才能擷取到。<img>將確保<span>有正確的高寬比,這樣<span>上的背景映像才能得到正確的現實。

  代碼展示

  下面是可以啟動並執行所有代碼。

  HTML

  首先看HTML。

123456 <span class="magik-responsive-image" id="image-01"><img src="http://dummyimage.com/200x150/cdcdcd/000/?text=lo-res" alt="TODO"><style scoped>@media screen and (min-width: 701px){#image-01{background-image:url(http://dummyimage.com/1600x1200/dcdcdc/000/?text=hi-res);}}</style></span>

  CSS 我們還需要對CSS最一點修改,以便在應當顯示高清映像的時候隱藏低清晰度的映像。技巧是增加backgroud-size:100%;這使得在維護高寬比不變的情況下伸展背景。

1234567891011121314151617 .magik-responsive-image {background-repeat: no-repeat;background-size: 100%;display: block;position: relative;} .magik-responsive-image img {max-width: 100%;} @media screen and (min-width: 701px) { .magik-responsive-image img{opacity: 0;}}
  好處
  • 沒有JavaScript
  • 實現起來簡單
  • 還可用於視頻(我將在以後的部落格文章中發表有關這方面的內容)
  缺點
  • 在案頭環境下,需要向伺服器發送兩個請求
  • <style>標籤的scoped睡醒在主要的瀏覽器裡仍然沒有得到支援。正是由於這個原因,我們才需要增加一個id,不過在後端代碼中增加這通常不是問題。
  示範

  看看 這個展示 。

  原文地址:pure-css-responsive-images-yes-javascript

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.