商品展示技巧:XML+Spry+LightBox

先參閱結果範例

商品記錄資料===>存放在結構化語言的XML檔案
結合資料有效呈現=====>使用Spry架構
點選縮圖呈現大圖及相關細節說明=====>使用LightBox設計技巧

第一階段: XML資料結合Spry架構呈現商品影像

為了有效維護商品資料及呈現設計,將商品記錄資料寫在XML檔案(如下圖)

插入==>Spry==>Spry資料集

第1個步驟:選取資料類型為「XML」,按瀏覽選擇XML的檔案,列元素點選記錄單位。

第2個步驟:當資料欄位內容有HTML標籤時,例如下圖的desc欄位,則將欄位類型設定為html,還可以指定要排序的欄位。

第3個步驟:選擇要顯示的版面模式,例如第3種「插入堆疊容器」,按「設定」鈕決定要顯示的欄位。

CSS面板:調整CSS規則,參考如下
「.StackedContainers」負責整個版面的寬度及置中
「.StackedContainers .RowContainer」負責一筆記錄資料的版面

結果參考如下:

第二階段: 設計點選縮圖顯示大圖的超連結

接下來要設定超連結,當點選縮圖時會呈現出大圖
點選縮圖影像,設定連結到大圖影像,參考下圖程式碼
{image3}是大圖檔名的欄位,留意圖檔存放的路徑及連結的相對關係
為了設計當滑鼠滑入時整個商品記錄呈現背景色彩
可以將<a>連結標籤向前後外圍搬移

第三階段:運用LightBox加強設計呈現大圖的效果

Lightbox2(燈箱效果)是由 Lokesh Dhakar 所製作的程式。
點選上行Lightbox2可以連結到原始網站參閱原始說明
點選這裡可以下載所需要的相關檔案
(相關的檔案如下圖請參考:1個CSS檔案,5個JS檔案, 多個影像圖檔)

接著在</head>的上方插入以下4行程式碼(留意檔案存放的位置及路徑的相對關係
前3行是載入需要的javascript程式檔
第4行是連結到lightbox.css樣式表檔

<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="js/lightbox.js"></script>
<link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />

參考下圖

再接著
必須在<a>連結的標籤中加上2個屬性

<a href="flower500/{image3}.jpg" rel="lightbox[roadtrip]" title="{desc}">

rel="lightbox[roadtrip]",表示要啟動lightbox,
[]表示所有的連結有群組關係,roadtrip是群組名稱,
title="{desc}",是要顯示的標題內容,使用{desc}欄位的內容當作標題的內容,
會呈現到大圖顯示的下方

參考下圖

結果參考下圖: 點選此可以參閱範例

 

Posted on 一月 24, 2010 by 張翠玲

Filed under 網頁設計 | 12 迴響 funP udn Yahoo! Delicious Digg

評分: 1分 2分 3分 4分 5分 得分: 5.0/ 投票數: 10


迴響:

老師您好 麻煩您教我如何 在firefox align center 跟 td 全選超連結 rooms 2 謝謝

由...發表 114.136.19.250 on 一月 25, 2010 at 09:09 下午 CST #

老師!不好意思,你知道怎麼在家設兩台電腦間的印表機共用和網路芳鄰嗎?

由...發表 宜芳 on 一月 27, 2010 at 02:08 下午 CST #

Re:宜芳
嗯!得先詢問你的作業系統是什麼喔?這個問題需得知的相關資訊不少喔!建議妳可以先到Google輸入"印表機共用"搜尋,就可以得到許多的相關說明文章喔!要不然得來找我談談囉!

由...發表 Tsuiling on 一月 28, 2010 at 02:59 上午 CST #

翠玲老師, 今天您幫我看的珠寶網, 在content區中無法顯示flash的問題, 回家後打開Dreamweaver, 發現都正常了. header區中的flash也正常(檔案我都還沒動). 不過, 測試IE6仍有content區圖片/文字內容都不見且flash位置不在所設定的定位點上的問題. 再麻煩老師一下.

由...發表 Grace Chang on 二月 02, 2010 at 06:59 下午 CST #

張老師您好~謝謝您以上清楚的light box教學, 今天我用單個xml作出來沒有問題. 但是,當我用spry標籤面板, 每個裏面內容區再插入xml資料集(ds1, ds2, ds3...等),再作light box語法, 但是發現只要一將大圖連結拿掉邊框,再作完網頁預覽以後, 從ds2以後的設定就會跑掉. 但是,只要不將大圖連結之邊框拿掉, 就沒事.(只是圖有個框很醜). 不知如何解決? (可能以上我寫的很不清楚 ~ 老師請您週一幫我看一下檔案). 祝週末愉快~

由...發表 Grace Chang on 二月 05, 2010 at 11:05 下午 CST #

Re:Grace
好的,妳的問題星期一到課堂上我再看看!

由...發表 Tsuiling on 二月 06, 2010 at 11:02 下午 CST #

老師好:您上的lightbox的課程很受用..謝謝老師的用心

由...發表 黃麗玲(judy) on 二月 11, 2010 at 01:27 下午 CST #

新年快樂!大家恭禧啊!開工囉!祝大家都有好福氣!fullfull的福氣!fullfull的元氣,學習一級棒!工作一級順!
謝謝Judy~很開心對你們有幫助!祝妳新的一年很快樂喔!

由...發表 Tsuiling on 二月 19, 2010 at 12:04 下午 CST #

老師~~ 您的範例中,商品內容的部分,只有{desc}這個欄位, 我知道您是用在{desc}欄位中摻入html碼的方式。 但如果不用這樣的方式,想呈現較多的欄位內容的話, 在js檔中該怎麼改啊? 我覺得好像是在您上課檔案lightbox.js中,大約222行左右的位置(應該是要改下面這段的內容吧?),但我搞不太清楚那個語法怎麼寫XDDD: if ((imageLink.rel == 'lightbox')){ // if image is NOT part of a set, add single image to imageArray this.imageArray.push([imageLink.href, imageLink.title]); } else { // if image is part of a set.. this.imageArray = $$(imageLink.tagName + '[href][rel="' + imageLink.rel + '"]'). collect(function(anchor){ return [anchor.href, anchor.title]; }). uniq(); while (this.imageArray[imageNum][0] != imageLink.href) { imageNum++; } 我笨笨地直接在anchor.title後面加上其他欄位的名稱,但看來是沒用的XDDDDD 麻煩老師指點了~ 不然.......就只好回去改xml,只是我覺得電腦白癡客戶大概會瘋掉我想......

由...發表 沒帶水晶指甲的秀芳 on 八月 08, 2010 at 01:24 上午 CST #

水晶指甲不見了呀?
暑期間實在沒多餘的精神
待暑期後我再研究看看好嗎?

由...發表 Tsuiling on 八月 10, 2010 at 04:58 上午 CST #

那就等老師暑假過後吧~ 另外,如果只是要更換資料顯示的位置,應該是改js的內容參數就可以了吧? (原本是在照片下方,如果想換到左方或右方) 欄位的顯示在這之前我先用html標籤處理了,可是好像在樣式顯示上有點問題~ css整理好再看看嚕~

由...發表 沒帶水晶指甲的秀芳 on 八月 23, 2010 at 02:32 下午 CST #

我實在找不到資料改成左方或右方顯示的程式碼, 所以只好靠著偷照片空間和排版,讓資料看起來不會被框得很窄嚕~ 還是期待老師有空可以研究研究,眼前我交件了先XD http://www.moominlinda.com/yetem01/ 另外之前那個可愛小象的網站已經完工嚕~ 也歡迎參考http://www.abbyrose.com.tw/ 這個網站有畫了架構圖,是給客戶交接用的,也一併附上喔 在http://www.moominlinda.com/abbyrose/data.jpg

由...發表 準備去大陸的秀芳 on 九月 03, 2010 at 06:35 下午 CST #

發表迴響:
  • HTML 語法: 開啟