国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

以JavaScript來(lái)實(shí)現(xiàn)WordPress中的二級(jí)導(dǎo)航菜單的方法

2024-05-06 16:26:21
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
這篇文章主要介紹了以JavaScript來(lái)實(shí)現(xiàn)WordPress中的二級(jí)導(dǎo)航菜單的方法,文中首先對(duì)WordPress基本的PHP導(dǎo)航菜單的做法給出了說(shuō)明來(lái)作為基礎(chǔ),需要的朋友可以參考下
 

導(dǎo)航菜單
導(dǎo)航菜單早已 "深入民心", 在博客上的應(yīng)用日益重要且多樣. 從本文開(kāi)始, 我將開(kāi)展幾個(gè)關(guān)于 WordPress 導(dǎo)航菜單的話題, 討論如何在 WordPress 上使用和加強(qiáng)導(dǎo)航菜單, 話題間有一定的承接關(guān)系, 難度也會(huì)逐步增加.

以JavaScript來(lái)實(shí)現(xiàn)WordPress中的二級(jí)導(dǎo)航菜單的方法

WordPress 上的導(dǎo)航菜單一般有兩種, 頁(yè)面導(dǎo)航菜單和分類導(dǎo)航菜單.
可曾記得? WordPress 是可以撰寫?yīng)毩㈨?yè)面的, 頁(yè)面導(dǎo)航菜單就是以首頁(yè)和各個(gè)獨(dú)立頁(yè)面組成的菜單. 而分類導(dǎo)航菜單則是以首頁(yè)和各個(gè)分類組成的菜單.
這是效果演示
既然菜單由首頁(yè)和獨(dú)立頁(yè)面列表或首頁(yè)和分類列表所組成, 我們就需要處理兩個(gè)環(huán)節(jié), 即首頁(yè)菜單項(xiàng)和其他菜單項(xiàng).
另外, 我們還需要處理菜單項(xiàng)的三個(gè)狀態(tài), 即一般狀態(tài), 當(dāng)前菜單項(xiàng)狀態(tài) (如: 在首頁(yè)中, 首頁(yè)菜單項(xiàng)就是當(dāng)前菜單項(xiàng)) 和選中菜單項(xiàng)狀態(tài).
也就是說(shuō), 我們共需要處理 3 個(gè)事情:
1. 首頁(yè)外的其他菜單項(xiàng)
2. 首頁(yè)菜單項(xiàng)
3. 菜單項(xiàng)處于不同狀態(tài)時(shí)的視覺(jué)效果

預(yù)想結(jié)構(gòu):

<div id="menubar"> <ul class="menus"> <li class="..."><a href="http://.../">Home</a></li> <li class="..."><a href="http://.../">菜單項(xiàng)1</a></li> <li class="..."><a href="http://.../">菜單項(xiàng)2</a></li> <li class="..."><a href="http://.../">菜單項(xiàng)3</a></li> ... </ul></div>

頁(yè)面導(dǎo)航菜單

1. 獨(dú)立頁(yè)面列表作為菜單項(xiàng)
調(diào)用 wp_list_pages 獲取獨(dú)立頁(yè)面列表, 并使用以下參數(shù):
depth: 列表深度(層的最大數(shù)量), 本文討論的是一級(jí)菜單, 故最大深度為 1
title_li: 標(biāo)題字符串, 這里不需要, 設(shè)為 0
sort_column: 列表項(xiàng)的排序方式, 根據(jù)創(chuàng)建頁(yè)面時(shí)所設(shè)定的 order 進(jìn)行升序排列
打印獨(dú)立頁(yè)面菜單項(xiàng)的語(yǔ)句是:

<?php wp_list_pages('depth=1&title_li=0&sort_column=menu_order'); ?>

2. 首頁(yè)菜單項(xiàng)
由于一般獨(dú)立頁(yè)面的 class 是 page_item, 當(dāng)前獨(dú)立頁(yè)面的 class 是 current_page_item. 當(dāng)頁(yè)面是首頁(yè)時(shí), 首頁(yè)菜單項(xiàng)的 class 應(yīng)該是 current_page_item, 其他情況則是 page_item. 為此, 我們需要一段分支代碼來(lái)為它確定 class:

<?php // 如果是首頁(yè), class 是 current_page_itemif (is_home()) { $home_menu_class = 'current_page_item';// 如果不是首頁(yè), class 是 page_item} else { $home_menu_class = 'page_item';} ?>

打印首頁(yè)菜單項(xiàng)的語(yǔ)句是:

<li class="<?php echo($home_menu_class); ?>"> <a style="margin: 0px; padding: 0px; width: 650px; overflow: hidden;">		
/* 菜單項(xiàng) */#menubar ul.menus li { float:left; /* 靠左浮動(dòng) */ list-style:none; /* 清空列表風(fēng)格 */ margin-right:1px; /* 右側(cè)的間隔 */}/* 菜單項(xiàng)鏈接 */#menubar ul.menus li a { padding:5px 10px; /* 內(nèi)邊距 */ display:block; /* 顯示為塊 */ color:#FFF; /* 文字顏色 */ background:#67ACE5; /* 背景顏色 */ text-decoration:none; /* 沒(méi)有下橫線 */}/* 當(dāng)前菜單項(xiàng)鏈接 */#menubar ul.menus li.current_page_item a { background:#5495CD; /* 背景顏色 */}/* 選中菜單項(xiàng)鏈接 */#menubar ul.menus li a:hover { background:#4281B7; /* 背景顏色 */}

分類導(dǎo)航菜單

1. 分類列表作為菜單項(xiàng)
調(diào)用方法 wp_list_categories 獲取分類列表, 并使用以下參數(shù):
depth: 列表深度(層的最大數(shù)量), 本文討論的是一級(jí)菜單, 故最大深度為 1
title_li: 標(biāo)題字符串, 這里不需要, 設(shè)為 0
orderby: 列表項(xiàng)的排序方式, 根據(jù)創(chuàng)建頁(yè)面時(shí)所設(shè)定的 order 進(jìn)行升序排列
show_count: 是否顯示該分類的文章數(shù)量, 這里不需要顯示, 設(shè)為 0
打印分類菜單項(xiàng)的語(yǔ)句是:

<?php wp_list_categories('depth=1&title_li=0&orderby=name&show_count=0'); ?>

2. 首頁(yè)菜單項(xiàng)
與頁(yè)面導(dǎo)航菜單相似, 只是菜單項(xiàng)的 class 有所不同.
page_item 更改為 cat-item
current_page_item 更改為 current-cat

3. 菜單的樣式
因?yàn)椴藛雾?xiàng)的 class 略有不同, 所以也需稍作修改.
current_page_item 更改為 current-cat


二級(jí)導(dǎo)航菜單

以JavaScript來(lái)實(shí)現(xiàn)WordPress中的二級(jí)導(dǎo)航菜單的方法

我們已經(jīng)知道菜單如何創(chuàng)建了, 這回我們要使用分類列表做成二級(jí)導(dǎo)航菜單. 我們要做的其實(shí)是在原有的基礎(chǔ)上改出二級(jí)菜單, 以及對(duì)二級(jí)菜單進(jìn)行處理. (請(qǐng)確保的的分類中包含子分類, 否則調(diào)不出二級(jí)菜單.)
我們共需要處理 3 個(gè)事情:
1. 調(diào)出二級(jí)菜單 (子分類)
2. 二級(jí)菜單的樣式
3. 二級(jí)菜單的效果

預(yù)想結(jié)構(gòu)

<div id="menubar"> <ul class="menus"> <li class="..."><a href="http://.../">Home</a></li> <li class="...">  <a href="http://.../">菜單1</a>  <ul class="children">  <li class="..."><a href="http://.../">菜單項(xiàng)1</a></li>  <li class="..."><a href="http://.../">菜單項(xiàng)2</a></li>  <li class="..."><a href="http://.../">菜單項(xiàng)3</a></li>  </ul> </li> <li class="...">  <a href="http://.../">菜單2</a>  <ul class="children">  <li class="..."><a href="http://.../">菜單項(xiàng)4</a></li>  </ul> </li> <li class="...">  <a href="http://.../">菜單3</a>  <ul class="children">  <li class="..."><a href="http://.../">菜單項(xiàng)5</a></li>  <li class="..."><a href="http://.../">菜單項(xiàng)6</a></li>  </ul> </li> ... </ul></div>

實(shí)施操作

1. 調(diào)出二級(jí)菜單 (子分類)
是否還記得制作導(dǎo)航菜單時(shí)是如何設(shè)定列表深度的? 當(dāng)時(shí)將深度設(shè)為 1 是為了不顯示子分類, 現(xiàn)在要二級(jí)子分類當(dāng)然要將深度設(shè)為 2 了.
depth: 列表深度(層的最大數(shù)量), 本文討論的是二級(jí)菜單, 故最大深度為 2.
打印分類菜單項(xiàng)的語(yǔ)句是:

<?php wp_list_pages('depth=2&title_li=0&sort_column=menu_order'); ?>

2. 二級(jí)菜單的樣式
也只是在本來(lái)的樣式上進(jìn)行修改, 加上子分類的樣式.

/* 二級(jí)菜單 */#menubar ul.children { display:none; /* 初始化頁(yè)面時(shí)不顯示出來(lái) */ padding:0; margin:0;}/* 二級(jí)菜單的菜單項(xiàng) */#menubar ul.children li { float:none; /* 垂直排列 */ margin:0; padding:0;}/* 二級(jí)菜單的當(dāng)前菜單項(xiàng)鏈接 */#menubar ul.children li a { width:100px; /* 對(duì) IE6 來(lái)說(shuō)十分很重要 */}

打印首頁(yè)菜單項(xiàng)的語(yǔ)句是:

<li class="<?php echo($home_menu_class); ?>"> <a style="margin: 0px; padding: 0px; width: 650px; overflow: hidden;">		
/* Author: mg12Feature: MenuList with second-level menusUpdate: 2008/08/30Tutorial URL: http://www.neoease.com/wordpress-menubar-2/ */ /** 類 */var Class = { create: function() { return function() {  this.initialize.apply(this, arguments); } }} /** 菜單列表 */var MenuList = Class.create();MenuList.prototype = {  /** * 構(gòu)造方法 * id: 菜單列表 * opacity: 透明度 (0.0 - 1.0, 0.0 為全透明, 1.0 為不透明) */ initialize: function(id, opacity) { // 獲取菜單列表 this.obj = document.getElementById(id); if (!this.obj) { return; }  // 對(duì)菜單列表內(nèi)的所有菜單進(jìn)行處理 var menus = this.obj.childNodes; for (var i = 0; i < menus.length; i++) {  var menu = menus[i];  if (menu.tagName == 'LI') {  // 構(gòu)建菜單  new Menu(menu, opacity);  } } }} /** 菜單 */var Menu = Class.create();Menu.prototype = {  /** * 構(gòu)造方法 * target: 目標(biāo)菜單 * opacity: 透明度 (0.0 - 1.0, 0.0 為全透明, 1.0 為不透明) */ initialize: function(target, opacity) { this.util = new MenuUtil();  // 獲取目標(biāo)菜單 (沒(méi)多余元素) this.obj = this.util.cleanWhitespace(target); // 定義透明度, 默認(rèn)為不透明 this.opacity = opacity || 1;  // 獲取菜單 this.menu = this.obj.childNodes  // 重要! 如果菜單不包含菜單項(xiàng), 則不進(jìn)行處理 if (this.menu.length < 2) { return; }  // 菜單標(biāo)題和菜單體 this.title = this.menu[0]; this.body = this.menu[1];   // 定義初始樣式 this.util.setStyle(this.body, 'visibility', 'hidden'); this.util.setStyle(this.body, 'position', 'absolute'); this.util.setStyle(this.body, 'overflow', 'hidden'); this.util.setStyle(this.body, 'display', 'block');  // 添加監(jiān)聽(tīng)器 this.addListener(this.obj, 'mouseover', this.util.bind(this, this.activate), false); this.addListener(this.obj, 'mouseout', this.util.bind(this, this.deactivate), false); },  /** * 激活方法 * 當(dāng)鼠標(biāo)移動(dòng)到菜單標(biāo)題是激活 */ activate: function() { // 獲取當(dāng)前菜單體的位置 var pos = this.util.cumulativeOffset(this.title); var left = pos[0]; var top = pos[1] + this.util.getHeight(this.title);  // 定義激活時(shí)樣式 this.util.setStyle(this.body, 'left', left + 'px'); this.util.setStyle(this.body, 'top', top + 'px'); this.util.setStyle(this.body, 'visibility', 'visible'); this.util.setStyle(this.body, 'opacity', this.opacity); this.util.setStyle(this.body, 'filter', 'alpha(opacity=' + this.opacity * 100 + ')'); },  /** * 解除方法 * 當(dāng)鼠標(biāo)移動(dòng)出菜單標(biāo)題是激活 */ deactivate: function(){ // 定義解除時(shí)樣式 this.util.setStyle(this.body, 'visibility', 'hidden'); },  /** * 監(jiān)聽(tīng)方法 * element: 監(jiān)聽(tīng)對(duì)象 * name: 監(jiān)聽(tīng)方法 * observer: 執(zhí)行的方法 * useCapture: 瀏覽器調(diào)用事件的方式 (true 為 Capture 方式, false 為 Bubbling 方式) */ addListener: function(element, name, observer, useCapture) { if(element.addEventListener) {  element.addEventListener(name, observer, useCapture); } else if(element.attachEvent) {  element.attachEvent('on' + name, observer); } }} /** 一些實(shí)用的方法 */var MenuUtil = Class.create();MenuUtil.prototype = { initialize: function() { },  $: function(id) { return document.getElementById(id); },  $A: function(iterable) { if(!iterable) {  return []; } if(iterable.toArray) {  return iterable.toArray(); } else {  var results = [];  for(var i = 0; i < iterable.length; i++) {  results.push(iterable[i]);  }  return results; } },  bind: function() { var array = this.$A(arguments); var func = array[array.length - 1]; var _method = func, args = array, object = args.shift(); return function() {  return _method.apply(object, args.concat(array)); } },  getHeight: function(element) { return element.offsetHeight; },  setStyle: function(element, key, value) { element.style[key] = value; },  getStyle: function(element, key) { return element.style[key]; },  cleanWhitespace: function(list) { var node = list.firstChild; while (node) {  var nextNode = node.nextSibling;  if(node.nodeType == 3 && !//S/.test(node.nodeValue)) {  list.removeChild(node);  }  node = nextNode; } return list; },  cumulativeOffset: function(element) { var valueT = 0, valueL = 0; do {  valueT += element.offsetTop || 0;  valueL += element.offsetLeft || 0;  element = element.offsetParent; } while (element); return [valueL, valueT]; }} /** 添加到頁(yè)面加載事件 */window.onload = function(e) { new MenuList('menus', 0.9);}


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产网站观看9久| 久热精品免费视频| 国产免费视频| 国产永久免费高清在线观看视频| 日本免费视频www| 九九视频九九热| 二区三区中文字幕| 国产视频中文字幕| 精品999视频| www久久日com| 天堂资源中文在线| 91在线网址| v天堂福利视频在线观看| 国产在线观看91| 国产精品久久在线| 亚洲综合在线不卡| 秋霞av在线| 国产导航在线| 狠狠干五月天| 尤物视频在线观看视频| 成年人在线观看| 亚洲精品自拍区在线观看| 中文字幕网在线| 亚洲精品手机在线| 天天操天天操一操| 欧美韩日国产| 永久免费不卡在线观看黄网站 | 最新中文字幕av专区| 精品美女在线观看视频在线观看| 波多野结衣久久高清免费| 69精品视频| 91av福利| 国产精品外围在线观看| 国产精品视频h| 性欧美精品xxxx| 国产高清视频在线| 国产免费一级片| 四虎精品视频| 黄污在线观看| 精品久久av| 国产区成人精品视频| 在线国产91| 国产成免费视频| 国产精品99爱免费视频| 最新超碰在线| 91九色在线看| 亚洲视频在线网| 在线观看免费观看在线91| 精品电影在线| 一本大道久久a久久精品| gogo在线观看| 国产你懂的在线观看| 国产精品视频流白浆免费视频| 国产高清大尺度一区二区不卡| 91在线最新| www.eeuss影院| 欧美性xxxx交| 国产一级片网站| 在线天堂视频| 九九热视频免费在线观看| 久草在线资源福利| 国产视频资源| 亚洲精品aaaa| 最近最好的中文字幕2019免费 | 国产人成高清视频观看| 国产精品白浆视频免费观看| 国产福利电影在线| www亚洲天堂| 国产小视频在线观看| 国产午夜在线视频| 精品视频在线一区二区| 免费影视观看网站入口| 国产精品福利视频一区二区三区| 亚洲电影视频在线| 国产亚洲精品自在线观看| 影音先锋日韩| 国产私人影院| 成在线人视频免费视频| 一色桃子av在线| 国产馆av播放| 国产天堂在线| 激情亚洲综合网| 亚洲天堂久久久| 国产亚洲精品午夜高清影院| gogogogo高清视频在线| 国产女主播在线观看| 国产在线视频精品视频免费看| 2020中文字幕在线播放| 国产精品一区二区三区高清在线 | 中文字幕av免费| 国产不卡一卡2卡三卡4卡5卡在线| 交换国产精品视频一区| av在线1区2区| 在线免费观看黄色片| 国产天堂在线| 国产午夜视频在线观看| www在线观看播放免费视频日本| 99综合精品久久| 影音av资源站| av中文字幕在线看| 牛牛热在线视频| 欧美亚洲系列| 黄网站在线观看高清免费| 久热免费在线视频| 国产嫩草在线视频| 国产天堂av| 国产成人精品18| 四虎成人精品在永久在线观看| 日韩黄色成人| 福利在线观看| 国产精品入口麻豆完整版| 国产视频在线播放| 国产视频资源| 精品卡1卡2卡三卡免费网站| 亚洲视频在线网| 久久国产热视频| 国产区成人精品视频| 精品美女在线观看视频在线观看 | 国产小视频免费在线观看| 国产精品国精产品一二| 在线视频中文字幕久| 一级二级在线观看| 国产美女高潮| 国产一区二区三区福利| 在线天堂视频| 国产免费福利| 国产高清视频在线播放| 四虎精品成人a在线观看| 高清色视频在线观看| 97人人在线| 国产精品一区二区三区视频网站| 精品一区二区三区高清免费不卡| www.xxx黄| 在线a人片免费观看视频| 黄色激情网址| 在线观看免费黄色| 国产小视频免费在线网址| www.三级.com| 国产一区二区三区四区尤物| 中文av资源在线| 国产素人视频在线观看| 人日人天天爽| 一本久久精品| 国产成免费视频| 国产一级片网站| 超碰在线人人| 波多野结衣久久高清免费| 永久免费在线观看| 国产极品视频| **三级三级97片毛片| 黄色av网址在线免费观看| 精品美女视频在线观看免费软件| 国产麻豆精品高清在线播放| 国产不卡精品一区二区三区| 国产精品自拍在线观看| 毛片网站在线观看| jizz在线免费观看| 日本在线观看| 日韩不卡高清| gogo在线高清视频| h网站久久久| 精品中文字幕不卡在线视频| 交换国产精品视频一区| 美女网站在线观看| 免费在线看v| 老司机在线视频二区| 美女被人操视频在线观看| 美女国产在线| 人成在线免费视频| 久草在线视频网| 尤物网在线观看| 国产精品被窝福利一区| 国产黄色片中文字幕| 国产精品99爱免费视频| 2019年中文字幕| 四虎久久影院| 成网站在线观看人免费| 国产特级嫩嫩嫩bbb| 国产精品777一区二区| 永久免费av片在线观看全网站| 四虎国产精品永久| 国产美女一区视频| 国产区视频在线| 国产jizz| 九九99九九精彩| 永久免费在线观看| 香蕉视频在线观看网站| 一本大道久久精品| 国产成+人+亚洲+欧美+综合| 中文字幕人成高视频| 精品视频二区三区| 国产二级片在线| 人成在线免费视频| 国产变态拳头交视频一区二区 | 国产福利小视频在线观看| 亚洲男人的天堂成人| www.超级碰| 国产激情三区| 国产在线观看18| 99精品老司机免费视频|