设计之家 > 教程 > 網頁教程 > CSS教程 >

CSS的滑動門技術研究(3)

作者:佚名 來源:天極 時間:2006-09-29

 

收尾工作

敏銳的觀察者也許會在上一例注意到白色的標簽角落。這些不透明的角用來防止下面的圖像透過上面的一副。理論上,我們可以嘗試使用部分背景圖像來適應標簽的背景。但是我們的標簽會在高度上增長,嘗試通過移動背景顏色,背景圖像就會相對變矮。代替的辦法是,改變圖像,將標簽的角落設為透明。如果弧線是反鋸齒的,我們在其邊緣使用較平均的背景色彩。

現在,角落已經變成透明色,左邊的圖像將透過右邊圖像的角落。為了補償,我們為表單項加入和左邊圖像寬度相吻合的padding(9px)。既然已經為表單項加入了padding,我們還需去掉同樣的寬度以達到文本的居中(15px-9px=6px):

#header li { float:left; background:url("right.gif") no-repeat right top; margin:0; padding:0 0 0 9px; }#header a { display:block; background:url("left.gif") no-repeat left top; padding:5px 15px 4px 6px; }

仍未結束,因為加入了9個像素的padding使左邊圖像與標簽的左邊之間產生了一段空白。現在,左側與右側,可見“doorway”的邊緣接在一起,我們再不需要將左邊圖像保持在上方。于是,交換兩幅背景圖像的順序,相反過來。同樣交換“當前”標簽中使用的兩幅圖像:

#header li { float:left; background:url("left.gif") no-repeat left top; margin:0; padding:0 0 0 9px; }#header a, #header strong, #header span { display:block; background:url("right.gif") no-repeat right top; padding:5px 15px 4px 6px; }#header #current { background-image:url("left_on.gif"); }#header #current a { background-image:url("right_on.gif"); padding-bottom:5px; }

完成這些后,我們到達了效果4。要注意的是,透明的角落在標簽的左側產生了一段不能點擊的無效區域。這個區域在文本以外,但仍然是可以察覺到的。在標簽的兩邊都使用透明的圖像是沒有必要的。如果我們不希望產生這種無效的區域,那么我們必須使用在標簽后面使用顏色,然后用這種顏色來代替標簽角落的透明圖像。現在我們僅保持這種透明角落。

對于剩下的問題,我們將一次性完成全部的修改:加重標簽文本,將普通標簽中的文本改為棕色,“當前”標簽文本改為深灰色,去掉鏈接的下劃線,最后將懸停文本色彩改為同樣的深灰色。經過一系列的改變,我們將看到目前為止的效果5。

一致性的解決

在效果2之后,我們公認的一個問題就是在IE5/Mac瀏覽方式下,每個標簽延伸并占據了整個瀏覽器的寬度,以致標簽垂直的堆在了一起。這不是我們所希望的。

在大多數的瀏覽器中,浮動一個元素會有收縮,收縮最小至它所包含內容的大小。如果一個浮動元素包含一幅圖像或其本身即圖像,便會收縮至圖像的寬度。如果僅僅包含文本,那么將會收縮至最長的,不可被頂開的那文本的寬度。

一個問題出現在IE5/Mac中的圖片中,當一個auto-width的塊對象元素被插入到一個浮動的元素中時。其他的瀏覽器仍舊將浮動縮小至最小,而無視容器內的塊對象元素。但IE5/Mac并不按照這種情況,相反它將浮動和塊對象元素擴展至盡可能的寬度。為解決這個問題,我們將錨鏈同時浮動起來,但僅僅對于IE5/Mac,以免放棄其他的瀏覽器。首先,我們為錨鏈設定浮動規則。然后,我們使用反斜杠注釋法來隱藏這種規則,讓它僅僅對IE5/Mac生效,而無視其他的瀏覽器:

#header a { float:left; display:block; background:url("right.gif") no-repeat right top; padding:5px 15px 4px 6px; text-decoration:none; font-weight:bold; color:#765; }/* Commented Backslash Hack hides rule from IE5-Mac \*/#header a {float:none;}/* End IE5-Mac hack */

現在IE5/Mac瀏覽器將按我們所期望的那樣來顯示標簽,看效果6。對于非IE5/Mac的瀏覽器什么都不需要改變。注意到IE5.0/Mac的一系列解釋上的bug在IE5.1中解決。因此,滑動門技術在5.0版本中所遭遇的問題超出了hack的限度。既然升級到IE5.1/Mac已不成難題,OS 9 Macs/IE5.0的占有率應逐漸縮減至很低。

舉一反三

我們剛剛演練了滑動門技術,用純文本和無序列表來創造導航標簽,加以少量的樣式。它的裝載速度快,具有可維持性,并且文本的大小可以在不破壞外觀的情況下進行較大的伸縮。不必我們再重申在創造復雜樣式的導航欄中,滑動門技術所表現出來的彈性了。

只有想不到,沒有做不到。最終效果向我們展示了一例,但我們設計不可能因此而被限定死。

在某些場合,標簽不一定是對稱的。我很快就制作了這種標簽的第二個版本,也有陰影3D的樣式,有角的邊緣,和具有特色的左邊部分。依據第二個版本,我們甚至可以交換左右兩幅圖像的位置。以這種細致的布局和靈巧的圖像控制,我們可以去掉按鈕的下邊框以便標簽圖像更好的去適應背景,如第三個版本所顯示的那樣。如果你的瀏覽器支持多個樣式表的切換,你甚至可以靠它在多個版本的導航欄之間自由切換。

仍有許多我們沒有提到的其他的效果。快速的提一下,我改變鼠標懸停的文本色彩,但是真個圖像可以替換掉以創造出更有趣的變換效果。即使標記中兩個嵌套的HTML元素,也可以用CSS來達到一些我們還未想到的效果。我們在此例中創造的僅僅是水平的標簽欄,但滑動門亦可應用于許多其他的情形。閣下覺得如何呢?

标签:滑動

相關文章:

推薦設計

最新文章