MediaWiki:Gadget-Navbar.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
(function () {
var style =
/* ================= Top Navbar Base Styles ================= */
'.czn-navbar{position:fixed;top:0;left:0;width:100%;height:70px;display:flex;align-items:center;justify-content:space-between;padding:0 40px;z-index:9999;' +
'background: rgba(255, 255, 255, 0.75);' + // White background with transparency
'backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px);' + // Frosted glass effect
'border-bottom: 1px solid rgba(255, 255, 255, 0.3);' +
'box-shadow: 0 4px 15px rgba(0,0,0,0.05);}' +
/* Flexbox Layout (Left, Center, Right) */
'.czn-nav-left,.czn-nav-right{flex:1;display:flex;align-items:center}' +
'.czn-nav-left{justify-content:flex-start}' +
'.czn-nav-center{display:flex;justify-content:center}' +
'.czn-nav-right{justify-content:flex-end;gap:20px}' +
/* ================= Left Logo Section ================= */
'.czn-logo-group{display:flex;align-items:center}' +
'.czn-logo{height:45px;width:auto;object-fit:contain;display:block}' +
/* ================= Right Search Box ================= */
'.czn-search-box{position:relative}' +
'.czn-search-box input{background:rgba(0,0,0,0.05);border:1px solid rgba(0,0,0,0.1);color:#333;padding:8px 15px;border-radius:20px;width:200px;outline:none;transition:all 0.3s;font-size:14px}' +
'.czn-search-box input::placeholder{color:rgba(0,0,0,0.4)}' +
'.czn-search-box input:focus{border-color:#ff540c;background:rgba(255,255,255,0.8)}' +
'.czn-search-btn{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:#ff540c;color:#fff;border:none;padding:5px 12px;border-radius:16px;cursor:pointer;font-size:12px;font-weight:bold;transition:all 0.3s}' +
'.czn-search-btn:hover{background:#ff6a2a}' +
/* ================= Navigation Menu Styles ================= */
'.czn-nav-menu{display:flex;list-style:none;gap:35px;margin:0;padding:0;height:100%;align-items:center}' +
'.czn-nav-menu li{position:relative;list-style:none}' +
'.czn-nav-menu>li>a{text-decoration:none!important;display:flex;align-items:center;padding:10px 0;transition:all 0.3s}' +
/* Top-level Menu Font (English Only) */
'.czn-en{font-family: "Segoe UI", Roboto, Helvetica, Arial, sans-serif;}' +
'.czn-nav-menu>li>a .czn-en{color:#333;font-size:15px;font-weight:700;text-transform:uppercase;letter-spacing:1px;transition:color 0.3s}' +
/* Hover and Active State Highlighting */
'.czn-nav-menu>li:hover>a .czn-en,.czn-nav-menu>li.czn-active>a .czn-en{color:#ff540c}' +
/* ================= Dropdown Menu Styles (Frosted Glass Effect) ================= */
'.czn-dropdown-2,.czn-dropdown-3{position:absolute;top:100%;left:50%;transform:translateX(-50%) translateY(10px);' +
'background: rgba(255, 255, 255, 0.9);' +
'backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);' +
'border: 1px solid rgba(255, 255, 255, 0.5);' +
'border-radius: 8px; min-width: 170px; padding: 8px 0; opacity: 0; visibility: hidden; transition: all 0.3s ease; ' +
'box-shadow: 0 10px 25px rgba(0,0,0,0.1); list-style: none; margin: 0;}' +
'.czn-dropdown-3{top:0;left:100%;transform:translateX(10px) translateY(0)}' +
'.czn-nav-menu li:hover>.czn-dropdown-2{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}' +
'.czn-dropdown-2 li:hover>.czn-dropdown-3{opacity:1;visibility:visible;transform:translateX(0) translateY(0)}' +
/* Dropdown Item Styles */
'.czn-dropdown-2 li a,.czn-dropdown-3 li a{padding:10px 20px;text-align:left;display:block;text-decoration:none!important;transition:all 0.2s}' +
'.czn-dropdown-2 .czn-en,.czn-dropdown-3 .czn-en{color:#555;font-size:13px;font-weight:600;display:block}' +
'.czn-dropdown-2 li:hover{background:rgba(255,84,12,0.08)}' +
'.czn-dropdown-2 li:hover>a .czn-en,.czn-dropdown-3 li:hover>a .czn-en{color:#ff540c}' +
/* ================= Responsive Layout (Mobile) ================= */
'.czn-menu-toggle{display:none;color:#333;font-size:28px;cursor:pointer;background:none;border:none;line-height:1}' +
'@media(max-width:900px){' +
'.czn-navbar{padding:0 20px}' +
'.czn-logo-group{margin-left:10px}' +
'.czn-search-box{display:none}' +
'.czn-menu-toggle{display:block}' +
'.czn-nav-menu{position:fixed;top:0;left:-100%;width:260px;height:100vh;background:rgba(255,255,255,0.98);flex-direction:column;gap:0;padding-top:80px;transition:left 0.4s;overflow-y:auto;z-index:10000;box-shadow: 5px 0 15px rgba(0,0,0,0.1);}' +
'.czn-nav-menu.czn-active{left:0}' +
'.czn-nav-menu li{width:100%}' +
'.czn-nav-menu>li>a{padding:15px 25px;border-bottom:1px solid rgba(0,0,0,0.05);justify-content:flex-start}' +
'.czn-dropdown-2,.czn-dropdown-3{position:static;transform:none!important;opacity:1;visibility:visible;box-shadow:none;background:transparent;padding:0;width:100%}' +
'.czn-dropdown-2 li a{padding-left:40px}' +
'.czn-dropdown-3 li a{padding-left:60px}' +
'.czn-dropdown-3{display:none}' +
'.czn-dropdown-3.czn-open{display:block}' +
'}';
var wikiBase = 'https://cznwiki.com/';
// Helper function to build wiki URLs
function wikiUrl(title) {
return wikiBase + title;
}
var navHtml =
'<nav class="czn-navbar">' +
/* Left: Mobile Toggle + Single Logo */
'<div class="czn-nav-left">' +
'<button class="czn-menu-toggle" id="czn-mobile-menu-btn">☰</button>' +
'<div class="czn-logo-group">' +
'<a href="' + wikiUrl('Main_Page') + '">' +
'<img src="https://cznwiki.com/images/c/c9/Logo.png" alt="LOGO" class="czn-logo">' +
'</a>' +
'</div>' +
'</div>' +
/* Center: Navigation Menu (English Only) */
'<div class="czn-nav-center">' +
'<ul class="czn-nav-menu" id="czn-nav-menu">' +
/* HOME Section */
'<li>' +
'<a href="' + wikiUrl('Main_Page') + '"><span class="czn-en">HOME</span></a>' +
'<ul class="czn-dropdown-2">' +
'<li><a href="' + wikiUrl('Main_Page') + '"><span class="czn-en">BACK</span></a></li>' +
'<li><a href="https://cznwiki.com/index.php?title=%E9%A6%96%E9%A1%B5&action=purge"><span class="czn-en">REFRESH</span></a></li>' +
'</ul>' +
'</li>' +
/* WIKI Section */
'<li>' +
'<a href="#"><span class="czn-en">WIKI</span></a>' +
'<ul class="czn-dropdown-2">' +
'<li><a href="' + wikiUrl('Combatant') + '"><span class="czn-en">Combatant</span></a></li>' +
'<li><a href="' + wikiUrl('Partner') + '"><span class="czn-en">Partner</span></a></li>' +
'<li><a href="' + wikiUrl('Card') + '"><span class="czn-en">Card</span></a></li>' +
'<li><a href="' + wikiUrl('Relic') + '"><span class="czn-en">Relic</span></a></li>' +
'<li><a href="' + wikiUrl('Encounter') + '"><span class="czn-en">Encounter</span></a></li>' +
'</ul>' +
'</li>' +
/* DATA Section */
'<li>' +
'<a href="#"><span class="czn-en">DATA</span></a>' +
'<ul class="czn-dropdown-2">' +
'<li><a href="' + wikiUrl('Item') + '"><span class="czn-en">Item</span></a></li>' +
'<li class="czn-has-level-3">' +
'<a href="#" class="czn-l3-toggle"><span class="czn-en">Art</span></a>' +
'<ul class="czn-dropdown-3">' +
'<li><a href="' + wikiUrl('Official_Media') + '"><span class="czn-en">Official Media</span></a></li>' +
'<li><a href="' + wikiUrl('Fanart') + '"><span class="czn-en">Fanart</span></a></li>' +
'</ul>' +
'</li>' +
'</ul>' +
'</li>' +
/* TOOLS Section */
'<li>' +
'<a href="' + wikiUrl('Deck_Builder') + '"><span class="czn-en">TOOLS</span></a>' +
'<ul class="czn-dropdown-2">' +
'<li><a href="' + wikiUrl('Deck_Builder') + '"><span class="czn-en">Deck Builder</span></a></li>' +
'</ul>' +
'</li>' +
'</ul>' +
'</div>' +
/* Right: Search Box */
'<div class="czn-nav-right">' +
'<div class="czn-search-box">' +
'<form action="https://cznwiki.com/index.php" method="get">' +
'<input type="hidden" name="title" value="Special:Search">' +
'<input type="text" name="search" placeholder="Search Wiki...">' +
'<button type="submit" class="czn-search-btn">GO</button>' +
'</form>' +
'</div>' +
'</div>' +
'</nav>';
function q(s) { return document.querySelector(s); }
// Initialization Function
var initNav = function () {
if (q('.czn-navbar')) return;
/* Inject Styles into Head */
var styleTag = document.createElement('style');
styleTag.type = 'text/css';
styleTag.appendChild(document.createTextNode(style));
document.head.appendChild(styleTag);
/* Inject Navbar HTML into Body */
document.body.insertAdjacentHTML('afterbegin', navHtml);
/* Mobile Sidebar Toggle Logic */
var mobileBtn = document.getElementById('czn-mobile-menu-btn');
var navMenu = document.getElementById('czn-nav-menu');
if (mobileBtn && navMenu) {
mobileBtn.addEventListener('click', function () {
var isActive = navMenu.classList.toggle('czn-active');
mobileBtn.innerHTML = isActive ? '✕' : '☰';
});
// Close menu when clicking outside
document.addEventListener('click', function(e) {
if (navMenu.classList.contains('czn-active') && !navMenu.contains(e.target) && !mobileBtn.contains(e.target)) {
navMenu.classList.remove('czn-active');
mobileBtn.innerHTML = '☰';
}
});
}
/* Mobile Sub-menu (Level 3) Expand Logic */
var level3Toggles = document.querySelectorAll('.czn-l3-toggle');
level3Toggles.forEach(function (toggle) {
toggle.addEventListener('click', function (e) {
if (window.innerWidth <= 900) {
e.preventDefault();
var subMenu = this.nextElementSibling;
if (subMenu) subMenu.classList.toggle('czn-open');
}
});
});
};
// Run Initialization when ready
if (document.readyState === 'complete' || document.readyState === 'interactive') {
initNav();
} else {
document.addEventListener('DOMContentLoaded', initNav);
}
})();