* {
box-sizing: border-box;
}
body {
font-family: Roboto, Arial, Helvetica, sans-serif;
background-color: #fffc2e;
}
#first_screen {
text-align: center;
padding: 10%;
color: black;
font-size: 50px;
height: 100vh;
}
/*Navigation Button*/
#tutorialnav {
z-index: 1;
height:100%;
width: 0;
position: fixed;
background-color: #111;
top: 0;
left: 0;
overflow-x: hidden;
transition: 0.2s;
padding-top: 80px;
filter: drop-shadow(5px 0px 1px black);
}
#tutorialnav a {
text-decoration: none;
display: block;
transition: 0s;
color: white;
white-space: nowrap;
}
.majornav {
padding: 8px 8px 8px 32px;
font-size: 25px;
}
.minornav {
padding: 4px 8px 4px 64px;
font-size: 16px;
}
#tutorialnav a:hover {
color: yellow;
}
#navbtn {
color: black;
position: sticky;
z-index: 2;
font-size: 36px;
cursor: pointer;
top: 10px;
left: 20px;
transition: 0.7s;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.noselect {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
/*End Navigation Button*/
<!DOCTYPE html>
<html>
<title>3D Graphics Tutorial Homepage</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="UTF-8">
<meta name="description" content="3d Graphics Web Tutorials [Homepage]">
<meta name="author" content="Harsha Boyilla">
<meta name="keywords" content="3D, 3d, 3d graphics, 3D graphics, graphics, tutorial">
<link rel="stylesheet" href="styles.css">
<body>
<!-- Navigation Menu -->
<div id="navigationmenu" class="noselect">
<button id="navbtn">☰</button>
<nav id="tutorialnav">
<a href="temp" class="majornav">Part 1</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 2</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 3</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 4</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
</nav>
</div>
<script type="text/javascript">
var navIsOpen = false;
window.onload = function()
{
document.getElementById("navbtn").onclick = function()
{
if(!navIsOpen)
{
document.getElementById("tutorialnav").style.width = "250px";
document.getElementById("navbtn").style.color = "white";
navIsOpen = true;
}
else if(navIsOpen)
{
document.getElementById("tutorialnav").style.width = "0px"
document.getElementById("navbtn").style.color = "black";
navIsOpen = false;
}
return false;
}
}
</script>
<article id="first_screen">
<p>Welcome to my website!</p>
<p>Placeholder text is placeholder text</p>
</article>
</body>
</html>
在我创建的一个网站上,我有一个侧边栏,作为网站的导航菜单。左上角有一个按钮,用于打开和关闭滚动条。如果侧边栏的项目太多,则会出现一个滚动条,以便在侧边栏中滚动。我遇到的问题是,打开和关闭的按钮不会随着侧边栏滚动,而是在我滚动主页时滚动。有办法解决这个问题吗?这是我迄今为止拥有的HTML和JavaScript。
<div id="navigationmenu" class="noselect">
<button id="navbtn" onclick="openNav()">☰</button>
<nav id="tutorialnav">
<a href="temp" class="majornav">Part 1</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 2</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 3</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 4</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
</nav>
</div>
<script type="text/javascript">
var navIsOpen = false;
window.onload = function()
{
document.getElementById("navbtn").onclick = function()
{
if(!navIsOpen)
{
document.getElementById("tutorialnav").style.width = "250px";
document.getElementById("navbtn").style.color = "white";
navIsOpen = true;
}
else if(navIsOpen)
{
document.getElementById("tutorialnav").style.width = "0px"
document.getElementById("navbtn").style.color = "black";
navIsOpen = false;
}
return false;
}
}
</script>
编辑:WHOOPS忘记了CSS。。。这是
#tutorialnav {
z-index: 1;
height:100%;
width: 0;
position: fixed;
background-color: #111;
top: 0;
left: 0;
overflow-x: hidden;
transition: 0.2s;
padding-top: 80px;
filter: drop-shadow(5px 0px 1px black);
}
#tutorialnav a {
text-decoration: none;
display: block;
transition: 0s;
color: white;
white-space: nowrap;
}
.majornav {
padding: 8px 8px 8px 32px;
font-size: 25px;
}
.minornav {
padding: 4px 8px 4px 64px;
font-size: 16px;
}
#tutorialnav a:hover {
color: yellow;
}
#navbtn {
color: black;
position: sticky;
z-index: 2;
font-size: 36px;
cursor: pointer;
top: 10px;
left: 20px;
transition: 0.7s;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.noselect {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
编辑2:想出了一个解决方案-它发布在下面。不幸的是,我需要48小时才能检查自己的解决方案,所以这个线程将打开更长的时间。
好吧,希望这就是你想要的。当导航打开时,你需要在导航中有一个单独的滚动按钮,因为第一个打开是基于整个屏幕的粘性按钮。
除此之外,我将按钮标记改为div,这样它们看起来很好看。看看onclick fuction是如何工作的。你设置按钮的方式它在寻找
function openNav(){...}
在你的脚本标签中,但它不在那里祝你好运。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
box-sizing: border-box;
}
body {
font-family: Roboto, Arial, Helvetica, sans-serif;
background-color: #fffc2e;
}
#first_screen {
text-align: center;
padding: 10%;
color: black;
font-size: 50px;
height: 100vh;
}
/*Navigation Button*/
#tutorialnav {
z-index: 1;
height: 100%;
width: 0;
position: fixed;
background-color: #111;
top: 0;
left: 0;
overflow-x: hidden;
transition: 0.2s;
padding-top: 80px;
filter: drop-shadow(5px 0px 1px black);
}
#tutorialnav a {
text-decoration: none;
display: block;
transition: 0s;
color: white;
white-space: nowrap;
}
.majornav {
padding: 8px 8px 8px 32px;
font-size: 25px;
}
.minornav {
padding: 4px 8px 4px 64px;
font-size: 16px;
}
#tutorialnav a:hover {
color: yellow;
}
#navbtn {
color: black;
position: sticky;
z-index: 2;
font-size: 36px;
cursor: pointer;
top: 10px;
left: 20px;
transition: 0.7s;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#navbtncls {
color: blanchedalmond;
}
.noselect {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
top: 10px;
left: 10px;
position: -webkit-sticky;
position: sticky;
}
</style>
</head>
<body>
<div id="navigationmenu" class="noselect">
<div id="navbtnopn" onclick="openNav()">☰</div>
<nav id="tutorialnav">
<div id="navbtncls" onclick="closeNav()">☰</div>
<a href="#temp" class="majornav">Part 1</a>
<a href="#temp" class="minornav">Section 1</a>
<a href="#temp" class="minornav">Section 2</a>
<a href="#temp" class="majornav">Part 2</a>
<a href="#temp" class="minornav">Section 1</a>
<a href="#temp" class="minornav">Section 2</a>
<a href="#temp" class="majornav">Part 3</a>
<a href="#temp" class="minornav">Section 1</a>
<a href="#temp" class="minornav">Section 2</a>
<a href="#temp" class="majornav">Part 4</a>
<a href="#temp" class="minornav">Section 1</a>
<a href="#temp" class="minornav">Section 2</a>
</nav>
</div>
<br><br><br><br><br><br><br>
<br><br><br><br><br><br><br>
<br><br><br><br><br><br><br>
<br><br><br><br><br><br><br>
<br><br><br><br><br><br><br>
<p>hello</p>
<script type="text/javascript">
var navIsOpen = false;
function openNav() {
document.getElementById("tutorialnav").style.width = "250px";
navIsOpen = true;
}
function closeNav() {
document.getElementById("tutorialnav").style.width = "0px"
navIsOpen = false;
}
</script>
</body>
</html>
我创建了一个解决方案,它有两个相互替换的按钮,同时保持转换的美观。就是这样。还有一个问题,那就是即使侧边栏向下滚动,关闭菜单的按钮仍然可以点击,因为关闭菜单的按键实际上与打开菜单的按钮是同一个,尽管它看起来不是那样的。我试图通过让关闭按钮和打开按钮都有自己的onclick函数来解决这个问题,但z-index没有按我希望的方式工作,所以点击无法正常工作。然而,无论如何,这是一个高中项目,所以现在可能还可以。
* {
box-sizing: border-box;
}
body {
font-family: Roboto, Arial, Helvetica, sans-serif;
background-color: #fffc2e;
}
#first_screen {
text-align: center;
padding: 10%;
color: black;
font-size: 50px;
height: 100vh;
}
/*Navigation Button*/
#tutorialnav {
z-index: 1;
height: 100%;
width: 0;
position: fixed;
background-color: #111;
top: 0;
left: 0;
overflow-x: hidden;
transition: 0.2s;
padding-top: 10px;
filter: drop-shadow(5px 0px 1px black);
}
#tutorialnav a {
text-decoration: none;
display: block;
transition: 0s;
color: white;
white-space: nowrap;
}
.majornav {
padding: 8px 8px 8px 32px;
font-size: 25px;
}
.minornav {
padding: 4px 8px 4px 64px;
font-size: 16px;
}
#tutorialnav a:hover {
color: yellow;
}
#navbtnopen {
color: black;
position: sticky;
z-index: 2;
font-size: 36px;
cursor: pointer;
top: 10px;
left: 20px;
transition: 0.2s;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#navbtncls {
color: black;
position: sticky;
z-index: 2;
font-size: 36px;
cursor: pointer;
left: 20px;
transition: 0.2s;
opacity: 0;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.noselect {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
top: 10px;
left: 10px;
position: -webkit-sticky;
position: sticky;
}
/*End Navigation Button*/
<!DOCTYPE html>
<html>
<title>3D Graphics Tutorial Homepage</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="UTF-8">
<meta name="description" content="3d Graphics Web Tutorials [Homepage]">
<meta name="author" content="Harsha Boyilla">
<meta name="keywords" content="3D, 3d, 3d graphics, 3D graphics, graphics, tutorial">
<link rel="stylesheet" href="styles.css">
<body>
<!-- Navigation Menu -->
<div id="navigationmenu" class="noselect">
<span id="navbtnopen">☰</span>
<nav id="tutorialnav">
<span id="navbtncls">☰</span>
<a href="temp" class="majornav">Part 1</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 2</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 3</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 4</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 5</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 6</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 7</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
<a href="temp" class="majornav">Part 8</a>
<a href="temp" class="minornav">Section 1</a>
<a href="temp" class="minornav">Section 2</a>
</nav>
</div>
<script type="text/javascript">
var navIsOpen = false;
window.onload = function()
{
document.getElementById("navbtnopen").onclick = function()
{
if(!navIsOpen)
{
document.getElementById("tutorialnav").style.width = "250px";
document.getElementById("navbtnopen").style.transition = "0s";
document.getElementById("navbtnopen").style.opacity = "0";
document.getElementById("navbtnopen").style.color = "black";
document.getElementById("navbtncls").style.opacity = "1";
document.getElementById("navbtncls").style.transition = "0.2s";
document.getElementById("navbtncls").style.color = "white";
navIsOpen = true;
}
else if(navIsOpen)
{
document.getElementById("tutorialnav").style.width = "0px"
document.getElementById("navbtncls").style.transition = "0s";
document.getElementById("navbtncls").style.opacity = "0";
document.getElementById("navbtncls").style.color = "white";
document.getElementById("navbtnopen").style.opacity = "1";
document.getElementById("navbtnopen").style.transition = "0.2s";
document.getElementById("navbtnopen").style.color = "black";
navIsOpen = false;
}
return false;
}
}
</script>
<article id="first_screen">
<p>Welcome to my website!</p>
<p>Placeholder text is placeholder text</p>
</article>
</body>
</html>