做爲CSS中使用圖片時會用到的屬性,background-position的使用頻率是很高的,它的做用就是設定某元素背景圖像的初始位置。而且它有三種設定參數的方式,雖然這三種方式能夠混合使用,不過我通常針對不一樣場景使用對應的參數設定方式。雖然官方文檔上敘述了這三種方式,但是依然有些地方讓我費解,特別是百分比的設定,通過實踐,發現一個公式來計算須要設定的百分值,我會在後面詳細闡述。 css
關於background-position的工做原理,個人理解是將圖片上須要顯示出來的區域相對於元素的左上角,也就是座標點(0,0)進行水平和垂直方向偏移。 瀏覽器
總的來講,background-position的參數設定方式是從簡單到複雜,讓我從簡單的開始介紹: 性能
.icon { width: 125px; // 首先建立一個長寬爲125px的容器元素 height: 125px; background-image: url('../assets/images/icon_sprites.png'); // 設置這個元素的背景圖片 background-position: -128px -384px; // 設置偏移量 }
就能夠顯示出紅色P了。
很神奇吧,咱們能夠這樣理解,剛建立的容器元素是一個從這張圖片(0,0)座標開始的一個相框,這個相框的大小是固定的125px,因此若是不設置background-position,也就是不設置任何偏移,看到的就是左上角那個icon。
因此圖片須要向上384px,向左128px才能移動到紅色P的位置。
但是爲何設的是負值呢?
這是由於HTML裏的X軸向右是正值,Y軸向下是正值!
而剛纔咱們的圖片須要向左向上移動,正好在兩個維度都須要反向移動,因此爲負值。
這個方式是否是頗有用?經過設置偏移數值就能找到圖片上須要顯示的區域。
注意,這個方式存在一個問題,由於設定的偏移值都是固定的,致使無法作到圖像自適應。咱們在實現實現響應式設計時,圖片的大小會根據瀏覽器視口的大小進行縮放調整,而圖片的大小改變以後,偏移位置就須要改變,換句話說,圖片大小一調整,咱們想要顯示的圖像的位置在數值上也會改變。爲解決這個問題,咱們得用百分比的方式。 優化
.icon { width: 125px; // 根據須要等比設定元素大小便可實現自適應 height: 125px; background-image: url('../assets/images/icon_sprites.png'); background-position: 50% 100%; // 偏移量設置爲百分比 background-size: 381px 509px; // 根據須要等比設定圖片大小便可實現自適應 }
參考文檔:
W3School CSS background-position 屬性
CSS: Using Percentages in Background-Image 網站