1. 當有一個不吻合頁面元素的尺寸時有時候圖片并不都是這么完美的適合你所需要的場景,比如美工給了一套比較大的Css Sprite: 實際上你并不需要這么大的圖標,比如你需要圖標的地方大概是55px * 50px: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>CSS Sprites</title> <style> /* 清除默認樣式 */ * { padding: 0; margin: 0; } /* 這段代碼是為了居中顯示,不是重點,看不懂的話可以無視 */ body { height: 100vh; display: flex; align-items: center; justify-content: center; } .sprite { /* 設置寬高和邊框 */ width: 55px; height: 50px; border: 1px solid black; /* 背景圖地址設置為雪碧圖的位置 */ background-image: url('http://img.mukewang.com/wiki/5ed9a97108da9a2e04440371.jpg'); /* 禁止背景圖重復 */ background-repeat: no-repeat; /* 令背景圖顯示在正確的位置 */ background-position: left bottom; } </style> </head> <body> <div class="sprite"></div> </body> </html> 運行結果: 可以看出來此時由于圖標遠比盒子大,所以只顯示出了一個角,正所謂小荷才露尖尖角。 2. 解決方案聰明的同學早就猜到了我們肯定有一個能夠控制背景圖大小的語法:
此時我們需要把背景圖的大小調到一個恰好能夠適應盒子寬高的這么一個數值: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>CSS Sprites</title> <style> /* 清除默認樣式 */ * { padding: 0; margin: 0; } /* 這段代碼是為了居中顯示,不是重點,看不懂的話可以無視 */ body { height: 100vh; display: flex; align-items: center; justify-content: center; } .sprite { /* 設置寬高和邊框 */ width: 55px; height: 50px; border: 1px solid black; /* 背景圖地址設置為雪碧圖的位置 */ background-image: url('http://img.mukewang.com/wiki/5ed9a97108da9a2e04440371.jpg'); /* 背景圖尺寸 */ background-size: 205px 170px; /* 令背景圖顯示在正確的位置 */ background-position: left bottom; } </style> </head> <body> <div class="sprite"></div> </body> </html> 于是就可以把圖標完美的呈現出來了: 如果Css Sprite過大可以調小背景尺寸,反之亦然。 3. 條形圖可以使用的語法假如Css Sprite上面所有的圖標都一樣大的話,建議做成條形圖: 因為條形圖可以有個簡便的方法:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>CSS Sprites</title> <style> /* 清除默認樣式 */ * { padding: 0; margin: 0; } /* 這段代碼是為了居中顯示,不是重點,看不懂的話可以無視 */ body { height: 100vh; display: flex; align-items: center; justify-content: center; } .sprite { /* 設置寬高和邊框 */ width: 55px; height: 52px; border: 1px solid black; /* 背景圖地址設置為雪碧圖的位置 */ background-image: url('http:////img.mukewang.com/wiki/5ed9ca5a0973e0d804450108.jpg'); /* 背景圖尺寸 */ background-size: cover; /* 令背景圖顯示在正確的位置 */ background-position: left; } </style> </head> <body> <div class="sprite"></div> </body> </html> 運行結果: 可以看到結果幾乎是一樣的,但是這種方式就不用我們一點點的去調尺寸,看究竟是哪個尺寸最合適。而且在調試位置的時候我們只需要關心一個方向的位置就可以了,方便了許多。 4. 小結本小節我們學習了如何改變背景圖片的尺寸,學會了這些基礎的CSS用法,你就已經可以在網頁中使用Css Sprite來顯示靜態圖案了。 但我相信你肯定不會滿足于靜態這兩個字,那么接下來就一起來學習一下動畫的知識吧! |