我們在網站衝浪常常看會看到很多圖片按鈕,當滑鼠入上去或滑鼠移開圖片會隨之改變,這個的按鈕至少需要三張小圖片才能實現這樣的功能。
我先說說這樣做的缺點
三張圖片,你的瀏覽器會啟動三個綫程連結你的圖片伺服器,不划算。
一旦其中一幅圖片下載過程中中斷,用戶當把滑鼠放到按鈕上時,可能會出現一個紅叉叉。
圖片太多不好維護,易產生垃圾,占用磁碟空間,linux ext3一個空檔案占用2048
最優方法是使用一張圖片,將三幅圖片平行或垂直排開,放到一幅圖片中,然後使用CSS控制顯示你需要的部分。
stylesheet
<style type="text/css"> <!-- .clear { clear: both; height: 0; font-size: 0; line-height: 0; zoom: 1 } .containerPlain { background-color: #fff; border-right: 1px solid #cacaca; border-left: 1px solid #cacaca; padding: 0 3px; } .left_top_corner { display: block; width: 4px; height: 4px; background-position: top left; float: left; font-size: 0; } .right_top_corner { display: block; width: 4px; height: 4px; background-position: top right; float: right; font-size: 0; } .left_bottom_corner { display: block; width: 4px; height: 4px; background-position: bottom left; float: left; font-size: 0; } .right_bottom_corner { display: block; width: 4px; height: 4px; background-position: bottom right; float: right; font-size: 0; } .left_bottom_corner, .right_bottom_corner , .left_top_corner, .right_top_corner{ background-image: url(corners/corner.gif); } .middle_top_line { display: block; float: left; height: 3px; line-height: 0; border-top: 1px solid #cacaca; } .middle_bottom_line { display: block; float: left; height: 3px; border-bottom: 1px solid #cacaca; font-size: 0; } .middle_top_line, .middle_bottom_line { width: 167px; } --> </style>
HTML
<div style="width:175px;"> <span class="left_top_corner"></span> <span class="middle_top_line"></span> <span class="right_top_corner"></span> <div class="containerPlain"> You Content </div> <span class="left_bottom_corner"></span> <span class="middle_bottom_line"></span> <span class="right_bottom_corner"></span> </div>
下面是一個更複雜的例子
stylesheet
<style type="text/css"> <!-- .clear { clear: both; height: 0; font-size: 0; line-height: 0; zoom: 1 } .containerPlain { background-color: #fff; border-right: 1px solid #cacaca; border-left: 1px solid #cacaca; padding: 0 3px; clear: both; } .left_top_corner { display: block; width: 4px; height: 4px; background-position: top left; float: left; font-size: 0; } .right_top_corner { display: block; width: 4px; height: 4px; background-position: top right; float: right; font-size: 0; } .left_bottom_corner { display: block; width: 4px; height: 4px; background-position: bottom left; float: left; font-size: 0; } .right_bottom_corner { display: block; width: 4px; height: 4px; background-position: bottom right; float: right; font-size: 0; } .left_bottom_corner, .right_bottom_corner , .left_top_corner, .right_top_corner{ background-image: url(corners/corner.gif); } .middle_top_line { display: block; float: left; height: 3px; line-height: 0; border-top: 1px solid #cacaca; } .middle_bottom_line { display: block; float: left; height: 3px; border-bottom: 1px solid #cacaca; font-size: 0; } .middle_top_line, .middle_bottom_line { width: 167px; } .block_title { line-height: 26px; height: 26px; background-image: url(corners/block_title_left.png); background-repeat: no-repeat; padding-left: 10px; font-size: 13px; font-weight: bold; background-color: #dddbdc; } .block_title_right { display: block; background-image: url(corners/block_title_right.png); background-repeat: no-repeat; background-postition: right; float: right; width: 4px; height: 26px; } --> </style>
HTML
<div style="width:175px;"> <span class="left_top_corner"></span> <span class="middle_top_line"></span> <span class="right_top_corner"></span> <div class="containerPlain"> <div class="block_title"> <span class="block_title_right"></span> Title </div> <div style="padding: 10px 7px 7px 7px"> Content </div> </div> <span class="left_bottom_corner"></span> <span class="middle_bottom_line"></span> <span class="right_bottom_corner"></span> </div>
下面是摘取LinkedIn網頁,作為例子.
合併多張小圖片為一張圖片,然後通過偏移量取其中一部分顯示,這樣做的目的是,加快瀏覽器下載速度,降低與伺服器建立連接的開銷.
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US"> <head profile="http://gmpg.org/xfn/11"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>LinkedIn Blog</title> <style type="text/css"> /* Theme Name: LinkedIn Blog Theme URI: http://blog.linkedin.com/ Description: LinkedIn's main blog theme Author: Prajakta Godbole Author URI: http://linkedin.com/ Version: 2.0 */ /* Reset styles Copyright (c) 2011, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.com/yui/license.html version: 2.9.0 */ html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,select,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,button,caption,cite,code,dfn,em,input,optgroup,option,select,strong,textarea,th,var{font:inherit}del,ins{text-decoration:none}li{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:baseline}sub{vertical-align:baseline}legend{color:#000} /* Colors and fonts */ html { background-color: #F5F5F5; } body { font-family: Arial, Helvetica, "Nimbus Sans L", sans-serif; padding-top: 20px;} a { color: #006fb3; text-decoration: none; } a:hover { color: #006fb3; text-decoration: underline;} /* Sidebar */ #sidebar { width: 312px; float: left; margin-left: 20px;} #sidebar .widgets { border: 1px solid #ddd; background-color: #FFF; margin-bottom: 50px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px;} #sidebar .widgets h2 { color: #4d4e54; font-size: 14px; clear: both; margin-bottom: 13px;} #sidebar .widgets ul li { font-size: 11.5px; } #sidebar .widgets ul li a { color: #4d4e54; } #sidebar .widgets .widget-bg { position: absolute; top: -13px; right: 15px; width: 35px; height: 40px; } /* Follow us list */ #sidebar .follow-us-widget { overflow: hidden; padding-bottom: 35px; border-bottom: 1px solid #ccc; } #sidebar .follow-us-widget .widget-wrapper { padding: 15px;} #sidebar ul#follow-list li { float: left; position: relative; margin-right: 17px; zoom: 1; display: inline;} #sidebar ul#follow-list li:last-child { margin-right: 0;} #sidebar ul#follow-list li .follow-div { margin:0; padding:0; width: 33px; height: 38px; } #sidebar ul#follow-list li a { display: block; width: 33px; height: 38px; text-indent: -9999px; background: url('http://blog.linkedin.com/wp-content/themes/linkedin/images/sprite3.png');} #sidebar ul#follow-list li a#follow-lnkd { background-position: 0 0; } #sidebar ul#follow-list li a#follow-twtr { background-position: -33px 0; } #sidebar ul#follow-list li a#follow-fb { background-position: -66px 0; width: 32px; } #sidebar ul#follow-list li a#follow-flickr { background-position: -130px 0; width: 32px;} #sidebar ul#follow-list li a#follow-youtube { background-position: -98px 0; width: 32px;} #sidebar ul#follow-list li a#follow-rss { background-position: -162px 0; width: 32px; } #sidebar .widgets ul#follow-list li.last { margin-right: 0;} /* Flickr */ #sidebar .flickr-widget { position: relative; border-bottom: 1px solid #ccc; } #sidebar .flickr-widget .widget-wrapper { padding: 15px;} #sidebar .flickr-widget h2 { margin-bottom: 20px; } #sidebar .flickr-widget .widget-bg { background: url('images/sprite3.png') -267px 0 no-repeat;} #sidebar #flickr-img-grp { margin-bottom: 10px; overflow:hidden; } #sidebar #flickr-img-grp .flickr-img { float: left; margin: 0 15px 15px 0; } </style> </head> <body> <div id="sidebar"> <div class="widgets"> <div class="follow-us-widget"> <div class="widget-wrapper"> <h2>Follow Us Links</h2> <ul id="follow-list"> <li><a id="follow-lnkd" href="https://www.linkedin.com/company/linkedin" target="_blank">LinkedIn</a> </li> <li><a id="follow-twtr" href="http://twitter.com/LinkedIn" target="_blank">Twitter</a></li> <li><a id="follow-fb" href="https://www.facebook.com/LinkedIn" target="_blank">Facebook</a> </li> <li><a id="follow-youtube" href="http://www.youtube.com/user/LinkedIn" target="_blank">YouTube</a> </li> <li><a id="follow-flickr" href="http://www.flickr.com/groups/linkedin/pool/" target="_blank">Flickr</a></li> <li class="last"><a id="follow-rss" href="http://feeds.feedburner.com/LinkedInBlog" target="_blank">RSS</a> </li> </ul> </div> </div> </div> </div> </body> </html>