问题描述
导航到其他模块时如何保留导航栏(最小位置)。 Collapsed Navigation Bar
sidebar-collapse
如果导航到其他页面,则不会保留。
解决方法
当您移至其他位置时,是否要让导航栏从大变小?
(对不起,我还不能发表评论)。
,当您移至其他位置时,是否要让导航栏从大变小?如果添加一些代码,总是很好:)
const menuToggle = document.querySelector('.menu-toggle');
const mainUl = document.querySelector(".main-ul");
const navBtn = document.querySelectorAll(".nav-a");
// Open and close meny on click
menuToggle.addEventListener("click",function () {
menuToggle.classList.toggle("open");
mainUl.classList.toggle("open");
});
// Close menu when clicked on an a-tag in the menu
navBtn.forEach((button) => {
button.addEventListener("click",function () {
navBtn.forEach((button) => button.classList.remove("active"));
this.classList.add("active");
mainUl.classList.toggle("open");
menuToggle.classList.toggle("open");
});
});
,
这是我创建的演示和源代码
https://minhhungit.github.io/2020/10/16/011-keep-menu-toggle-state-after-page-reload/
namespace J {
export function storageSet(name,val) {
if (typeof (Storage) !== "undefined") {
localStorage.setItem(name,val);
} else {
//window.alert('Please use a modern browser to properly view this template!');
}
}
export function storageGet(name) {
if (typeof (Storage) !== "undefined") {
return localStorage.getItem(name);
} else {
return null;
}
}
}
在_Layout.cshtml中输入以下代码
<script type="text/javascript">
$().ready(function () {
new DailyTimelog.Common.SidebarSearch($('#SidebarSearch'),$('#SidebarMenu')).init();
// ...
// ...
$(window).bind("load resize layout",doLayout);
doLayout();
});
</script>
// Add these lines
<script type="text/javascript">
let sidebarToggleButton = $('.main-header .sidebar-toggle');
if (sidebarToggleButton) {
$(sidebarToggleButton).on('click',function (e) {
e.preventDefault();
let isSidebarCollapse = $('body').hasClass('sidebar-collapse');
J.storageSet('IS_SIDEBAR_COLLAPSE',!isSidebarCollapse);
});
}
</script>
和LeftNavigation.cshtml
<script type="text/javascript">
function openWindow(url,width,height) {
height = height || (screen.availHeight - 60);
// ...
// ...
}
// Add these lines
let isSidebarCollapseCache = J.storageGet('IS_SIDEBAR_COLLAPSE');
if (isSidebarCollapseCache == 'true') {
$('body').toggleClass('sidebar-collapse',true);
}
else {
$('body').toggleClass('sidebar-collapse',false);
}
</script>
``
,@minhhungit谢谢您的演示。
我使用了类似于ThemePreference的cookie实现。
Views / Shared / _Layout.cshtml
var theme = !themeCookie.IsEmptyOrNull() ? themeCookie : "blue";
// Add following lines
var sbNavCookie = Context.Request.Cookies["SBNavigationPreference"];
var sbNav = !sbNavCookie.IsEmptyOrNull() && sbNavCookie == "true" ? true : false;
在身体标签中,
<body ... class="...@(sbNav?" sidebar-collapse":"")">
在脚本标签中,
<script type="text/javascript">
$().ready(function () {
// Add new lines
let sidebarToggleButton = $('.main-header .sidebar-toggle');
if (sidebarToggleButton) {
$(sidebarToggleButton).on('click',function (e) {
e.preventDefault();
let isSidebarCollapse = $('body').hasClass('sidebar-collapse');
$.cookie('SBNavigationPreference',!isSidebarCollapse,{
path: Q.Config.applicationPath,expires: 365
});
});
}