2016-10-27 3 views
0

У меня есть скользящее меню:Раздвижные меню суммируется текста При закрытии

@font-face { 
 
    font-family: ErasBold; 
 
    src: url('fonts/erasbd.TTF'); /* Chrome, Opera, Firefox */ 
 
} 
 

 
@font-face{ 
 
    font-family: ErasDemi; 
 
    src: url('fonts/erasdemi.TTF'); 
 
} 
 
@font-face{ 
 
    font-family: ErasLight; 
 
    src: url('fonts/eraslight.TTF'); 
 
} 
 
body { 
 
    background-color: #EDEDED; 
 
    width: 90%; 
 
    min-height: 100%; 
 
    /*border-color: #000000; !INCASE YOU WOULD LIKE TO SEE WHERE THE BODY IS LOCATED ON THE SCREEN. USE FOR DEBUGGING VARIOUS DEVICES! 
 
    border-style: outset;*/ 
 
    margin: 0 auto; 
 
    transition: 1s; 
 
} 
 

 

 
#header { 
 
    background-color: #000000; 
 
    position: fixed; 
 
    height: 95px; 
 
    width: 100%; 
 
    top: 0 
 
    left: 0; 
 
    right: 0; 
 
} 
 

 
#mainpage { 
 
    background-color: #EDEDED; 
 
    height: 82%; 
 
    width: 100%; 
 
    margin: 0 auto -4em; 
 
    position: relative; 
 
    padding: none; 
 
    overflow: auto; 
 
} 
 

 
#footer{ 
 
    height: 80px; 
 
    width: 100%; 
 
    background-color: #000000; 
 
    position: fixed; 
 
    bottom: 0; 
 
    left: 0; 
 
    right: 0; 
 

 

 
} 
 

 
#logo{ 
 
    height: 100%; 
 
    width: auto; 
 
} 
 

 

 
.sideNav{ 
 
    height: 100%; 
 
    width: 0; 
 
    position: fixed; 
 
    z-index: 1; 
 
    top: 0; 
 
    right: 0; 
 
    background-color: #111; 
 
    overflow-x: hidden; 
 
    padding-top: 60px; 
 
    transition: 0.5s; 
 
} 
 

 
.sideNav a{ 
 
    padding: 8px 8px 8px 32px; 
 
    text-decoration: none; 
 
    font-size: 27px; 
 
    color: #818181; 
 
    display: block; 
 
    transition: 0.3s; 
 
    font-family: ErasLight; 
 
} 
 

 

 
.sideNav a:hover, .offcanvas a:focus{ 
 
    color: #f1f1f1; 
 
} \t 
 

 
.sideNav .closeButton{ 
 
    position: absolute; 
 
    top: 0; 
 
    right: 25px; 
 
    font-size: 40px; 
 
    margin-left: 50px; 
 
} 
 

 
@media screen and (max-height: 450px){ 
 
    .sideNav {padding-top: 15px;} 
 
    .sideNav a {font-size: 18px;} 
 
} 
 

 
#menuStuff{ 
 
    color: white; 
 
    float: right; 
 
    font-size: 30px; 
 
    font-family: ErasLight; 
 
    text-decoration: none; 
 
    margin-top: 20px; 
 
    margin-right: 20px; 
 
} 
 

 
#menuStuff .hover { 
 
    color: #FFFFFF; 
 
    text-decoration: none; 
 
}
<body> \t \t 
 

 
    <div id="header"> 
 

 
    <a href="index.html"> <img src="images/logo.png" id="logo"> </a> 
 

 
    <div id="mySideNav" class="sideNav"> 
 
     <a href="javascript:void(0)" class="closeButton" onclick="closeNav()">&times;</a> 
 
     <a href="index.html">Home</a> 
 
     <a href="">About Me</a> 
 
     <a href="">My Work</a> 
 
    </div> 
 

 
    <a href="#"><span onclick="openNav()" id="menuStuff">Menu &#9776;</span></a> 
 

 
    <script> 
 
     function openNav() { 
 
     document.getElementById("mySideNav").style.width = "250px"; 
 
     document.body.style.backgroundColor = "rgba(0,0,0,0.4)"; 
 
     } 
 

 
     function closeNav() { 
 
     document.getElementById("mySideNav").style.width = "0px"; 
 
     document.body.style.backgroundColor = "white"; 
 
     } 
 
    </script> 
 

 
    </div> 
 

 
    <div id="mainpage"> 
 

 
    </div> 
 

 

 
    <div id="footer"> 
 

 
    </div> 
 
</body>

http://codepen.io/dangranger/pen/WGWqvm 

И при нажатии на «х», чтобы закрыть его, текст складывает на вершине каждого другой, когда он перемещается внутрь. Как я могу сделать это так, чтобы он оставался таким, как он есть, и просто уходит?

(Извините за плохой структуры я изо всех сил, чтобы объяснить)

+0

какой браузер вы используете? Кажется, работает в хроме для меня – alexc

ответ

1

Это потому, что вы измените ширину. Даже когда .sideNav имеет width: 1px (в начале анимации), x все еще там.

Вы можете анимировать позицию вместо:

Примечание: Страница внимание, что вместо того, чтобы изменить стиль в сценарии, я просто переключать класс open и контролировать стиль в CSS. Я думаю, что это лучший подход.

function openNav() { 
 
    document.getElementById("mySideNav").classList.add('open'); 
 
    document.body.style.backgroundColor = "rgba(0,0,0,0.4)"; 
 
} 
 

 
function closeNav() { 
 
    document.getElementById("mySideNav").classList.remove('open'); 
 
    document.body.style.backgroundColor = "white"; 
 
}
@font-face { 
 
    font-family: ErasBold; 
 
    src: url('fonts/erasbd.TTF'); /* Chrome, Opera, Firefox */ 
 
} 
 

 
@font-face{ 
 
    font-family: ErasDemi; 
 
    src: url('fonts/erasdemi.TTF'); 
 
} 
 
@font-face{ 
 
    font-family: ErasLight; 
 
    src: url('fonts/eraslight.TTF'); 
 
} 
 
body { 
 
    background-color: #EDEDED; 
 
    width: 90%; 
 
    min-height: 100%; 
 
    /*border-color: #000000; !INCASE YOU WOULD LIKE TO SEE WHERE THE BODY IS LOCATED ON THE SCREEN. USE FOR DEBUGGING VARIOUS DEVICES! 
 
    border-style: outset;*/ 
 
    margin: 0 auto; 
 
    transition: 1s; 
 
} 
 

 

 
#header { 
 
    background-color: #000000; 
 
    position: fixed; 
 
    height: 95px; 
 
    width: 100%; 
 
    top: 0 
 
    left: 0; 
 
    right: 0; 
 
} 
 

 
#mainpage { 
 
    background-color: #EDEDED; 
 
    height: 82%; 
 
    width: 100%; 
 
    margin: 0 auto -4em; 
 
    position: relative; 
 
    padding: none; 
 
    overflow: auto; 
 
} 
 

 
#footer{ 
 
    height: 80px; 
 
    width: 100%; 
 
    background-color: #000000; 
 
    position: fixed; 
 
    bottom: 0; 
 
    left: 0; 
 
    right: 0; 
 

 

 
} 
 

 
#logo{ 
 
    height: 100%; 
 
    width: auto; 
 
} 
 

 

 
.sideNav{ 
 
    height: 100%; 
 
    width: 250px; 
 
    position: fixed; 
 
    z-index: 1; 
 
    top: 0; 
 
    right: 0; 
 
    background-color: #111; 
 
    overflow-x: hidden; 
 
    padding-top: 60px; 
 
    transition: 0.5s; 
 
    transform: translateX(250px); 
 
} 
 

 
.sideNav.open { 
 
    transform: translateX(0); 
 
} 
 

 
.sideNav a{ 
 
    padding: 8px 8px 8px 32px; 
 
    text-decoration: none; 
 
    font-size: 27px; 
 
    color: #818181; 
 
    display: block; 
 
    transition: 0.3s; 
 
    font-family: ErasLight; 
 
} 
 

 

 
.sideNav a:hover, .offcanvas a:focus{ 
 
    color: #f1f1f1; 
 
} \t 
 

 
.sideNav .closeButton{ 
 
    position: absolute; 
 
    top: 0; 
 
    right: 25px; 
 
    font-size: 40px; 
 
    margin-left: 50px; 
 
} 
 

 
@media screen and (max-height: 450px){ 
 
    .sideNav {padding-top: 15px;} 
 
    .sideNav a {font-size: 18px;} 
 
} 
 

 
#menuStuff{ 
 
    color: white; 
 
    float: right; 
 
    font-size: 30px; 
 
    font-family: ErasLight; 
 
    text-decoration: none; 
 
    margin-top: 20px; 
 
    margin-right: 20px; 
 
} 
 

 
#menuStuff .hover { 
 
    color: #FFFFFF; 
 
    text-decoration: none; 
 
}
<body> \t \t 
 

 
    <div id="header"> 
 

 
    <a href="index.html"> <img src="images/logo.png" id="logo"> </a> 
 

 
    <div id="mySideNav" class="sideNav"> 
 
     <a href="javascript:void(0)" class="closeButton" onclick="closeNav()">&times;</a> 
 
     <a href="index.html">Home</a> 
 
     <a href="">About Me</a> 
 
     <a href="">My Work</a> 
 
    </div> 
 

 
    <a href="#"><span onclick="openNav()" id="menuStuff">Menu &#9776;</span></a> 
 
    </div> 
 
    <div id="mainpage"> 
 

 
    </div> 
 
    <div id="footer"> 
 

 
    </div> 
 
</body>

+0

@ Да, вы пробовали мой ответ? –

+0

Да! Извинения за поздний ответ Я был очень занят в последнее время - спасибо за то, что он работает абсолютно нормально! –

+0

@DanGranger потрясающий! Можете ли вы [принять] (http://stackoverflow.com/help/someone-answers) ответ, чтобы он помог другим людям? –

0

Это происходит потому, что вы изменяете ширину контейнера.

Другим подходом было бы скользить сам контейнер в/из окна просмотра. Это может быть достигнуто многими способами, обычно используя right, margin-right или translate (или в эти дни, возможно, translate3d) в вашем случае.