2017-03-06 1 views
1

캔버스 벗어난 메뉴에 문제가 있습니다. 메뉴가 열리면 그 안에있는 p 태그는 확장 될 때 왼쪽 여백을 변경하는 것처럼 보입니다. p 태그가 메뉴 열기 및 닫기를 완전히 무시하고 텍스트 정렬을 유지하기를 원합니다.P 태그 만들기 부모 구역 무시

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()">&times;</span> 
 
    <p>Home</p> 
 
    <p>About</p> 
 
    <p>Blog</p> 
 
    <p>Contact</p> 
 
</nav> 
 

 
<span class="burger" id="burger" onclick="openNav()">&#9776;</span>
기본적으로

, 나는 그들이 위치 것처럼 P 태그의 역할을 할 : https://www.w3schools.com/howto/tryit.asp?filename=tryhow_js_sidenav_push

내 현재 코드에 그 비교 : 여기가 수행 할 작업의 생각입니다 절대적으로, 그러나 nav가 확장 할 때 중심에 두십시오.

답변

1

다른 <div><p> 태그를 서라운드 시도 폭을 일정하게 유지하고 nav

left 정렬을 변경하는 것 <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()">&times;</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()">&#9776;</span>

+0

완벽! 정말 고마워. –

+0

동일합니다. 좋은 걸출한 메뉴 @ H. 앨런. 천만에요 – NDFA

-1

대신 width을 변경하는,이

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"; 
 
}
* { 
 
    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; 
 
}
<nav id="nav"> 
 
    <span class="close" onclick="closeNav()">&times;</span> 
 
    <p>Home</p> 
 
    <p>About</p> 
 
    <p>Blog</p> 
 
    <p>Contact</p> 
 
</nav> 
 

 
<span class="burger" id="burger" onclick="openNav()">&#9776;</span>

+0

이 내가 원하는 무엇을 정말하지 않습니다. 당신은 링크에서 내가 nav에게 "링크"가 side nav를 완전히 무시한다는 것을 알게 될 것입니다. 따라서 nav는 확장되고 축소되는 동안 계속 동일한 위치에 있습니다. –

+0

w3schools에서는 'center' 정렬을 시도하면서'왼쪽 '정렬 된 내용을 유지합니다. 그래서'nav'의'width'를 변경할 때, 내용도'width'에 따라 움직일 것입니다. – sam

+0

그게 바로이 문제를 우회하는 해결책을 찾고있는 이유입니다. 나는 절대 위치 결정과 관련된 것을 생각하고 있었다. –