图像拼合就是单个图像的集合。
有许多图像的网页可能需要很长事件来加载和生成多个服务器的请求。
使用图像拼合会降低服务器的请求数量,并节省带宽。
图像拼合--创建一个导航列表
<!DOCTYPE html> <html> <head> <title>自学教程(如约智惠.com)</title> <meta charset="utf-8"> <style> #navlist {position:relative;} #navlist li{ margin:0px; padding:0px; list-style:none; position:absolute; top:0px; } #navlist li, #navlist a{ height:44px; display:block; } #home { left:0px; width:46px; background:url('./images/img_navsprites.gif')0 0; } #prev { left:63px; width:43px; background:url('./images/img_navsprites.gif')-47px 0; } #next { left:129px; width:43px; background:url('./images/img_navsprites.gif')-91px 0; } </style> </head> <body > <ul id="navlist"> <li id="home"><a href="/"></a></li> <li id="prev"><a href="/css/"></a></li> <li id="next"><a href="/css/"></a></li> </ul> </body> </html>
实例解析:
#navlist{position:relative;} - 位置设置相对定位,让里面的绝对定位
#navlist li{margin:0;padding:0;list-style:none;position:absolute;top:0;} - margin和padding设置为0,列表样式被删除,所有列表项是绝对定位
#navlist li, #navlist a{height:44px;display:block;} - 所有图像的高度是44px
现在开始每个具体部分的定位和样式:
#home{left:0px;width:46px;} - 定位到最左边的方式,以及图像的宽度是46px
#home{background:url(img_navsprites.gif) 0 0;} - 定义背景图像和它的位置(左0px,顶部0px)
#prev{left:63px;width:43px;} - 右侧定位63px(#home宽46px+项目之间的一些多余的空间),宽度为43px。
#prev{background:url('img_navsprites.gif') -47px 0;} - 定义背景图像右侧47px(#home宽46px+分隔线的1px)
#next{left:129px;width:43px;}- 右边定位129px(#prev 63px + #prev宽是43px + 剩余的空间), 宽度是43px.
#next{background:url('img_navsprites.gif') no-repeat -91px 0;} - 定义背景图像右边91px(#home 46px+1px的分割线+#prev宽43px+1px的分隔线)
图像拼合--悬停效果
<!DOCTYPE html> <html> <head> <title>自学教程(如约智惠.com)</title> <meta charset="utf-8"> <style> #navlist {position:relative;} #navlist li{ margin:0px; padding:0px; list-style:none; position:absolute; top:0px; } #navlist li, #navlist a{ height:44px; display:block; } #home { left:0px; width:46px; background:url('./images/img_navsprites_hover.gif')0 0; } #home a:hover { background:url('./images/img_navsprites_hover.gif')0 -45px; } #prev { left:63px; width:43px; background:url('./images/img_navsprites_hover.gif')-47px 0; } #prev a:hover { background:url('./images/img_navsprites_hover.gif')-47px -45px; } #next { left:129px; width:43px; background:url('./images/img_navsprites_hover.gif')-91px 0; } #next a:hover { background:url('./images/img_navsprites_hover.gif')-91px -45px; } </style> </head> <body > <ul id="navlist"> <li id="home"><a href="/"></a></li> <li id="prev"><a href="/css/"></a></li> <li id="next"><a href="/css/"></a></li> </ul> </body> </html>
实例解析:
由于该列表项包含一个链接,我们可以使用:hover伪类
#home a:hover{background: transparent url(img_navsprites_hover.gif) 0 -45px;} - 对于所有三个悬停图像,我们指定相同的背景位置,只是每个再向下45px