我的画布外菜单有问题。当菜单打开时,其中的p标签在扩展时似乎会改变它们的左边距。我希望我的p标签完全忽略菜单的打开和关闭并保持文本对齐。以下是我希望它做什么的想法:https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_sidenav_push
将其与我目前的代码进行比较:
function openNav() {
document.getElementById("nav").style.width = "250px";
document.getElementById("burger").style.left = "260px";
}
function closeNav() {
document.getElementById("nav").style.width = "0";
document.getElementById("burger").style.left = "10px";
}
* {
margin: 0;
madding: 0;
}
html, body {
height: 100%;
}
body {
font-family: sans-serif;
}
nav {
position: absolute;
top: 0;
left: 0;
display: inline-block;
height: 100%;
background-color: #333;
color: #fff;
padding-top: 30px;
text-align: center;
width: 0;
white-space: nowrap;
overflow-x: hidden;
transition: width 1.5s;
}
.close {
cursor: pointer;
position: absolute;
top: 5px;
right: 15px;
font-size: 2em;
}
nav p {
cursor: pointer;
display: block;
font-size: 1.7em;
margin: 30px auto;
white-space: nowrap;
}
nav p:hover {
opacity: 0.8;
}
.burger {
will-change: left;
position: absolute;
left: 10px;
cursor: pointer;
font-size: 2em;
z-index: 1;
transition: 1.5s;
}
<nav id="nav">
<span class="close" onclick="closeNav()">×</span>
<p>Home</p>
<p>About</p>
<p>Blog</p>
<p>Contact</p>
</nav>
<span class="burger" id="burger" onclick="openNav()">☰</span>
基本上,我希望p标记的行为就像绝对定位一样,但在导航扩展时居中。
答案 0 :(得分:1)
将<p>
标记包围在另一个<div>
中,无论<nav>
是否移动,这些标记都将静态定位。然后将中心对齐应用于它:
function openNav() {
document.getElementById("nav").style.width = "250px";
document.getElementById("burger").style.left = "260px";
}
function closeNav() {
document.getElementById("nav").style.width = "0";
document.getElementById("burger").style.left = "10px";
}
* {
margin: 0;
madding: 0;
}
html, body {
height: 100%;
}
body {
font-family: sans-serif;
}
nav {
position: absolute;
top: 0;
left: 0;
display: inline-block;
height: 100%;
background-color: #333;
color: #fff;
padding-top: 30px;
width: 0;
white-space: nowrap;
overflow-x: hidden;
transition: width 1.5s;
}
.close {
cursor: pointer;
position: absolute;
top: 5px;
right: 15px;
font-size: 2em;
}
nav p {
cursor: pointer;
display: block;
font-size: 1.7em;
margin: 30px 0;
white-space: nowrap;
}
#pHolder{
margin-left: 75px;
width: 80px;
text-align: center;
}
nav p:hover {
opacity: 0.8;
}
.burger {
will-change: left;
position: absolute;
left: 10px;
cursor: pointer;
font-size: 2em;
z-index: 1;
transition: 1.5s;
}
<nav id="nav">
<span class="close" onclick="closeNav()">×</span>
<div id="pHolder">
<p>Home</p>
<p>About</p>
<p>Blog</p>
<p>Contact</p>
</div>
</nav>
<span class="burger" id="burger" onclick="openNav()">☰</span>
答案 1 :(得分:-1)
不要更改width
,而是保持宽度不变并更改left
的{{1}}对齐
试试这个
nav
&#13;
function openNav() {
document.getElementById("nav").style.left = "0px";
document.getElementById("burger").style.left = "260px";
}
function closeNav() {
document.getElementById("nav").style.left = "-250px";
document.getElementById("burger").style.left = "10px";
}
&#13;
* {
margin: 0;
madding: 0;
}
html, body {
height: 100%;
}
body {
font-family: sans-serif;
}
nav {
position: absolute;
top: 0;
left: -250px;
display: inline-block;
height: 100%;
background-color: #333;
color: #fff;
padding-top: 30px;
text-align: center;
width: 250px;
white-space: nowrap;
overflow-x: hidden;
transition: left 1.5s;
}
.close {
cursor: pointer;
position: absolute;
top: 5px;
right: 15px;
font-size: 2em;
}
nav p {
cursor: pointer;
display: block;
font-size: 1.7em;
margin: 30px auto;
white-space: nowrap;
}
nav p:hover {
opacity: 0.8;
}
.burger {
will-change: left;
position: absolute;
left: 10px;
cursor: pointer;
font-size: 2em;
z-index: 1;
transition: 1.5s;
}
&#13;