1. 程式人生 > >關於background-size各個引數詳解

關於background-size各個引數詳解

今天公司的要做一個名叫夢幻戀舞的webapp,在設定背景圖的時候,明明已經把整個區域的高寬設定成100%了,但是背景圖總不能全覆蓋整個網頁。考慮使用background-size這個屬性,在用的時候發現background-size還有好多值,這邊特地找一下學習一下。

屬性名: background-size
屬性值: <bg-size>* 其中 bg-size = [ <length> | <percentage> | auto ]{1,2} | cover | contain
初始值: auto auto
應用於: 所有元素
繼承性:
百分比: 見下文註解
計算值: 根據指定

1、length,percentage,根據給定長度值或者百分比來調整背景圖片大小。auto為預設值,這三個值最小可重複一次,最大重複兩次。對於這些值有以下解釋:
第一個值為設定圖片寬度,第二個值為圖片的高度;但是不管是用什麼值,都不能為負值
假如只給定一個值,那麼第二個自動的為 'auto';
假如指定為percentage百分比值,那麼背景圖大小是根據相對的背景區域來做調整,這個背景區域是由background-origin來來決定的。這在上面已經有提到過了關於圖片原點的討論。這裡有必要提到 假如background-attachment:fixed,那麼其背景相對區域就是初始包含塊也就是視窗。


/* 一個值: 這個值指定圖片的寬度,那麼第二個值為auto */
background-size: auto
background-size: 50%
background-size: 3em
background-size: 12px

/* 兩個值: 第一個值指定圖片的寬度,第二個值指定圖片的高度 */
background-size: 50% auto
background-size: 3em 25%
background-size: auto 6px
background-size: auto auto
/*多重背景,請用逗號隔開,在CSS語法中凡語法後跟*或者#,都是可以無限重複的,但是必須用逗號隔開。 */
background-size: auto, auto     /* 不要跟background-size: auto auto混淆了 */
background-size: 50%, 25%, 25%
background-size: 6px, auto, contain

background-size: inherit
2、contain,按比例調整背景圖片,使得其圖片寬高比自適應整個元素的背景區域的寬高比,因此假如指定的圖片尺寸過大,而背景區域的整體寬高不能恰好包含背景圖片的話,那麼其背景某些區域可能會有空白。看以下程式碼
.im-com{
    width:200px;
    height:50px;    
    background:url(http://img.xiaoho.com/mystar/mada4.jpg) no-repeat top left scroll;   /*圖片的寬高為440*440,而元素相對區域高度為50*/ 
    background-size:contain;
}
.im-com-1{
    width:50px;
    height:100px;   
    background:url(http://img.xiaoho.com/mystar/mada4.jpg) no-repeat top left scroll;   /*元素相對區域寬度為50*/ 
    background-size:contain;
}


當圖片恰好自適應鋪滿元素的寬度或者高度,那麼元素的會有空白處存在,也就是圖中紅色框框都顯示了空白。

2、cover,按比例調整背景圖片,這個屬性值跟contain正好相反,背景圖片會按照比如自適應鋪滿整個背景區域。假如背景區域不足以包含背景圖片的話,那麼背景圖片就會被咔嚓。

.im-com{
    width:200px;
    height:50px;    
    background:url(http://img.xiaoho.com/mystar/mada4.jpg) no-repeat top left scroll;   /*圖片的寬高為440*440,而元素相對區域高度為50*/ 
    background-size:cover;
}
.im-com-1{
    width:50px;
    height:100px;   
    background:url(http://img.xiaoho.com/mystar/mada4.jpg) no-repeat top left scroll;   /*元素相對區域寬度為50*/ 
    background-size:cover;
}

 當使用了cover這個值的時候,那麼正好就跟contain相反,其會正好覆蓋整個背景相對區域,但是背景圖片的某些部分就看不見,如下圖的狗的下半身和右側身體顯示不全。

說說背景圖片計算值

假如說只是拿單一的數值或者具體數值來解釋那理解起來應該不難,但假如用混合長度來說,可能會有點一下子明白不上來。

規範給了幾個例子,不妨拿出來一下:先宣告,所以的元素尺寸為 100*100

100% 100%背景圖片將鋪滿整個內容區,假如說元素有固有寬高,那麼背景圖片鋪滿整個100*100背景區域

div {
    background-image: url(plasma.png);
    background-repeat: no-repeat;
    background-size: 100% 100%;
    background-origin: content-box }
背景圖片調整為寬度為50*50,但是背景圖片的原點位置為邊框box而不是padding-box
p {
    background-image: url(tubes.png);
    background-size: 50% auto;
    background-origin: border-box }
背景圖片尺寸調整為15*15
para {
    background-size: 15px 15px;
    background-image: url(tile.png)}
這是預設值,也就是auto auto,此時背景圖片的尺寸將會是跟圖片的固有尺寸一樣.

body {
    background-size: auto;            /* 預設值 */
    background-image: url(flower.png) }
假如兩個都是百分比,此時圖片就會根據背景區域來按照寬高比自適應,此處背景圖片為20*30,但是因為背景重複用了 'round'迴圈,因此背景區域高度劃分了3個33.3等高區域,所以背景圖片會自適應調整為20*33.3
p {
    background-image: url(chain.png);
    background-repeat: no-repeat round;
    background-size: 20% 30% }
在MND幫助文件中還提到了關於火狐的漸變圖片背景問題,不過那是涉及到Firefox8,規範中不推薦同時使用px和auto,因為在8以前的火 狐瀏覽器不支援重複渲染,但是我在caniuse上看見的版本是31+,so,你就盡情的用吧。並且對於移動瀏覽器的支援還是非常的好的,請看下圖可知, 除了opera8部分不支援以外:

應用場景

目前用到background-size的場景都是基於webapp的背景圖上,大致的情況是,比如說最常見的logo作為某個元素的背景,但logo很複雜,假如說我們按照設計圖上的去切片的話,那會有兩種可能:
1、按照csser的解析度去切片,比如高度為50px,logo被直接縮放到50px那就會很彆扭,而且估計那那畫面太美,你都不敢看;
2、按照射擊溼設計的解析度去切的話,有可能設計圖的logo尺寸會很大,但是我們csser寫的時候高度只有50px,那logo就會顯示不全;

這時候background-size就發揮其重要的作用了,我們可以通過對背景圖片大小的自適應縮放,而不會影響到起美觀性又能全部顯示我們所需要的效果。


相關推薦

關於background-size各個引數

今天公司的要做一個名叫夢幻戀舞的webapp,在設定背景圖的時候,明明已經把整個區域的高寬設定成100%了,但是背景圖總不能全覆蓋整個網頁。考慮使用background-size這個屬性,在用的時候發現background-size還有好多值,這邊特地找一下學習一下。 屬

ehcache各個引數

-----------------------------------------快取設定大小-------------------------------------------------------- 快取大小的限制可以設定在CacheManager上,也

Histogram中各個引數

histogram從不會到理解的過程: 1.我想先從讀取histogram的bins的方法說起.(Mat hist,假設已經過calchist())      首先 Mat型別的hist,他的維數是dims的,這就決定了,Mat hist中每個bins的存放形式.如果dim

cookie各個引數

第三個:expire,可選引數,這個是用來設定cookie變數儲存的時間,注意是我們設定的的UNIX時間戳減去當前的UNIX時間戳才是cookie變數儲存的時間。(UNIX時間戳:是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數),一般我們可以通過time()函式獲取當前的UNIX時間戳,再加上

user-agent各個引數

最近在研究ua資訊,現在總結一下ua資訊各個引數代表的意思以及哪些引數可以修改,哪些可以刪除 現在,隨便拿出一個ua, Mozilla/5.0 (Linux; U; Android 7.0;m2 note Build/LMY47D) AppleWebKit/604.1.3

mysql JDBC URL格式各個引數

mysql JDBC URL格式如下: jdbc:mysql://[host:port],[host:port].../[database][?引數名1][=引數值1][&引數名2][=引數值2]... 現只列舉幾個重要的引數,如下表所示: 引數名稱

react native TextInput各個引數,內含事例動圖

TextInput 文字輸入框 React Native中的文字輸入框使用和iOS比較相近,可能是因為 RN 首先封裝iOS端的緣故(這點對iOS開發者來說是個好訊息) TextInput也是繼承自 View,所以 View 的屬性 TextInput 也能使用,一些樣式類

log4j之log4j.properties引數(log4j各個配置引數含義)

====>log4j之log4j.properties引數詳解 ====>log4j介紹: Log4j是Apache的一個開源專案,通過使用Log4j,我們可以控制日誌資訊輸送的目的地是控制檯、檔案、GUI元件,甚至是套介面伺服器、NT的事件

css動畫-animation各個屬性(轉)

yellow range 空隙 定義 tro content bin ora .com CSS3的animation很容易就能實現各種酷炫的動畫,雖然看到別人的成果圖會覺得很難,但是如果掌握好各種動畫屬性,做好酷炫吊炸天的動畫都不在話下,好,切入正題。 一、動畫屬性:

[轉]深入C語言內存區域分配(進程的各個段)

str 一個 以及 修改 參數 ext 分區 指令 上下文 一般情況下,一個可執行二進制程序(更確切的說,在Linux操作系統下為一個進程單元,在UC/OSII中被稱為任務)在存儲(沒有調入到內存運行)時擁有3個部分,分別是代碼段(text)、數據段(data)和BSS段。

mencoder和ffmpeg引數2 (轉)

有很多軟體能夠擷取影片影象、合併影象,但如果影片太多,比如視訊網站為使用者上傳的影象生成預覽圖之類的,人工在gui方式下操作就不可取了,我們需要在命令列方式下來擷取、合併。 首先,擷取影片影象使用最多的就是mplayer或者ffmpeg,我用mplayer比較熟,本文就以此為例了,ffmpe

學習筆記--JDK中的URLConnection引數

JDK中的URLConnection引數詳解 針對JDK中的URLConnection連線Servlet的問題,網上有雖然有所涉及,但是隻是說明了某一個或幾個問題,是以FAQ的方式來解決的,而且比較零散,現在對這個類的使用就本人在專案中的使用經驗做如下總結:  1:>

MySQL 8.0.12 mysqlbinlog命令引數

1.版本號不同: # /usr/local/mysql57/bin/mysqlbinlog --version /usr/local/mysql57/bin/mysqlbinlog Ver 3.4 for linux-glibc2.12 at x86_64 # /usr/local/mysql8

maven配置引數

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apach

資料庫mysqldump指令引數

資料庫mysqldump命令引數詳解 --all-databases , -A 匯出全部資料庫。 mysqldump -uroot -p --all-databases --all-tablespaces , -Y 匯出全部表空間。 mysqldump -uroot -p --all-databa

struts2 配置檔案中各個

<action   name= "Login_* "   method= "{1} "   class= "mailreader2.Login "> 中Login_*帶*是什麼意思?method= "{1} "帶{}這個是什麼意

sklearn 神經網路MLPclassifier引數

class sklearn.neural_network.MLPClassifier(hidden_layer_sizes=(100, ), activation=’relu’, solver=’adam’, alpha=0.0001, batch_size=’auto’, learnin

jQuery非同步請求ajax()之complete引數

請求完成後回撥函式 (請求success 和 error之後均呼叫)。這個回撥函式得到2個引數:XMLHTTPRequest) 物件和一個描述請求狀態的字串("success", "notmodified", "nocontent","error", "timeout", "abort", 或者 "

配置 sysctl.conf 系統引數

配置 sysctl.conf 系統引數(vi /etc/sysctl.conf) 引數: 1.記憶體&快取 kernel.sysrq = 0 核心設定驗證為0 kernel.core_uses_pid = 1 控制核心的系統請求除錯功能開啟,控制核心轉儲附加PID到核心檔名,適用於多

Springboot專案java -jar 啟動jar包引數

命令例項: nohup java -Xms500m -Xmx500m -Xmn250m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError -jar $JAR_PATH/test-0.0.1-SNAPSHOT.jar --spring.profile