Heim Web-Frontend js-Tutorial So verwenden Sie JavaScript, um das sekundäre Navigationsmenü in WordPress zu implementieren_Javascript-Kenntnisse

So verwenden Sie JavaScript, um das sekundäre Navigationsmenü in WordPress zu implementieren_Javascript-Kenntnisse

May 16, 2016 pm 03:25 PM
javascript wordpress 导航菜单

Navigationsmenü
Das Navigationsmenü ist seit langem „tief in den Herzen der Menschen verwurzelt“ und seine Anwendung in Blogs ist immer wichtiger und vielfältiger geworden. Ab diesem Artikel werde ich verschiedene Themen zum WordPress-Navigationsmenü vorstellen und deren Verwendung besprechen und Verbesserung des Navigationsmenüs in WordPress. Zwischen den Themen besteht eine gewisse Unternehmensbeziehung, und der Schwierigkeitsgrad wird allmählich zunehmen.

20151214144601612.png (266×24)

Im Allgemeinen gibt es in WordPress zwei Arten von Navigationsmenüs: Seitennavigationsmenüs und Kategorienavigationsmenüs.
Haben Sie sich jemals daran erinnert? Das Seitennavigationsmenü besteht aus der Homepage und jeder unabhängigen Seite.
Dies ist die Wirkungsdemonstration
Da das Menü aus einer Homepage und einer Liste unabhängiger Seiten oder einer Homepage und einer Kategorieliste besteht, müssen wir uns mit zwei Links befassen, nämlich den Homepage-Menüpunkten und anderen Menüpunkten.
Darüber hinaus müssen wir auch die drei Zustände der Menüelemente verarbeiten, nämlich den allgemeinen Status, den aktuellen Status des Menüelements (Beispiel: Auf der Startseite ist das Menüelement der Startseite das aktuelle Menüelement) und das ausgewählte Menü Artikelstatus.
Mit anderen Worten, wir müssen uns insgesamt um drei Dinge kümmern:
1. Andere Menüpunkte außerhalb der Homepage
2. Home-Menüelemente
3. Visuelle Effekte, wenn sich Menüelemente in unterschiedlichen Zuständen befinden

Erwartete Struktur:

<div id="menubar">
 <ul class="menus">
 <li class="..."><a href="http://.../">Home</a></li>
 <li class="..."><a href="http://.../">菜单项1</a></li>
 <li class="..."><a href="http://.../">菜单项2</a></li>
 <li class="..."><a href="http://.../">菜单项3</a></li>
 ...
 </ul>
</div>
Nach dem Login kopieren

Seitennavigationsmenü

1. Unabhängige Seitenliste als Menüpunkt
Rufen Sie wp_list_pages auf, um eine Liste unabhängiger Seiten zu erhalten, und verwenden Sie die folgenden Parameter:
Tiefe: Listentiefe (maximale Anzahl von Ebenen). In diesem Artikel wird das Menü der ersten Ebene behandelt, daher beträgt die maximale Tiefe 1
title_li: Titelzeichenfolge, hier nicht benötigt, auf 0 gesetzt
sort_column: Die Sortiermethode der Listenelemente in aufsteigender Reihenfolge entsprechend der beim Erstellen der Seite festgelegten Reihenfolge
Die Anweisung zum Drucken des unabhängigen Seitenmenüelements lautet:

<&#63;php wp_list_pages('depth=1&title_li=0&sort_column=menu_order'); &#63;>
Nach dem Login kopieren

2. Home-Menüelemente
Da die allgemeine Klasse einer unabhängigen Seite page_item ist, ist die Klasse der aktuellen unabhängigen Seite current_page_item. Wenn die Seite die Startseite ist, sollte die Klasse des Startseitenmenüelements current_page_item sein , wir benötigen einen Zweigcode, um die Klasse zu bestimmen:

<&#63;php
 
// 如果是首页, class 是 current_page_item
if (is_home()) {
 $home_menu_class = 'current_page_item';
// 如果不是首页, class 是 page_item
} else {
 $home_menu_class = 'page_item';
}
 
&#63;>
Nach dem Login kopieren

Die Anweisung zum Drucken des Menüelements der Startseite lautet:

<li class="<&#63;php echo($home_menu_class); &#63;>">
 <a title="Home" href="<&#63;php echo get_settings('home'); &#63;>/">Home</a>
</li>
Nach dem Login kopieren
Nach dem Login kopieren

3. Menüstil
Dies ist ein Prozess vom Allgemeinen zum Besonderen. Im Allgemeinen werden die Stile der Menüelemente im Vordergrund und die Stile der aktuellen und ausgewählten Menüelemente im Hintergrund platziert überschrieben und dadurch das Erscheinungsbild verändert

/* 菜单项 */
#menubar ul.menus li {
 float:left; /* 靠左浮动 */
 list-style:none; /* 清空列表风格 */
 margin-right:1px; /* 右侧的间隔 */
}
/* 菜单项链接 */
#menubar ul.menus li a {
 padding:5px 10px; /* 内边距 */
 display:block; /* 显示为块 */
 color:#FFF; /* 文字颜色 */
 background:#67ACE5; /* 背景颜色 */
 text-decoration:none; /* 没有下横线 */
}
/* 当前菜单项链接 */
#menubar ul.menus li.current_page_item a {
 background:#5495CD; /* 背景颜色 */
}
/* 选中菜单项链接 */
#menubar ul.menus li a:hover {
 background:#4281B7; /* 背景颜色 */
}
Nach dem Login kopieren

Kategorie-Navigationsmenü

1. Kategorieliste als Menüpunkt
Rufen Sie die Methode wp_list_categories auf, um die Kategorieliste abzurufen, und verwenden Sie die folgenden Parameter:
Tiefe: Listentiefe (maximale Anzahl von Ebenen). In diesem Artikel wird das Menü der ersten Ebene behandelt, daher beträgt die maximale Tiefe 1
title_li: Titelzeichenfolge, hier nicht benötigt, auf 0 gesetzt
orderby: Die Sortiermethode der Listenelemente in aufsteigender Reihenfolge entsprechend der beim Erstellen der Seite festgelegten Reihenfolge
show_count: Gibt an, ob die Anzahl der Artikel in dieser Kategorie angezeigt werden soll. Es ist nicht erforderlich, sie hier anzuzeigen. Setzen Sie sie auf 0
Die Anweisung zum Drucken von Kategoriemenüelementen lautet:

<&#63;php wp_list_categories('depth=1&title_li=0&orderby=name&show_count=0'); &#63;>
Nach dem Login kopieren

2. Home-Menüelemente
Es ähnelt dem Seitennavigationsmenü, außer dass die Klasse der Menüelemente unterschiedlich ist.
page_item wurde in cat-item
geändert current_page_item wurde in current-cat

geändert

3. Menüstil
Da die Klasse der Menüpunkte etwas anders ist, muss sie auch leicht geändert werden.
current_page_item wurde in current-cat

geändert


Sekundäres Navigationsmenü

20151214144739496.png (460×160)

Wir wissen bereits, wie man ein Menü erstellt. Dieses Mal werden wir eine Kategorieliste verwenden, um ein sekundäres Navigationsmenü zu erstellen. Was wir tun müssen, ist, das sekundäre Menü basierend auf dem ursprünglichen zu ändern und das sekundäre Menü zu verarbeiten . (Bitte stellen Sie sicher, dass die Kategorie Unterkategorien enthält, da sonst das sekundäre Menü nicht aufgerufen werden kann.)
Wir müssen uns insgesamt um drei Dinge kümmern:
1. Rufen Sie das Nebenmenü (Unterkategorie) auf
2. Sekundärer Menüstil
3. Wirkung des sekundären Menüs

Vorhergesagte Struktur

<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://.../">菜单项1</a></li>
  <li class="..."><a href="http://.../">菜单项2</a></li>
  <li class="..."><a href="http://.../">菜单项3</a></li>
  </ul>
 </li>
 <li class="...">
  <a href="http://.../">菜单2</a>
  <ul class="children">
  <li class="..."><a href="http://.../">菜单项4</a></li>
  </ul>
 </li>
 <li class="...">
  <a href="http://.../">菜单3</a>
  <ul class="children">
  <li class="..."><a href="http://.../">菜单项5</a></li>
  <li class="..."><a href="http://.../">菜单项6</a></li>
  </ul>
 </li>
 ...
 </ul>
</div>
Nach dem Login kopieren

Implementieren Sie den Vorgang

1. Rufen Sie das Nebenmenü (Unterkategorie) auf
Erinnern Sie sich noch daran, wie Sie die Tiefe der Liste beim Erstellen des Navigationsmenüs festlegen? Damals wurde die Tiefe auf 1 eingestellt, um Unterkategorien nicht anzuzeigen. Wenn Sie Unterkategorien der zweiten Ebene wünschen, müssen Sie dies natürlich tun Stellen Sie die Tiefe auf 2 ein.
Tiefe: Listentiefe (maximale Anzahl von Ebenen). In diesem Artikel wird das sekundäre Menü behandelt, daher beträgt die maximale Tiefe 2.
Die Anweisung zum Drucken von Kategoriemenüelementen lautet:

<&#63;php wp_list_pages('depth=2&title_li=0&sort_column=menu_order'); &#63;>
Nach dem Login kopieren

2. Sekundärer Menüstil
Es handelt sich lediglich um eine Änderung des ursprünglichen Stils und das Hinzufügen von Stilen für Unterkategorien.

/* 二级菜单 */
#menubar ul.children {
 display:none; /* 初始化页面时不显示出来 */
 padding:0;
 margin:0;
}
/* 二级菜单的菜单项 */
#menubar ul.children li {
 float:none; /* 垂直排列 */
 margin:0;
 padding:0;
}
/* 二级菜单的当前菜单项链接 */
#menubar ul.children li a {
 width:100px; /* 对 IE6 来说十分很重要 */
}
Nach dem Login kopieren

Die Anweisung zum Drucken des Menüelements der Startseite lautet:

<li class="<&#63;php echo($home_menu_class); &#63;>">
 <a title="Home" href="<&#63;php echo get_settings('home'); &#63;>/">Home</a>
</li>
Nach dem Login kopieren
Nach dem Login kopieren

3. 二级菜单的效果
全部使用 JavaScript 实现, 为便于理解, 使用面向对象方式编写代码, 借鉴了部分 Prototype 框架的代码. 因为代码比较多, 不适合逐句解说, 所以我已标上了大量注释. 代码不是很复杂, 有 JS 基础的话应该不会存在障碍.
另外为了迎合个别人的口味, 加上透明效果. Enjoy!

/*
 
Author: mg12
Feature: MenuList with second-level menus
Update: 2008/08/30
Tutorial 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 = {
 
 /**
 * 构造方法
 * id: 菜单列表
 * opacity: 透明度 (0.0 - 1.0, 0.0 为全透明, 1.0 为不透明)
 */
 initialize: function(id, opacity) {
 // 获取菜单列表
 this.obj = document.getElementById(id);
 if (!this.obj) { return; }
 
 // 对菜单列表内的所有菜单进行处理
 var menus = this.obj.childNodes;
 for (var i = 0; i < menus.length; i++) {
  var menu = menus[i];
  if (menu.tagName == 'LI') {
  // 构建菜单
  new Menu(menu, opacity);
  }
 }
 }
}
 
/** 菜单 */
var Menu = Class.create();
Menu.prototype = {
 
 /**
 * 构造方法
 * target: 目标菜单
 * opacity: 透明度 (0.0 - 1.0, 0.0 为全透明, 1.0 为不透明)
 */
 initialize: function(target, opacity) {
 this.util = new MenuUtil();
 
 // 获取目标菜单 (没多余元素)
 this.obj = this.util.cleanWhitespace(target);
 // 定义透明度, 默认为不透明
 this.opacity = opacity || 1;
 
 // 获取菜单
 this.menu = this.obj.childNodes
 
 // 重要! 如果菜单不包含菜单项, 则不进行处理
 if (this.menu.length < 2) { return; }
 
 // 菜单标题和菜单体
 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');
 
 // 添加监听器
 this.addListener(this.obj, 'mouseover', this.util.bind(this, this.activate), false);
 this.addListener(this.obj, 'mouseout', this.util.bind(this, this.deactivate), false);
 },
 
 /**
 * 激活方法
 * 当鼠标移动到菜单标题是激活
 */
 activate: function() {
 // 获取当前菜单体的位置
 var pos = this.util.cumulativeOffset(this.title);
 var left = pos[0];
 var top = pos[1] + this.util.getHeight(this.title);
 
 // 定义激活时样式
 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 + ')');
 },
 
 /**
 * 解除方法
 * 当鼠标移动出菜单标题是激活
 */
 deactivate: function(){
 // 定义解除时样式
 this.util.setStyle(this.body, 'visibility', 'hidden');
 },
 
 /**
 * 监听方法
 * element: 监听对象
 * name: 监听方法
 * observer: 执行的方法
 * useCapture: 浏览器调用事件的方式 (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);
 }
 }
}
 
/** 一些实用的方法 */
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];
 }
}
 
/** 添加到页面加载事件 */
window.onload = function(e) {
 new MenuList('menus', 0.9);
}
Nach dem Login kopieren

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP vs. Flutter: Die beste Wahl für die mobile Entwicklung PHP vs. Flutter: Die beste Wahl für die mobile Entwicklung May 06, 2024 pm 10:45 PM

PHP und Flutter sind beliebte Technologien für die mobile Entwicklung. Flutter zeichnet sich durch plattformübergreifende Funktionen, Leistung und Benutzeroberfläche aus und eignet sich für Anwendungen, die eine hohe Leistung, plattformübergreifende und benutzerdefinierte Benutzeroberfläche erfordern. PHP eignet sich für serverseitige Anwendungen mit geringerer Leistung und nicht plattformübergreifend.

So ändern Sie die Seitenbreite in WordPress So ändern Sie die Seitenbreite in WordPress Apr 16, 2024 am 01:03 AM

Sie können die Breite Ihrer WordPress-Seite ganz einfach ändern, indem Sie Ihre style.css-Datei bearbeiten: Bearbeiten Sie Ihre style.css-Datei und fügen Sie .site-content { max-width: [Ihre bevorzugte Breite] hinzu. Bearbeiten Sie [Ihre bevorzugte Breite], um die Seitenbreite festzulegen. Änderungen speichern und Cache leeren (optional).

So erstellen Sie eine Produktseite in WordPress So erstellen Sie eine Produktseite in WordPress Apr 16, 2024 am 12:39 AM

Erstellen Sie eine Produktseite in WordPress: 1. Erstellen Sie das Produkt (Name, Beschreibung, Bilder); 2. Passen Sie die Seitenvorlage an (fügen Sie Titel, Beschreibung, Bilder, Schaltflächen hinzu). 3. Geben Sie Produktinformationen ein (Lagerbestand, Größe, Gewicht); 4. Variationen erstellen (verschiedene Farben, Größen); 6. Kommentare aktivieren/deaktivieren;

In welchem ​​Ordner liegen WordPress-Artikel? In welchem ​​Ordner liegen WordPress-Artikel? Apr 16, 2024 am 10:29 AM

WordPress-Beiträge werden im Ordner /wp-content/uploads gespeichert. Dieser Ordner verwendet Unterordner, um verschiedene Arten von Uploads zu kategorisieren, einschließlich Artikeln, die nach Jahr, Monat und Artikel-ID geordnet sind. Artikeldateien werden im Nur-Text-Format (.txt) gespeichert und der Dateiname enthält normalerweise seine ID und seinen Titel.

Wo ist die WordPress-Vorlagendatei? Wo ist die WordPress-Vorlagendatei? Apr 16, 2024 am 11:00 AM

WordPress-Vorlagendateien befinden sich im Verzeichnis /wp-content/themes/[Themenname]/. Sie werden verwendet, um das Erscheinungsbild und die Funktionalität der Website zu bestimmen, einschließlich Kopfzeile (header.php), Fußzeile (footer.php), Hauptvorlage (index.php), einzelner Artikel (single.php), Seite (page.php). , Archiv (archive.php), Kategorie (category.php), Tag (tag.php), Suche (search.php) und 404-Fehlerseite (404.php). Durch Bearbeiten und Modifizieren dieser Dateien können Sie das Erscheinungsbild Ihrer WordPress-Website anpassen

So suchen Sie nach Autoren in WordPress So suchen Sie nach Autoren in WordPress Apr 16, 2024 am 01:18 AM

Suchen Sie nach Autoren in WordPress: 1. Sobald Sie sich in Ihrem Admin-Bereich angemeldet haben, navigieren Sie zu „Beiträge“ oder „Seiten“, geben Sie den Namen des Autors über die Suchleiste ein und wählen Sie „Autor“ in den Filtern aus. 2. Weitere Tipps: Verwenden Sie Platzhalter, um Ihre Suche zu erweitern, verwenden Sie Operatoren, um Kriterien zu kombinieren, oder geben Sie Autoren-IDs ein, um nach Artikeln zu suchen.

Welche WordPress-Version ist stabil? Welche WordPress-Version ist stabil? Apr 16, 2024 am 10:54 AM

Die stabilste WordPress-Version ist die neueste Version, da sie die neuesten Sicherheitspatches und Leistungsverbesserungen enthält und neue Funktionen und Verbesserungen einführt. Um auf die neueste Version zu aktualisieren, melden Sie sich bei Ihrem WordPress-Dashboard an, gehen Sie zur Seite „Updates“ und klicken Sie auf „Jetzt aktualisieren“.

Welche Sprache wird zur Entwicklung von WordPress verwendet? Welche Sprache wird zur Entwicklung von WordPress verwendet? Apr 16, 2024 am 12:03 AM

WordPress wird unter Verwendung der PHP-Sprache als Kernprogrammiersprache für die Handhabung von Datenbankinteraktionen, Formularverarbeitung, dynamischer Inhaltsgenerierung und Benutzeranfragen entwickelt. PHP wurde aus Gründen wie plattformübergreifender Kompatibilität, einfacher Erlernbarkeit, aktiver Community sowie umfangreicher Bibliothek und Frameworks ausgewählt. Neben PHP verwendet WordPress auch Sprachen wie HTML, CSS, JavaScript, SQL usw., um seine Funktionalität zu erweitern.

See all articles