我正在关注Brad Traversy的教程“响应式HTML&CSS
从头开始的侧面菜单。我在关闭side-nav
时遇到问题
因为它会拍拍而不是像视频中那样平滑关闭。有人可以吗
让我知道我做错了什么?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"
/>
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link rel="stylesheet" href="style.css" />
<title>Document</title>
</head>
<body>
<nav class="navbar">
<span class="open-slide">
<a href="#" onclick="openSlideMenu()">
<svg width="30" height="30">
<path d="M0,5 30,5" stroke="#fff" stroke-width="5" />
<path d="M0,14 30,14" stroke="#fff" stroke-width="5" />
<path d="M0,23 30,23" stroke="#fff" stroke-width="5" />
</svg>
</a>
</span>
<ul class="navbar-nav">
<li><a href="#">home</a></li>
<li><a href="#">about</a></li>
<li><a href="#">services</a></li>
<li><a href="#">contact</a></li>
</ul>
</nav>
<div id="side-menu" class="side-nav">
<a href="" class="btn-close" onclick="closeSlideMenu()">×</a>
<a href="#">home</a>
<a href="#">about</a>
<a href="#">servoces</a>
<a href="#">contact</a>
</div>
<div id="main">
<h1>responsive side menu</h1>
</div>
<script>
function openSlideMenu() {
document.getElementById("side-menu").style.width = "250px";
document.getElementById("main").style.marginLeft = "250px";
}
function closeSlideMenu() {
document.getElementById("side-menu").style.width = "0";
document.getElementById("main").style.marginLeft = "0";
}
</script>
</body>
</html>
body {
font-family: Arial, Helvetica, sans-serif;
background-color: #ddd;
}
.navbar {
background-color: #3b5998;
overflow: hidden;
height: 63px;
}
.navbar a {
float: left;
display: block;
color: #f2f2f2;
text-align: center;
padding: 14px 16px;
text-decoration: none;
font-size: 17px;
}
.navbar ul {
padding: 8px 0 0 0;
list-style: none;
}
.navbar a:hover {
background-color: #ddd;
color: #000;
}
.side-nav {
height: 100%;
width: 0;
position: fixed;
z-index: 1;
top: 0;
left: 0;
background-color: #111;
opacity: 0.9;
overflow-x: hidden;
padding-top: 60px;
transition: 1s;
}
.side-nav a {
padding: 10px 10px 10px 30px;
text-decoration: none;
font-size: 22px;
color: #ccc;
display: block;
transition: 0.3s;
}
.side-nav a:hover {
color: #fff;
}
.side-nav .btn-close {
position: absolute;
top: 0;
right: 22px;
font-size: 36px;
margin-left: 50px;
}
#main {
transition: margin-left 0.5s;
padding: 20px;
overflow: hidden;
width: 100%;
}
我希望使用侧面菜单和主要内容,所以请平稳地向左滑动。
答案 0 :(得分:1)
问题是您的href上没有#
,该行重定向到此行上的空网址<a href="" class="btn-close" onclick="closeSlideMenu()">×</a>
已添加#
下面的代码段
function openSlideMenu() {
document.getElementById("side-menu").style.width = "250px";
document.getElementById("main").style.marginLeft = "250px";
}
function closeSlideMenu() {
document.getElementById("side-menu").style.width = "0";
document.getElementById("main").style.marginLeft = "0";
}
body {
font-family: Arial, Helvetica, sans-serif;
background-color: #ddd;
}
.navbar {
background-color: #3b5998;
overflow: hidden;
height: 63px;
}
.navbar a {
float: left;
display: block;
color: #f2f2f2;
text-align: center;
padding: 14px 16px;
text-decoration: none;
font-size: 17px;
}
.navbar ul {
padding: 8px 0 0 0;
list-style: none;
}
.navbar a:hover {
background-color: #ddd;
color: #000;
}
.side-nav {
height: 100%;
width: 0;
position: fixed;
z-index: 1;
top: 0;
left: 0;
background-color: #111;
opacity: 0.9;
overflow-x: hidden;
padding-top: 60px;
transition: 1s;
}
.side-nav a {
padding: 10px 10px 10px 30px;
text-decoration: none;
font-size: 22px;
color: #ccc;
display: block;
transition: 0.3s;
}
.side-nav a:hover {
color: #fff;
}
.side-nav .btn-close {
position: absolute;
top: 0;
right: 22px;
font-size: 36px;
margin-left: 50px;
}
#main {
transition: margin-left 0.5s;
padding: 20px;
overflow: hidden;
width: 100%;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link rel="stylesheet" href="style.css" />
<title>Document</title>
</head>
<body>
<nav class="navbar">
<span class="open-slide">
<a href="#" onclick="openSlideMenu()">
<svg width="30" height="30">
<path d="M0,5 30,5" stroke="#fff" stroke-width="5" />
<path d="M0,14 30,14" stroke="#fff" stroke-width="5" />
<path d="M0,23 30,23" stroke="#fff" stroke-width="5" />
</svg>
</a>
</span>
<ul class="navbar-nav">
<li><a href="#">home</a></li>
<li><a href="#">about</a></li>
<li><a href="#">services</a></li>
<li><a href="#">contact</a></li>
</ul>
</nav>
<div id="side-menu" class="side-nav">
<a href="#" class="btn-close" onclick="closeSlideMenu()">×</a>
<a href="#">home</a>
<a href="#">about</a>
<a href="#">servoces</a>
<a href="#">contact</a>
</div>
<div id="main">
<h1>responsive side menu</h1>
</div>
</body>
</html>