1. 程式人生 > >【京東商城首頁實戰2】導航條製作(1)

【京東商城首頁實戰2】導航條製作(1)

接下來,開始製作京東的導航條。效果如下圖:

圖1
圖1

業務分析:
1.通欄盒子,並且有背景顏色
2.有版心。
3.版心裡面包含左右浮動的兩個盒子。
4.有下拉效果的盒子後面,有三角形標誌。
5.右邊的盒子裡麵包含幾個li標籤。

分析完之後,對整個頭部的構架和要實現的功能都有簡單的瞭解,下面就是開始一步一步實現這些業務。

1.製作一個通欄的盒子,並設定背景顏色。

html程式碼:

<body>
    <div class="header"></div>
</body>

因為首頁頭部導航是共用的部分,所以樣式寫在base.css裡面。開啟fireworks,用切片工具測量一下導航欄的高度為30px。(沒有樣本圖,抱歉。大家就不用測量了,直接用我給資料就行)。然後用吸管工具吸一下顏色,得到十六進位制顏色為: #f1f1f1。寬度就是整個頁面,可以不用寫。
CSS程式碼:

.header {
    height: 29px;
    background-color: #f1f1f1;
}

然後用瀏覽器開啟,效果如下:
這裡寫圖片描述
圖2

2.新增版心

版心就是網頁正中間,存放內容的盒子。通過測量版心的寬度為1210px。在上一篇css樣式格式化中,已經提取出來,並設定了寬度,這裡就不需要在單獨寫了,只需要新增一個盒子,帶w類就行。
html程式碼:

<div class="header">
        <div class="w"></div>
    </div>

可以給版心盒子增加高度,並設定一個背景顏色,看看效果:

這裡寫圖片描述
圖3

效果:
這裡寫圖片描述
圖4

3.左邊盒子製作

版心盒子裡麵包含兩個盒子,左邊的盒子內容是“送至:北京”,後面有三角符號。當點選三角的時候,下拉列表會出現很多城市名,使用者可以自由選擇送達城市。
從語義上來講,這個盒子應該是個定義列表。所以,我就用定義列表做這個盒子。
HTML程式碼:

<div class="w">
     <div class="fl">
     <!--左盒子-->
     <!--類名為公共類,左浮動-->
          <div class="dt">
          送至:北京
          </div
>
</div> <div class="fr"></div> <!--右盒子--> </div>

效果:
這裡寫圖片描述
圖5

文字出現在網頁中,但使沒有文字居中,所以要給父親盒子加行高,並使行高等於盒子的高度。

這裡寫圖片描述
圖6

4.下拉小三角的製作

原理如圖:

這裡寫圖片描述
圖7

這裡寫圖片描述
圖8

<i> 標籤原是顯示斜體文字效果,<s>標籤是定義加刪除線文字,不建議使用,這裡用作CSS鉤子,來製作小三角。

效果:
這裡寫圖片描述
圖9

下面,只需要在CSS樣式裡面設定菱形的文字樣式,並給i盒子和s盒子的定位就行。

CSS程式碼:

.header .dt{
    padding: 0 20px 0 10px;
    /*測量樣圖,dt盒子左邊有一個10px的間隔。佈局寬高最穩定、其次padding,最後margin。
    而且margin使用有相容問題,所以儘量用margin表示兄弟盒子之間間距。
    所以,使用padding把表示盒子與版心隔開10px。dt盒子右邊距可以根據實際情況設定大小,這裡設定20px。*/
    position: relative;
    /*子絕父相法則:i盒子要想以某個盒子為參照進行絕對定位,那麼,參照的父盒子要相對定位。*/
}
.dt i {
    font: 400 15px "宋體";
    /*設定菱形的加粗、字型和字號。700=bold */
    /*font 合寫的順序:font-style | font-variant | font-weight |
    font-size | line-height | font-family*/
    position: absolute;
    /*絕對定位,一個盒子絕對定位之後就可以設定寬高了。絕對定位不佔位置*/
    width: 15px;
    /*設定i盒子的寬度有講究,使其正好和菱形字號相等*/
    height: 7px;
    /*i盒子的高也有講究,使其正好是菱形字號的一半。這樣菱形的下半部分正好可以和i盒子重合。*/
    top: 13px;
    /*距離dt盒子上padding13px*/
    right: 3px;
    /*距離dt盒子的右padding3px。 如果你設定dt的右padding值不是20px,這個數值也要跟著改變。*/
    background: pink;
    /*設定一個背景顏色,看看盒子效果*/

效果:

這裡寫圖片描述
圖10

但是,我們想要是i盒子和菱形的下半部分重合,所以還需要給s盒子定位,使其再往上移一部分。

.dt s{
    position: absolute;
    /*s盒子也需要絕對定位,它的位置需要使i盒子和菱形的下半部分重合,如圖7所示。*/
    top: -8px;
    /*top正值是往下移,要想往上移就用負值*/
    left: 0;
    /*因為設定i盒子的寬度和菱形的字號相同,這裡可以不需要設定左邊定位。
    如果兩者不一樣寬度,左定位需要根據情況設定。*/
}

效果:

這裡寫圖片描述
圖11

至此,小三角已經基本完工了,我們只需要給i盒子overflow:hidden,隱藏溢位部分,就留下了菱形下半部分。

這裡寫圖片描述
圖12

效果:

這裡寫圖片描述
圖13

好了,導航條左邊部分已經完工了,下篇接著做右邊部分。