how2j網站前端項目——天貓前端(第一次)學習筆記4


開始產品頁面的學習。項目里面有900多種商品,但是每種商品的布局是一致的:1.產品圖片 2.基本信息 3.產品詳情 4.累計評價 5.交互。從第一個產品圖片開始吧!

一、產品圖片

產品圖片用到了分類頁面中學到的一個技術,就是鼠標懸停在某個圖片上的時候,這個圖片的邊框會加粗,這是利用了加一層框架的技術,即在圖片外面再加上一層div,這個div平時的時候邊框的顏色就是背景顏色(白色),當鼠標懸停在圖片上時,讓這個外層div的邊框顯示為不同的顏色就行了。

自己編寫玩HTML,再加上CSS樣式后,產品圖片效果如下:

大圖片下面的4個小圖片,可以看出來沒有完全居中,我自己不知道怎么完全居中。看了站長的代碼,效果雖然是居中的,可是也並不是完全居中,讓我想了半天。原來大圖片是400px寬,小圖片是60px寬,5個小圖片的div獲取全局div寬度的80%,400*0.8=320,和5個小圖片總寬度300px很接近,所以感覺是居中的。。。。

 

二、基本信息頁面

步驟一中的產品圖片固定寬度,右側基本信息自動填滿

純html頁面效果:

試着自己加CSS樣式:

有兩處地方沒有做好:一個是價格處的背景顏色,還有一個是購買數量的調節按鈕不會做,來看一下站長是怎么做的。原來都是已經做好的圖片。。。

三、產品詳情

純html頁面:

自己開始加CSS樣式:

站長的商品詳情做的很精致,上面有一個邊框和一個美人尖:

站長是這么做的:商品詳情鏈接添加一個類屬性,值為selected,然后CSS代碼是這么寫的:

 1 a.selected:before{ /*這個:before 是說在a.selected前面的意思*/
 2     content: "";
 3     display: block;
 4     border-width: 1px;
 5     border-color: #b00000;
 6     border-style: solid;
 7     width : 90px;
 8     height: 0px;
 9     position: absolute;
10     top: -1px;
11     margin-left: -1px;
12 }
13 a.selected:after{
14     content: "";
15     display: block;
16     border-color: #b00000 transparent transparent;
17     border-style: solid;
18     border-width: 5px;
19     width: 0px;
20     height: 0px;
21     position: absolute;
22     top: -1px;
23     left: 50%;
24     margin-left: -5px;
25 }

四、累計評價

純html的效果

嘗試自己加上CSS樣式,這次還有一個美人尖,看看自己能不能搞定?哈哈,(╥╯^╰╥),難啊

五、交互內容

這次的交互內容只有3個,很容易的。一個是點擊產品圖片中的小圖片,會以大圖片顯示;第二個是點擊上調或者下調按鈕進行購買數量的選擇;第三個是商品詳情和評價的切換。怎么樣?還是很簡單的,開始第一個交互內容吧!

5.·1 交互內容1——大小圖片的切換顯示

自己的思路(無論對錯):當鼠標進入某一個小圖片,觸發了事件,讓這個小圖片的大版本顯示在固定位置;鼠標離開,啥也不做

貼一下站長的代碼:

 1 $("img.smallImage").mouseenter(function(){ /*通過$()獲取類名是smallImage的小圖片元素,觸發鼠標進入事件*/  2     var bigImageURL = $(this).attr("bigImageURL"); /*獲取小圖片對應的大圖片的url*/  3        $("img.bigImg").attr("src",bigImageURL); /*通過attr()函數修改大圖片的src屬性,真是巧妙啊!這樣也不用像我的思路那樣去獲取位置信息了,簡簡單單的修改一下src屬性就搞定了*/  4 });  5  
 6 $("img.bigImg").load( /*這個函數其實沒有也可以。但是這個函數是做什么用的呢?當大圖片在加載的過程中,那每次打開頁面就會加載這個大圖片,觸發事件*/  7     function(){  8         $("img.smallImage").each(function(){ /*遍歷所有類名是smallImage的img,通過attr()函數獲取自定義屬性bigImageURL,即對應的大圖片*/  9             var bigImageURL = $(this).attr("bigImageURL"); 10             img = new Image(); /*new一個圖像對象img*/ 11             img.src = bigImageURL; /*給對象img的屬性src賦值,值就是大圖片的url*/ 12              
13             img.onload = function(){ /*onload時間就是頁面或圖片加載完成后就執行后面的內容*/ 14  console.log(bigImageURL); /*把url打印到控制台*/ 15                 $("div.img4load").append($(img)); /*把img添加到img4load這個div中,這個div添加了hide類,所以圖片不會顯示*/ 16  }; 17  }); 18  } 19 );

 5.2購買數量增加、刪除功能

自己的思路:鼠標點擊事件,每當鼠標點一次增加或者刪除按鈕,input中的值就+1或者-1

好,來看下站長的代碼:

 1 <script>
 2   
 3 $(function(){  4     var stock = 66; /*表示最大庫存*/  5     $(".productNumberSetting").keyup(function(){ /*input框,發生鍵盤彈起事件*/  6         var num= $(".productNumberSetting").val();  7         num = parseInt(num);  8         if(isNaN(num))  9             num= 1; 10         if(num<=0) 11             num = 1; 12         if(num>stock) 13             num = stock; 14         $(".productNumberSetting").val(num); 15  }); 16       
17     $(".increaseNumber").click(function(){ /*鼠標單擊*/ 18         var num= $(".productNumberSetting").val(); 19         num++; 20         if(num>stock) 21             num = stock; 22         $(".productNumberSetting").val(num); 23  }); 24     $(".decreaseNumber").click(function(){ 25         var num= $(".productNumberSetting").val(); 26         --num; 27         if(num<=0) 28             num=1; 29         $(".productNumberSetting").val(num); 30  }); 31       
32 }); 33   
34 </script>

5.3 切換產品詳情和評價頁面

自己的思路:發生鼠標單擊事件,當點擊“詳情”字樣時,讓詳情頁面的z-index=1,評價頁面的z-index=0;當點擊“評價”頁面時,就反過來。

站長的代碼:

 1 <script>
 2 $(function(){  3     $("div.productReviewDiv").hide(); /*默認評價隱藏*/  4     $("a.productDetailTopReviewLink").click(function(){ /*點擊評價按鈕時,顯示評價div,隱藏詳情div*/  5         $("div.productReviewDiv").show();  6         $("div.productDetailDiv").hide();  7  });  8     $("a.productReviewTopPartSelectedLink").click(function(){ /*點擊詳情按鈕時,顯示詳情div,隱藏評價div*/  9         $("div.productReviewDiv").hide(); 10         $("div.productDetailDiv").show(); 11  }); 12 }) 13 </script>

 

 

總結:

1.美人尖的做法:首先在上面畫一條橫線,然后在橫線的中間畫一個小尖尖。橫線和小尖尖的做法分別是:a.selected : before和a.selected : after{content: ""; display: block; border-width、border-color、border-style、width、height、position、left、top}設置好

2.通過js創建Image對象的過程,瀏覽器會把圖片從服務器加載到本地。當鼠標懸停,瀏覽器再次發出對大圖片訪問請求的時候,服務器已經給過了,就會返回304,瀏覽器一看是304,就會使用剛才從服務器獲取的大圖片了。

3.自己的思路不是太笨就是太花里胡哨沒啥用,還是站長的思路好,比如說5.3的思路,之前做好了的詳情頁面和評價頁面放在一起,先默認隱藏評價頁面,然后再通過按鈕來選擇就好了。而我的z-index思路,看似好,其實變得更復雜了,因為還要去加絕對定位。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM