1. 模仿百度效果
百度的網站是每當鼠標放在相機圖標那個位置的時候,相機就會切換到藍色:
我們來模仿一下這個效果:
<!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: 20px;
height: 18px;
/* 背景圖地址設置為雪碧圖的位置 */
background-image: url(http://img.mukewang.com/wiki/5ed9bc1809824eef00180038.jpg);
/* 禁止背景圖重復 */
background-repeat: no-repeat;
/* 令背景圖顯示在正確的位置 */
background-position: top;
}
/* 當鼠標移入時的樣式定義 */
.sprite:hover {
/* 令背景圖顯示在正確的位置 */
background-position: 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: 20px;
height: 18px;
/* 背景圖地址設置為雪碧圖的位置 */
background-image: url(http://img.mukewang.com/wiki/5ed9bc1809824eef00180038.jpg);
/* 禁止背景圖重復 */
background-repeat: no-repeat;
/* 令背景圖顯示在正確的位置 */
background-position: top;
/* 為背景添加過渡動畫 */
transition: background .3s;
}
/* 當鼠標移入時的樣式定義 */
.sprite:hover {
/* 令背景圖顯示在正確的位置 */
background-position: bottom;
}
</style>
</head>
<body>
<div class="sprite"></div>
</body>
</html>
運行結果:
可以看到其實就是這么個原理,兩張形狀一樣但顏色不一樣的圖形放在一張雪碧圖中,然后再控制位置即可。
3. 小結
就是在頁面上加入了這么一個動態的效果,頁面才不會顯得那么平靜如水。
有趣的交互效果能讓你的頁面熠熠生輝、錦上添花。
但并不是所有雪碧圖的尺寸都能這么完美的貼合元素,下一小節我們將告訴大家應該如何調節背景圖片的大小以適應頁面元素。