我有一个侧边栏,当单击汉堡包时会弹出(提供的 CodePen 不适用于此功能,但它对我想要实现的目标并不重要,它适用于我的项目)。
我遇到的问题是我的网站遵循黑白主题,如果跨度元素位于黑暗部分,我希望它们将颜色更改为白色。我已经看过几个 CodePens,但它们仅用于向下滚动一次,而不是多次更改,因为我有不止一个黑暗部分。
我想我可能不得不将它合并到我现有的 JS 中,或者我会更有效地创建一个新函数?我不确定如何在深色元素上选择跨度并更改其背景颜色,我想我需要为这些元素创建新的类,例如“深色”或“浅色”,但我正在为如何组合而苦苦挣扎功能。
在我的脑海中,我将其读作“如果部分类 = 暗,则跨度 bg 颜色应 = 白色,否则部分类 = 浅,则跨度 bg 应 = 黑色”。
我希望这是有道理的,我正在尝试学习 JS,所以这可能是一个非常简单的解决方案。我了解我要实现的目标,总体布局仍然对编写函数没有信心,但要掌握它!
<div id="sidebar">
<div class="content">
<div class="toggle-btn" onclick="toggleSidebar()">
<div class="nav" id="navBar">
<div id="navBtn">
<span></span>
<span></span>
<span></span>
</div>
</div>
</div>
<ul>
<li><a href="#about">
<p class="scrollto-aboutus animated fadeInUp">Home</p>
</a></li>
<li><a href="#overview">
<p class="scrollto-overview animated fadeInUp">text</p>
</a></li>
</ul>
<div class="row">
<p>Text</p>
</div>
</div>
</div>
</div>
</nav>
<section class="section-black new-section dark"></section>
<section class="section-white new-section light"></section>
CSS
.nav {
width: 80px;
background-color: transparent;
top: 0;
z-index: 2000;
}
#navBtn {
width: 50px;
height: 40px;
position: relative;
margin: 15px auto;
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transition: .5s ease-in-out;
-moz-transition: .5s ease-in-out;
-o-transition: .5s ease-in-out;
transition: .5s ease-in-out;
cursor: pointer;
}
#navBtn span {
display: block;
position: absolute;
height: 5px;
width: 100%;
background: #000;
border-radius: 9px;
opacity: 1;
left: 0;
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transition: .25s ease-in-out;
-moz-transition: .25s ease-in-out;
-o-transition: .25s ease-in-out;
transition: .25s ease-in-out;
}
#navBtn span:nth-child(1) {
top: 0px;
-webkit-transform-origin: left center;
-moz-transform-origin: left center;
-o-transform-origin: left center;
transform-origin: left center;
}
#navBtn span:nth-child(2) {
top: 15px;
-webkit-transform-origin: left center;
-moz-transform-origin: left center;
-o-transform-origin: left center;
transform-origin: left center;
}
#navBtn span:nth-child(3) {
top: 30px;
-webkit-transform-origin: left center;
-moz-transform-origin: left center;
-o-transform-origin: left center;
transform-origin: left center;
}
/* --- nav after */
#sidebar {
position: fixed;
width: 300px;
height: 100vh;
background: #000;
left: -300px;
transition: 0.4s;
z-index: 1;
}
#sidebar.active {
left: 0;
z-index: 1;
}
#sidebar a {
list-style: none;
color: #fff;
font-size: 100%;
text-decoration: none;
color: #fff;
}
#sidebar p {
padding: 20px;
font-size: 20px;
text-transform: uppercase;
}
#sidebar .toggle-btn {
position: absolute;
left: 300px;
}
.section-black {
height: 100vh;
width: 100vw;
background-color: black;
}
.section-white {
height: 100vh;
width: 100vw;
background-color: white;
}
JS
function toggleSidebar() {
document.getElementById('sidebar').classList.toggle('active');
var sections = document.querySelectorAll('.new-section'),
i;
for (i = 0; i < sections.length; ++i) {
sections[i].classList.toggle('new_section--active');
}
};
$(document).ready(function(){
$('#navBtn').click(function(){
$(this).toggleClass('open');
});
});
这是一个非常糟糕的 CodePen 示例:https ://codepen.io/caitlinmooneyx/pen/oOPGQQ