我的画布菜单出现问题。菜单打开时,其中的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/