按钮练习
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <style type="text/css"> 7 /*.btn:link{ 8 9 display: block; 10 width: 120px; 11 height: 120px; 12 background-image: url(img/btn/link.png); 13 background-repeat: no-repeat; 14 } 15 16 .btn:hover{ 17 background-image: url(img/btn/hover.png); 18 } 19 20 .btn:active{ 21 background-image: url(img/btn/active.png); 22 }*/ 23 24 /*使用整合的图片*/ 25 .btn:link{ 26 display: block; 27 width: 95px; 28 height: 100px; 29 background-image: url(img/btn/together.jpg); 30 background-repeat: no-repeat; 31 } 32 .btn:hover{ 33 background-position: -78px; 34 } 35 .btn:active{ 36 background-position: -156px; 37 } 38 </style> 39 </head> 40 <body> 41 <a href="#" class="btn"></a> 42 </body> 43 </html>
使用三张图片时
做完功能以后,发现在第一次切换图片时,会发现图片有一个非常快的闪烁,这个闪烁会造成一次不佳的用户体验
产生问题的原因:
背景图片是以外部资源的形式加载进网页的,浏览器每加载一个外部资源就需要单独发送一次外部请求
但是我们外部资源并不是同时加载,浏览器会在资源使用才会去加载资源
这个练习,一上来浏览器只会加载link.png,由于hover和active的状态没有马上触发,
所以hover.png和active.png并不是立即加载的
由于加载图片需要一定的时间,所以在加载和显示过程中会有一段时间,背景图片无法显示,导致闪烁的情况



使用一张图片
为解决该问题,可以将三张图片整合为一张图片,这样可以三张图片一起加载,就不会出现闪烁的问题了,然后通过background-position来切换要显示的图片位置,这种技术叫做图片整合技术(css-sprite)
优点:
1,将多个图片整合到一张图片里,浏览器只需要发送一次请求,可以同时加载多个图片,提高访问效率,提高用户体验
2,将多个图片整合为一张图片,减小了图片的总大小,提高请求的速度,增加了用户体验


浙公网安备 33010602011771号