[新手前端]選單共用背景圖片


現在的網頁設計比較重視語義化的結構,也就是在設計時會考慮該元素是不是真的「是內容」或者僅是裝飾品,如果是「是內容」就使用 html的元素來表示,如果單純只是造型,就使用CSS 的元素背景來呈現。

所以目前比較流行的選單做法之就是將文字隱藏後用背景圖取代,雖然有一派是主張連字都不要藏,使用所謂的icon-font或是載入字型來美化,不過在英語系國家這麼做問題不太,一個字型檔不會有多大,中文就… 常用字至少要3000個,所以,實用性不高,我們中文使用者還是乖乖的用文字取代吧…淚目。

使用的方法很簡單,一般都是用無順序列表 ul 及例表項目 li 裡面放 錨點 a的方式來做選單
li 浮動後就能做出水平選單
a 設定 block就能採用寬度,設定背景,最後用 text-indent:-9999px 將文字推出可視區域

一般都是共用一張背景,然後依不用樣式用 background-position來做位置的變化

檢視原始檔複製到剪貼簿列印關於

<style>  
ul{width: 520px;}  
li{float: left;}  
a{display: block; width: 170px; height: 160px;
 background: url(icons.png)no-repeat left top; text-indent: -9999px;}  
</style>  
.a{background-position: left top;}  
.b{background-position: center top;}  
.c{background-position: center bottom;}  
.d{background-position: right top;}  
.e{background-position: right bottom;}  
.f{background-position: left bottom;}  
<ul>  
    <li><a class="a" href="#">圖示1</a></li>   
    <li><a class="b" href="#">圖示2</a></li>   
    <li><a class="c" href="#">圖示3</a></li>   
    <li><a class="d" href="#">圖示4</a></li>   
    <li><a class="e" href="#">圖示5</a></li>   
    <li><a class="f" href="#">圖示6</a></li>   
</ul>  

也可以像 加上:hover 之後在滑鼠移入時變色

檢視原始檔複製到剪貼簿列印關於

<style>  
ul{width: 520px;}  
li{float: left;}  
a{display: block; width: 80px; height: 70px; 
background: url(icons2.png)no-repeat left top; text-indent: -9999px;}  
.a{background-position: left top;}  
.b{background-position: -80px top;}  
.c{background-position: -160px bottom;}  
.d{background-position: -160px top;}  
.e{background-position: -160px bottom;}  
.f{background-position: -80px bottom;}  
.a:hover{background-position: left top;}  
.b:hover{background-position: -327px top;}  
.c:hover{background-position: -407px bottom;}  
.d:hover{background-position: -407px top;}  
.e:hover{background-position: -407px bottom;}  
.f:hover{background-position: -327px bottom;}  
</style>  
</head>  
<body>  
  
<nav>  
<ul>  
  
    <li><a class="a" href="#">圖示1</a></li>   
    <li><a class="b" href="#">圖示2</a></li>   
    <li><a class="c" href="#">圖示3</a></li>   
    <li><a class="d" href="#">圖示4</a></li>   
    <li><a class="e" href="#">圖示5</a></li>   
    <li><a class="f" href="#">圖示6</a></li>   
  
</ul>  
</nav>  
</body>  

或是可以像這樣把他們當成圖示,字還是保留
這個時候只要利用 text-indent:70px 空出圖片的位罝就行了
但是要特別注意圖片的組成方式,有可能因為寬度而造成旁邊的圖示不小心跑出來
所以在橫排的列表中,最好圖示都做直的往下排,在直排的場合做橫排的圖示

再配合 background:repeat-x |repeat-y |no-repeat
其實可以把圖示全部放成同一張圖片,依這兩種不同排法分好,最終只需要兩張就好

當然還是要注意圖片的大小,不然反而會拖慢網速
不過一般的情況下,少讀幾個檔頭的img是會比讀一張大張的來得快沒錯

檢視原始檔複製到剪貼簿列印關於

<style>  
ul{width: 520px;}  
li{float: left;list-style: none;}  
a{display: block; width: 160px; height: 70px; 
background: url(icons3.png)no-repeat left top; text-indent: 80px; line-height: 70px; }  
.a{background-position: left top;}  
.b{background-position: left -70px;}  
.c{background-position: left -140px;}  
.d{background-position: left -210px;}  
.e{background-position: left -280px;}  
.f{background-position: left -350px;}  
    </style>  
</head>  
<body>  
  
<nav>  
<ul>  
    <li><a class="a" href="#">圖示1</a></li>   
    <li><a class="b" href="#">圖示2</a></li>   
    <li><a class="c" href="#">圖示3</a></li>   
    <li><a class="d" href="#">圖示4</a></li>   
    <li><a class="e" href="#">圖示5</a></li>   
    <li><a class="f" href="#">圖示6</a></li>   
  
</ul>  
</nav>  
</body>  


以上,就是簡單的選單製作報告~
感謝大家 >0<


About chibc

chibc《暗月之鏡》 從高中網路開始普及就開始成為重度網路使用者,早期主要活動集中於巴哈姆特。
G+ CHIBC

看完有什麼想和版主講的,沒有就留個「閱」吧

This site uses Akismet to reduce spam. Learn how your comment data is processed.