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来显示静态图案了。 但我相信你肯定不会满足于静态这两个字,那么接下来就一起来学习一下动画的知识吧! |