CSS3中的background-size(對響應性圖片等比例縮放)

来源:http://www.cnblogs.com/dehua-chen/archive/2016/04/20/5411266.html
-Advertisement-
Play Games

background-size的基本屬性 background-size: 可以設定背景圖像的尺寸,該屬性是css3中的,在移動端使用的地方很多,比如最常見的地方在做響應性佈局的時候,比如之前做的項目中有輪播圖片,為了自適應不同大小解析度的圖片,我門需要使用css3中的媒體查詢來針對不同的解析度設置 ...


background-size的基本屬性

background-size: 可以設定背景圖像的尺寸,該屬性是css3中的,在移動端使用的地方很多,比如最常見的地方在做響應性佈局的時候,比如之前做的項目中有輪播圖片,為了自適應不同大小解析度的圖片,我門需要使用css3中的媒體查詢來針對不同的解析度設置寬度和高度,雖然這種方式是可以解決問題,但是解決方式並不是太好,並且很繁瑣,當然我門也想過直接使用百分比設置圖片的大小,比如width(寬度): 100%,height(高度):100%; 但是設置圖片等高度100%的時候並不生效,圖片沒有顯示出來,因為沒有設置具體的高度值,瀏覽器渲染的時候並沒有高度,因此當時解決的方法是使用css3中的媒體查詢真對不同的解析度等比例縮放不同的height(高度)。

瀏覽器支持的程度:IE9+, Firefox4+, opera, chrome, safari5+;

基本語法:background-size: length | percentage | cover | contain; 

一:length

    該屬性值是設置背景圖像的寬度和高度的,第一個值是寬度,第二個值是設置高度的。如果只設置第一個值,那麼第二個值會自動轉換為 “auto”;

二:percentage

     該屬性是以父元素的百分比來設置圖片的寬度和高度的,第一個值是寬度,第二個值是高度。如果只設置一個值,那麼第二個值會被設置為 “auto”;

三:cover

      把背景圖像擴展至足夠大,以使背景圖像完全覆蓋背景區域。

四:contain

      把圖像擴展至最大尺寸,以使寬度和高度 完全適應內容區域。

設置固定寬度400px和高度200px後的圖片

1 <div class="bsize1"></div>
1 .bsize1 {
2      width:400px;
3      height:200px;
4      background: url("1.jpg") no-repeat;
5      border:1px solid red;
6      overflow: hidden;
7   }

固定寬度400px和高度200px-使用background-size:400px 200px縮放設置或者使用background-size:100% 100%縮放設置

1 <div class="bsize1 bsize3"></div>
1 .bsize3 {
2          background-size: 400px;
3         /*background-size:100% 100%;*/
4  }    

固定寬度400px和高度200px-使用background-size:100%的縮放設置

1 <div class="bsize1 bsize5"></div>
1 .bsize5 {
2          background-size: 100%;
3   }

 

使用屬性cover來設置背景圖片

1 <div class="bsize1 cover"></div>
.cover {
        background-size:cover;
 }

使用屬性contain來設置背景圖片

<div class="bsize1 contain"></div>
.contain {
        background-size:contain;
  }

給圖片設置width屬性100%;高度自適應

不使用背景圖片等情況下,給圖片設置屬性 width = 100%,它的高度會自適應的。如下HTML代碼:

<div class="bsize-padding"><img src="3.jpg" width="100%"/></div>

使用另一種方式來解決圖片自適應的問題--圖片自適應問題

圖片寬度設置100%,頁面載入時會存在高度塌陷的問題,可以使用padding-top來設置百分比值來實現自適應 padding-top = (圖片的高度/圖片的寬度)*100;

<p>可以使用padding-top來設置百分比值來實現自適應 padding-top = (圖片的高度/圖片的寬度)*100</p>
<div class="cover-paddingTop">
      <img src="5.jpg"/>
</div>
.cover-paddingTop {
       position: relative;
       padding-top: 50%; 
       overflow: hidden;
  }
 .cover-paddingTop img{
      width:100%;
      position: absolute;
      top:0;
  }

使用padding-top:(percentage)實現響應式背景圖片

實現的基本原理:將使用到保持元素的寬高比的技巧,為元素添加垂直方向的padding-top的值,使用百分比的形式,這個值是相對於元素的寬而定的,比如我上面的一張圖片的寬度是1024px,高度為316px;那麼現在的

padding-top = (高度 / 寬度 )*100% = (316 / 1024)* 100% =  30.85%;

但是僅僅對圖片高度和寬度縮放的放還不夠,我門還必須添加 background-size:cover, 使這個屬性讓背景鋪滿元素的,但是IE8及以下不支持該屬性,因此為了相容IE下麵的瀏覽器,我門還需要再加一個屬性 background-position: center ; 同時我門也要保證 圖片的寬度最大等於父容器的寬度;因此下麵的HTML代碼如下:

<div class="column">
    <div class="figure"></div>
</div>
.column{
        max-width: 1024px;
 }
 .figure {
         padding-top:30.85%; /* 316 / 1024 */
         background: url("6.jpg") no-repeat;
          background-size:cover;
          background-position:center;
    }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 今天遇到一個問題:怎樣實現點擊一個按鈕,在當前的頁面上新增加一個小視窗,展示一個圖片信息? 如圖: 點擊之前: 單擊之後: 分析:要使新增的小視窗不影響父頁面,我們這裡採用iframe的框架的技術。 【<iframe>也應該是框架的一種形式,它與<frame>不同的是,iframe可以嵌在網頁中的任 ...
  • 前言: 創建元素有兩種方法 1)將需要創建的元素,以字元串的形式拼接;找到父級元素,直接對父級元素的innnerHTML進行賦值。 2)使用Document、Element對象自帶的一些函數,來實現動態創建元素(創建元素 => 找到父級元素 => 在指定位置插入元素) 一、字元串拼接形式 為了更好的 ...
  • "你從哪裡來?” “你要到哪裡去?" 這是保全小哥經常會問的具有哲理性的問題。在互聯網的應用的開發中,也經常會用到有關地址的選擇設置。不管是物流的應用,還是外賣的應用,都會要求用戶設置用戶所在的位置。如果讓用戶來輸入完整的地址,一方面,輸入比較慢,體驗不好。另一方面,輸入的地址不規範,例如:"浙江省 ...
  • 本文章向碼農介紹css3選擇器的使用方法和總結,包括通用選擇器,屬性選擇器,偽類選擇器,對css選擇器相關知識感興趣的碼農可以閱讀一下本文章。 一 通用選擇器 1 *{}通配選擇符(CSS2):適合所有元素對象。2 E類型(HTML)選擇符(CSS1):以文檔語言對象類型DOM作為選擇符。3 E#m ...
  • 原文地址:http://www.neoease.com/css-z-index-property-and-layering-tree/ CSS 中的 z-index 屬性用於設置節點的堆疊順序, 擁有更高堆疊順序的節點將顯示在堆疊順序較低的節點前面, 這是我們對 z-index 屬性普遍的認識. 與 ...
  • 1.html代碼 <div id="qrcode" style="width:200px; height:200px;position: fixed;bottom: 40%; right: 20%;"></div> 2.引入外部js文件 <script src="QRCode.js"></scrip ...
  • Ruby(或cmd中)輸入命令行編譯sass步驟如下: (1)舉例而言:首先在F盤下建立一個總文件夾,比如test文件夾;其次在該文件夾下建立html,images,js,sass等文件夾。 (2)在sass文件夾中創建要使用到的sass文件。例如common.scss,reset.scss,con ...
  • 用js模擬jQuery方法,體會封裝思想 <!DOCTYPE html><html><head><meta charset="UTF-8"><title>simulationJquery.html</title> </head><body> <img src=images/123.jpg/> <in ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...