【发布时间】:2020-03-29 05:41:59
【问题描述】:
目标
刷新浏览器后,我希望用户停留在刷新前的菜单/内容中。
问题
刷新浏览器后,用户在刷新之前所在的特定菜单的内容显示为活动的(即显示在屏幕上)。但是,该特定内容的菜单图标未显示为活动状态(即它不显示黑色)。
我正在努力选择当前href 的锚元素(找到图标的位置)(刷新前用户所在的位置,刷新后相同)时间>。
尝试
$(document).ready(function() {
$('a[class^=menu]').click(function() {
$('a[class^=menu]').removeClass('active');
$('div[class^=content]').removeClass('active');
if($(this).hasClass('menu-1')) {
$('.menu-1').addClass('active');
$('.content-1').addClass('active');
}
if($(this).hasClass('menu-2')) {
$('.menu-2').addClass('active');
$('.content-2').addClass('active');
}
if($(this).hasClass('menu-3')) {
$('.menu-3').addClass('active');
$('.content-3').addClass('active');
}
});
if (window.location.hash.substr(1) != '') {
$('a[class^=menu],div[class^=content]').removeClass('active');
// making the content active
$('#' + window.location.hash.substr(1)).addClass('active');
// making the menu active
$('a[href="' + window.location.hash.substr(1) + '"]').addClass("active");
}
});
.container {
margin: 0 auto;
background-color: #eee;
border: 1px solid lightgrey;
width: 20vw;
height: 90vh;
font-family: sans-serif;
position: relative;
}
header {
background-color: lightgreen;
padding: 5px;
text-align: center;
text-transform: uppercase;
}
.bottom-navbar {
position: absolute;
bottom: 0;
width: 100%;
padding: 6px 0;
overflow: hidden;
background-color: lightgreen;
border-top: 1px solid var(--color-grey-dark-3);
z-index: 50;
display: flex;
justify-content: space-between;
}
.bottom-navbar>a {
display: block;
color: green;
text-align: center;
text-decoration: none;
font-size: 20px;
padding: 0 10px;
}
.bottom-navbar>a.active {
color: black;
}
.menu-1.active,
.menu-2.active,
.menu-3.active {
color: black;
}
.content-1,
.content-2,
.content-3 {
display: none;
}
.content-1.active,
.content-2.active,
.content-3.active {
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.min.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<div class="container">
<header>My header</header>
<div class="main-content">
<div class="content-1 active" id="firstPage">House content</div>
<div class="content-2" id="secondPage">Map content</div>
<div class="content-3" id="thirdPage">Explore content</div>
<div class="bottom-navbar">
<a href="mywebsite#firstPage" class="menu-1 active"><i class="fa fa-home"></i></a>
<a href="mywebsite#secondPage" class="menu-2"><i class="fa fa-map"></i></a>
<a href="mywebsite#thirdPage" class="menu-3"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
感谢您的帮助和建议。
【问题讨论】:
-
如果
menu-x和content-x三个类都具有相同的 css 属性,为什么还要它们呢?选择它们会更容易,因为它们只是被称为menu和content。如果您想在 DOM 中专门识别它们,请使用id或name。 -
在本地存储或会话存储中设置值,如果数据不敏感,则在重新加载时使用该值
-
@user6250770 还有,您介意澄清一下“如果数据不敏感”是什么意思吗?
-
jsfiddle.net/Guruprasad_Rao/9kedou2q/1 关注此以了解有关设置和从本地存储获取数据的更多信息
-
敏感数据意味着,如果它不影响您的业务。本地存储就像任何人都可以在任何浏览器的控制台中看到数据一样。
标签: javascript jquery href fragment-identifier location-href