星期天看了很多國外的圖書出版商的網站!發現Sams的標籤顯示方式的實踐思路不錯!標籤顯示的實踐方式一般都要用到:javascript,來動態改變div的顯示和隱藏.來看看人家寫的JS代碼吧:
- <script type="text/javascript">
- //<![CDATA[
- //標籤的數組,如果讓我寫,我想不到會用這個儲存
- var tabArray = new Array();
- //預設顯示哪個標籤
- function showDefaultTab(){
- //show 'Description' tab by default, else show first
- if(!showTab('item1')){
- displayToggle(tabArray[0]+"_container",true,'container on');
- document.getElementById(tabArray[0]).className = 'selected';
- }
- }
- //改變內容盒的隱顯,並重繪顯示樣式:感覺有點像配適器模式
- function showTab(tabID){
- var found = false;
- for(var i=0; i < tabArray.length; i++){
- if(tabArray[i] != tabID){
- displayToggle(tabArray[i]+"_container",false, 'container');
- document.getElementById(tabArray[i]).className = '';
- }else{
- displayToggle(tabArray[i]+"_container",true,'container on');
- document.getElementById(tabArray[i]).className = 'selected';
- found = true;
- }
- }
- return found;
- }
- //showtab函數會調用這個函數來隱顯內容盒
- function displayToggle(id, show, newClass){
- var obj = document.getElementById(id);
- if(obj != null){
- if(show){
- obj.style.visibility="visible";
- obj.style.display="block";
- }else{
- obj.style.visibility="hidden";
- obj.style.display="none";
- }
- if(newClass != null)
- obj.className = newClass;
- }
- }
- //]]>
- </script>
看看HTML的代碼吧!相信大家都猜了個大概:
- <div id="sitepage">
- <div id="productBSS" class="tabwidget">
- <ul class="tabs">
- <li id="item1">
- <a id="info3" href="#info3" onclick="showTab('item1'); return false;">Description</a>
- </li>
- <script language="JavaScript">
- tabArray.push('item1');
- </script>
- <li id="item2">
- <a id="info8" href="#info8" onclick="showTab('item2'); return false;">Sample Content</a>
- </li>
- <script language="JavaScript">
- tabArray.push('item2');
- </script>
- </ul>
- </div>
- <div id="bssContent">
- <div id="item1_container">
- <!--detail content-->
- </div>
- <div id="item2_container">
- <!--detail content-->
- </div>
- </div>
- <script language="JavaScript">
showDefaultTab();
</script>
- </div>
最後是CSS的樣式定義:
- <style type="text/css">
- <!--
- body {margin:150px 0 0 0;font-size:0.8em;font-family:"Lucida Grande", Arial, Helvetica, sans-serif;}
- div#sitepage{ margin:0 0 0 184px; padding:0; width:400px;height:auto;}
- div#productBSS { clear:both; }
- div#bssContent { margin:-1px 0 0 0; padding:1em; border-right:1px solid #C7C8CA; border-left:1px solid #C7C8CA; border-bottom:1px solid #C7C8CA; border-top:1px solid #C7C8CA; }
- /* - Tab Widget (blog sidebar) - */
- div.tabwidget { border-left: 1px solid #C7C8CA; position: relative; }
- /* tab control */
- div.tabwidget ul.tabs { list-style: none; margin: 0; padding: 0 0 1px 0; height: 2em; border-bottom: 1px solid #C7C8CA; }
- div.tabwidget ul.tabs li { display: block; float: left; background-color:#EEE; border: 1px solid #C7C8CA; border-width: 1px 1px 1px 0; padding: 0 1em; line-height: 2em; margin: 0; }
- div.tabwidget ul.tabs li.selected { background-color: #FFF; border-bottom: 1px solid #FFF; }
- /* layer control */
- div.tabwidget div.container { display: none; clear: both; border: 1px solid #C7C8CA; border-width: 0 1px 1px 0; position: relative; }
- div.tabwidget div.on { display: block; }
- /* Content control */
- :link,:visited { text-decoration:none; }
- a:link { color:#004F7F; }
- a:visited { color:#2E87B2; }
- a:hover, a:active { color:#004F7F; text-decoration:underline; }
- -->
- </style>
最值的學習的是:javascript數組在這過程的應用!有人會說!寫入程式碼不是更好麼!不就少了至少一個函數和兩個push操作.這種表現形式是死的!但要靈活運用人家寫代碼的思維!如果你只學習人家的表面形式. 哪沒什麼好說的!