我的 Canvas 外菜单出现问题。当菜单打开时,其中的 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 标签表现得好像它们是绝对定位的,但在导航展开时居中。
最佳答案
包围你的<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>
关于javascript - 使 P 标签忽略父 Div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42618012/