中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁(yè) > 技術(shù)文檔 > 網(wǎng)頁(yè)制作 > Ajax標(biāo)簽導(dǎo)航實(shí)例詳解
再談文字溢出問(wèn)題 回到列表 XMLHTTPRequest的屬性和方法簡(jiǎn)介
 Ajax標(biāo)簽導(dǎo)航實(shí)例詳解

作者:yaohaixiao 時(shí)間: 2008-02-25 文檔類型:原創(chuàng) 來(lái)自:藍(lán)色理想

第 1 頁(yè) 代碼篇
第 2 頁(yè) CSS技巧篇
第 3 頁(yè) Javascript技巧篇
第 4 頁(yè) DOM技巧篇
第 5 頁(yè) 大結(jié)局

之前整理發(fā)表了《XMLHTTPRequest的屬性和方法簡(jiǎn)介》,它ajax要使用的核心的技術(shù)之一,現(xiàn)在就來(lái)實(shí)際運(yùn)用它。這個(gè)Ajax標(biāo)簽導(dǎo)航,是我很久前就寫(xiě)的一個(gè)腳本,很實(shí)用的(還被很多網(wǎng)站收錄了哦),現(xiàn)在拿它來(lái)做實(shí)例講解吧!當(dāng)然個(gè)人能力有限,有什么不對(duì)的地方還請(qǐng)多包含!

演示地址:http://www.yaohaixiao.com/code/ajaxtab/index.htm
代碼下載:ajaxtab.rar

效果大家看到了,核心功能有:

  1. 將當(dāng)前選中標(biāo)簽以特殊的樣式顯示
  2. 將異步加載的頁(yè)面信息顯示到指定的DOM節(jié)點(diǎn)中

代碼篇

ajaxtab.js

<!--
// 判斷是否支持ActiveX
var useActiveX=function(){return (typeof ActiveXObject != "undefined");}
// 判斷是否支持DOM
var useDom=function(){return document.implementation && document.implementation.createDocument;} 
// 判斷是否支持XMLHttpRequest對(duì)象
var useXmlHttp=function(){return (typeof XMLHttpRequest != "undefined");} 
// XMLHttpRequest對(duì)象版本
var ARR_XMLHTTP_VERS = ["MSXML2.XmlHttp.6.0","MSXML2.XmlHttp.3.0"];
// DOM對(duì)象版本
var ARR_DOM_VERS = ["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.3.0"];

/* ==================================
* 函數(shù)名稱:$(i)
* 參數(shù)說(shuō)明:i - 目標(biāo)節(jié)點(diǎn)名稱
* 函數(shù)功能:獲取指定的目標(biāo)DOM節(jié)點(diǎn)
* 返 回 值:返回要搜索的目標(biāo)DOM節(jié)點(diǎn)
* 使用方法:$("frmSearch")
================================== */
function $(i){
      if(!document.getElementById)return false;
      if(typeof i==="string"){
              if(document.getElementById && document.getElementById(i)) {
                     // W3C DOM
               return document.getElementById(i);
         }
         else if (document.all && document.all(i)) {
                // MSIE 4 DOM
               return document.all(i);
         }
         else if (document.layers && document.layers[i]) {
                // NN 4 DOM.. note: this won't find nested layers
               return document.layers[i];
         }
         else {
               return false;
         }
      }
      else{return i;}
}

/* ==================================
* 函數(shù)名稱:createXMLHTTPRequest()
* 參數(shù)說(shuō)明:無(wú)參數(shù)
* 函數(shù)功能:創(chuàng)建XMLHttpRequest對(duì)象
* 返 回 值:XMLHTTPRequest對(duì)象
* 使用方法:var oXmlHttp = createXMLHTTPRequest();
================================== */
function createXMLHTTPRequest(){
     // 非IE瀏覽器(Firefox,Opera),XMLHttpRequest對(duì)象是瀏覽器內(nèi)置的一個(gè)對(duì)象
     if (useXmlHttp){
         return new XMLHttpRequest();
   }
   else if (useActiveX) { //在IE(IE< 7.0 = use ActiveX)瀏覽器中,XMLHttpRequest對(duì)象是以ActiveX控件的形式存在的          
         if (!XMLHTTP_VER) {
              for (var i=0; i < ARR_XMLHTTP_VERS.length; i++){
                  try {
                      new ActiveXObject(ARR_XMLHTTP_VERS[i]);
                      XMLHTTP_VER = ARR_XMLHTTP_VERS[i]; // 獲取本地IE瀏覽器相應(yīng)的XMLHttpRequest對(duì)象版本
                      break;
                  } catch (oError) {}
              }
         }
         if (XMLHTTP_VER) {
             return new ActiveXObject(XMLHTTP_VER);
         }
         else {
             throw new Error("無(wú)法創(chuàng)建XMLHttpRequest對(duì)象!");
         }
    }
    else {
         throw new Error("您的瀏覽器不支持XMLHttpRequest對(duì)象!");
    }
}

/* ==================================
* 函數(shù)名稱:ajaxUpdater(tarObj,sMethod,URL,parameters)
* 參數(shù)說(shuō)明:tarObj - 異步獲取信息希望顯示的目標(biāo)節(jié)點(diǎn)ID
*           sMethod - 數(shù)據(jù)提交方法,兩個(gè)可選值get,post
*           URL - 提交的目標(biāo)URL地址
*           parameters - URL后面接(傳遞)的參數(shù) 
* 函數(shù)功能:將異步傳遞的目標(biāo)URL地址返回的信息,無(wú)刷新的寫(xiě)到目標(biāo)
*           節(jié)點(diǎn)(tarObj)中
* 返 回 值:new Error() - 運(yùn)行錯(cuò)誤時(shí)返回一個(gè)報(bào)錯(cuò)信息
* 使用方法:var myAjax = ajaxUpdater(msgBox,"get",URL,para);
================================== */
function ajaxUpdater(tarObj,sMethod,URL,parameters){
    var oXmlHttp = createXMLHTTPRequest();
          
    oXmlHttp.open(sMethod, URL+parameters, true);
    oXmlHttp.onreadystatechange = function () {
        if (oXmlHttp.readyState == 4) {
             if (oXmlHttp.status == 200) {
                  if($(tarObj)){
                       $(tarObj).innerHTML = oXmlHttp.responseText;
                  }
                  else{
                       return false;   
                  }         
             }
             else {
                  throw new Error("有一個(gè)錯(cuò)誤產(chǎn)生!");
             }
         }   
    }
           
    oXmlHttp.send(null);
}

/* ==================================
* 函數(shù)名稱:ajaxRequest(sMethod,URL,parameters,func)
* 參數(shù)說(shuō)明:sMethod - 數(shù)據(jù)提交方法,兩個(gè)可選值get,post
*           URL - 提交的目標(biāo)URL地址
*           parameters - URL后面接(傳遞)的參數(shù)
*           func - 頁(yè)面成功加載后的處理函數(shù)(指針)
* 函數(shù)功能:當(dāng)異步傳遞的目標(biāo)URL地址成功加載時(shí),指定相應(yīng)的處理函數(shù)
* 返 回 值:func(oXmlHttp) - 返回處理函數(shù)
*           new Error() - 運(yùn)行錯(cuò)誤時(shí)返回一個(gè)報(bào)錯(cuò)信息
* 使用方法:var myAjax = ajaxUpdater("get",URL,para,showMsg);
================================== */
function ajaxRequest(sMethod,URL,parameters,func){
    var oXmlHttp = createXMLHTTPRequest();
          
    oXmlHttp.open(sMethod, URL+parameters, true);
    oXmlHttp.onreadystatechange = function() {
         if (oXmlHttp.readyState == 4) {
              if (oXmlHttp.status == 200) {
                    return func(oXmlHttp);    
              }
              else {
                    throw new Error("有一個(gè)錯(cuò)誤產(chǎn)生!");
              }
         }   
    }
           
    oXmlHttp.send(null);  
}

/* ==================================
* 函數(shù)名稱:tabsEvent()
* 參數(shù)說(shuō)明:要設(shè)置事件的DOM節(jié)點(diǎn)ID
* 函數(shù)功能:為導(dǎo)航TAB菜單(li)設(shè)置onclick處理方法(函數(shù)),
*           屏蔽掉a標(biāo)簽?zāi)J(rèn)的處理(打開(kāi)新鏈接)事件
* 返 回 值:false - 屏蔽掉a標(biāo)簽?zāi)J(rèn)的處理(打開(kāi)新鏈接)事件
* 使用方法:tabsEvent("news","sports");
================================== */
function tabsEvent(){
      for(var i=0;i<arguments.length;i++){
         var tabs = $(arguments[i]);
         // DOM節(jié)點(diǎn)(tabs)不存在或者瀏覽器不支持getElementsByTagName()方法
         // 函數(shù)不執(zhí)行
           if(!tabs || !document.getElementsByTagName) return false;
              
           var theList = tabs.getElementsByTagName("li"); // 搜尋導(dǎo)航標(biāo)簽(ID為tabs)里的所有l(wèi)i標(biāo)簽
           var theLink = tabs.getElementsByTagName("a");  // 搜尋導(dǎo)航標(biāo)簽(ID為tabs)里的所有a標(biāo)簽
              
           for(var j=0;j<theList.length;j++){
                 var theTab = theList[j];
                 if(theTab.parentNode!=tabs) continue;
                    
                 var theA = theLink[j];
                 // 屏蔽掉a標(biāo)簽?zāi)J(rèn)的處理(打開(kāi)新鏈接)事件
                 theA.onclick = function(){
                     return false;   
                 }
                
                 // 為導(dǎo)航TAB菜單(li)設(shè)置onclick處理方法(函數(shù))   
                 theTab.onclick = function(){
                  var theClass = this.className;
                  if(theClass!="current" && theClass!="first"){
                            var objId = this.getAttribute("id").split("-")[1]; // 當(dāng)前選中標(biāo)簽(li)在菜單(ul)中的索引值
                            var tarObj = this.getAttribute("id").split("-")[0]; // 要顯示信息的目標(biāo)DOM節(jié)點(diǎn)ID值
                       var theURL = tarObj + "/" + tarObj + objId + ".htm"; // 要異步加載的URL地址
                         ajaxInject($(tarObj),objId,tarObj,theURL);   
                         return false;
                     }
               }
           }
      }     
}

/* ==================================
* 函數(shù)名稱:ajaxInject(ListName,tabId,tarObj,URL)
* 參數(shù)說(shuō)明:ListName - 標(biāo)簽菜單DOM節(jié)點(diǎn)ID
*           tabId - 選中的標(biāo)簽(在ListName中的)索引值
*           tarObj - 要顯示返回信息的目標(biāo)DOM節(jié)點(diǎn)ID值
*           URL - 要異步處理的URL地址
* 函數(shù)功能:設(shè)置當(dāng)前選中標(biāo)簽(li)的樣式,
*           將返回信息寫(xiě)到指定DOM節(jié)點(diǎn)中。
* 返 回 值:無(wú)
* 使用方法:tabsEvent("news","sports");
================================== */
function ajaxInject(ListName,tabId,tarObj,URL){
    if(!ListName || !document.getElementsByTagName) return false;
      var Tabs = ListName;
      var theLi = Tabs.getElementsByTagName("li");
      for(var i=0;i<theLi.length;i++){
            // 設(shè)置當(dāng)前選中標(biāo)簽的樣式
          if(i==tabId){
                if(i==0){
                     theLi[tabId].className = "first"; // 當(dāng)選中第一項(xiàng)的樣式
                }
                else{//
                     theLi[tabId].className = "current"; // 選中其他項(xiàng)的樣式
                }    
                var msgBox = tarObj+"Cnt";
                var loadstatustext="<div class='loading'><img src='img/loading.gif' alt='正在加載內(nèi)容, 請(qǐng)稍候...' />正在加載內(nèi)容, 請(qǐng)稍候...</div>";     
              $(msgBox).innerHTML = loadstatustext; // 加載信息時(shí)的提示信息
              var para = "?d=" + Math.random(); // URL后的參數(shù),接Math.random()(一個(gè)隨機(jī)數(shù)),目的是處理ajax的緩存問(wèn)題
              var myAjax = ajaxUpdater(msgBox,"get",URL,para);
          }
          else{// 設(shè)置其他標(biāo)簽的樣式
              theLi[i].className = "";
              if(tabId!=0){
                    theLi[tabId-1].className = "off"; // 當(dāng)不是第一項(xiàng)時(shí),隱藏選中項(xiàng)的前一項(xiàng)的分隔標(biāo)簽
                 } 
          }   
      }
}       
//-->

inde.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<html xmlns="<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>AjaxTab導(dǎo)航</title>
<link href="css/ajaxtab.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript" src="js/ajaxtab.js"></script>
</head>
<body>
<div class="clearfix cotainer">
     <ul class="tabs" id="news">
         <li class="first" id="news-0"><a href="news/news0.htm">網(wǎng)站重構(gòu)</a><span></span></li>
         <li id="news-1"><a href="news/news1.htm">CSS布局實(shí)錄</a><span></span></li>
         <li id="news-2"><a href="news/news2.htm">海嘯的地盤(pán)</a><span></span></li>
         <li id="news-3"><a href="news/news3.htm">Ajax高級(jí)編程</a><span></span></li>
       </ul><br class="clear" />
       <div class="clearfix cnt" id="newsCnt">
          <img src="img/girl-1.jpg" alt="林志琳" />
            <ul>
              <li><a href="#">PRG全棉短袖襯衣最后的搶購(gòu)機(jī)搶購(gòu)機(jī)</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖襯衣最后的搶購(gòu)機(jī)搶購(gòu)機(jī)</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖襯衣最后的搶購(gòu)機(jī)搶購(gòu)機(jī)</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖襯衣最后的搶購(gòu)機(jī)搶購(gòu)機(jī)</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖襯衣最后的搶購(gòu)機(jī)搶購(gòu)機(jī)</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖襯衣最后的搶購(gòu)機(jī)搶購(gòu)機(jī)</a> 2006-08-15</li>
            </ul>
     </div>
</div>
<div class="clearfix cotainer">
     <ul class="tabs" id="sports">
         <li class="first" id="sports-0"><a href="sports/sports0.htm">網(wǎng)站重構(gòu)</a><span></span></li>
         <li id="sports-1"><a href="sports/sports1.htm">CSS布局實(shí)錄</a><span></span></li>
         <li id="sports-2"><a href="sports/sports2.htm">海嘯的地盤(pán)</a><span></span></li>
         <li id="sports-3"><a href="sports/sports3.htm">Ajax高級(jí)編程</a><span></span></li>
     </ul><br class="clear" />
     <div class="clearfix cnt" id="sportsCnt">
          <img src="img/girl-5.jpg" alt="林志琳" />
          <ul>
              <li><a href="#">PRG全棉短袖襯衣最后的搶購(gòu)機(jī)搶購(gòu)機(jī)</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖襯衣最后的搶購(gòu)機(jī)搶購(gòu)機(jī)</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖襯衣最后的搶購(gòu)機(jī)搶購(gòu)機(jī)</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖襯衣最后的搶購(gòu)機(jī)搶購(gòu)機(jī)</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖襯衣最后的搶購(gòu)機(jī)搶購(gòu)機(jī)</a> 2006-08-15</li>
              <li><a href="#">PRG全棉短袖襯衣最后的搶購(gòu)機(jī)搶購(gòu)機(jī)</a> 2006-08-15</li>
          </ul>
     </div>
</div>
<script language="javascript" type="text/javascript">
<!--
tabsEvent("news","sports");
//-->
</script>
</body>
</html>

ajaxtab.css

<!--
*{
   margin:0;
   padding:0;
}

body{
   text-align:center;
   background-color:#FFF;
   color:#18397C;
   font:normal 12px "宋體", Arial, sans-serif;
}

img{border:0;}

ul,li{list-style-type:none;}

a:link,
a:visited{
   color:#18397C;
   text-decoration:none;
}
a:hover{
   color:#F00;
   text-decoration:underline;
}

div,span,p,li,ul,h1,h2,h3,h4,h5,h6{text-align:left;}

/*clear both*/
.clearfix:after {
   content: ".";
   display:block;
   height:0;
   clear: both;
   visibility: hidden;
}
.clearfix {display: inline-block;}
/* Hides from IE-mac \*/
* html .clearfix {height: 1%;}
*+html .clearfix {height: 1%;}
.clearfix {display: block;}
/* End hide from IE-mac */

.clear{
   clear: both;
   font-size:1px;
   width:1px;
   height:1px;
   visibility: hidden;
}

.cotainer{
   margin:0 auto;
   margin-top:10px;
   width:506px;
   height:auto;
   border:solid #B0BEC7;
   border-width:0 1px 1px 1px;
}

.tabs{
   float:left;
   width:506px;
   height:22px;
   background-image:url(../img/tab_bg.gif);
}

.tabs li{
   float:left;
   display:inline;
   text-align:center;
   width:120px;
   height:12px;
   padding:4px 0 6px 0;
   overflow:hidden;
   letter-spacing:1px;
   position:relative;
}

.tabs li.first{
   background-image:url(../img/tab_active1.gif);
}

.tabs li.current{
   background-image:url(../img/tab_active2.gif);
}

.tabs li.current,
.tabs li.first{
   font-weight:bold;
}

.tabs li.current a,
.tabs li.first a{
   color:#D45417;
}

.tabs li span{
   position:absolute;
   right:0;
   top:3px;
   width:2px;
   height:16px;
   overflow:hidden;
   font-size:1px;
   background-image:url(../img/tab_sline.gif); 
}

.tabs li.first span,
.tabs li.current span,
.tabs li.off span{
   display:none;
}

.cnt{
   margin:0 auto;
   width:496px;
   padding:5px;
   height:auto;
}

.cnt img{
   float:left;
   width:154px;
   height:115px;
   border:1px solid #B0BEC7;
   margin-right:5px;
   display:inline;
}

.cnt ul{
   float:right;
   width:335px;
   height:117px;
}

.cnt ul li{
   float:left;
   width:335px;
   height:12px;
   overflow:hidden;
   color:#999;
   padding:5px 0 2px 0;
}

.loading{
   margin:0 auto;
   width:506px;
   height:16px;
   padding:51px 0 50px 0;
   overflow:hidden;
   text-align:center;
}

.loading img{
   width:16px;
   height:16px;
   border:0;
   float:none;
   vertical-align:middle;
}
-->

出處:藍(lán)色理想
責(zé)任編輯:moby

上一頁(yè) 下一頁(yè) CSS技巧篇

◎進(jìn)入論壇網(wǎng)頁(yè)制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評(píng)論。

相關(guān)文章 更多相關(guān)鏈接
不用組件實(shí)現(xiàn)Ajax效果
用 AjaxTags 簡(jiǎn)化 Ajax 開(kāi)發(fā)
靜態(tài)頁(yè)面分頁(yè)的AJAX實(shí)現(xiàn)
Ajax的小貼士
AJAX通用類:AJAXRequest v0.3
作者文章
XMLHTTPRequest的屬性和方法簡(jiǎn)介
Ajax標(biāo)簽導(dǎo)航效果
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門(mén)搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁(yè)制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大福“敬•自然”設(shè)計(jì)大賽開(kāi)啟
國(guó)際體驗(yàn)設(shè)計(jì)大會(huì)7月將在京舉行
中國(guó)國(guó)防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問(wèn)題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會(huì)
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語(yǔ)言的編碼規(guī)范
如何在illustrator中繪制臺(tái)歷
Ps簡(jiǎn)單繪制一個(gè)可愛(ài)的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡(jiǎn)單的作品展示頁(yè)面
CSS定位機(jī)制之一:普通流
25個(gè)最佳最閃亮的Eclipse開(kāi)發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁(yè) 首頁(yè) 前頁(yè) 后頁(yè) 尾頁(yè) 頁(yè)次:1/5頁(yè) 1個(gè)記錄/頁(yè) 轉(zhuǎn)到 頁(yè) 共5個(gè)記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來(lái)自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來(lái)自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請(qǐng)不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫(huà),設(shè)計(jì)作品,如需使用,請(qǐng)與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請(qǐng)與我們聯(lián)系,我們將立即刪除修改。

您的評(píng)論
用戶名:  口令:
說(shuō)明:輸入正確的用戶名和密碼才能參與評(píng)論。如果您不是本站會(huì)員,你可以注冊(cè) 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請(qǐng)用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評(píng)分 1 2 3 4 5
注意:請(qǐng)不要在評(píng)論中含與內(nèi)容無(wú)關(guān)的廣告鏈接,違者封ID
請(qǐng)您注意:
·不良評(píng)論請(qǐng)用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國(guó)的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評(píng)論管理人員有權(quán)保留或刪除其管轄評(píng)論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評(píng)論文檔 | 報(bào)告錯(cuò)誤  
專業(yè)書(shū)推薦 更多內(nèi)容
網(wǎng)站可用性測(cè)試及優(yōu)化指南
《寫(xiě)給大家看的色彩書(shū)1》
《跟我去香港》
眾妙之門(mén)—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開(kāi)發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開(kāi)發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2