2015-09-05 1 views
0

Итак, у меня это из меню холста, которое ALMOST работает, но не совсем! Меню нажимает справа, но остальная часть сайта не сдвигается влево. Я совершенно уверен, что в CSS отсутствует что-то, то есть класс, который я переключил (.toggleNav)! Не могу понять, хотя, нужна ваша помощь! Большое спасибо!!из меню холста не выталкивает контент

$(document).ready(function(e) { 
 
\t 
 
\t $('#toggleMenu').click(function() { 
 
\t $('#siteWrapper').toggleClass('toggleNav'); 
 
\t }); 
 
\t 
 
});
* {padding:0;margin:0;font-family:Helvetica,sans-serif;font-weight:normal} 
 
body, html {width: 100%;height: 100%;} 
 
ul {list-style:none;padding-left:10px;} 
 

 
#siteWrapper{ 
 
\t overflow:hidden; 
 
\t position:relative; 
 
\t width: 100%; 
 
\t height: 40%; 
 
\t background: lightgrey; \t 
 
} 
 
#canvasWrapper { 
 
\t position:absolute; 
 
\t top: 0; 
 
\t right:-400px; 
 
\t width: 400px; 
 
\t height: 100%; 
 
\t background: #3186CD; \t 
 
} 
 
#siteWrapper, #canvasWrapper { 
 
\t -webkit-transform: translateX(0); 
 
\t transform: translateX(0); 
 
\t -webkit-transition: \t .3s ease all; 
 
\t transition: .3s ease all; 
 
} 
 
#siteWrapper.toggleNav #canvasWrapper { /* quite possibly wrong... */ 
 
\t -webkit-transform: translateX(-400px); 
 
\t transform: translateX(-400px); \t 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div id="siteWrapper"> 
 
    <h1>Off Canvas Menu</h1><br> 
 
    <h3>This should slide to the left! Some more text to have something left on the canvas...</h3><br> 
 

 

 
\t <div id="canvasWrapper" > 
 
    \t <div id="menu"> 
 
     \t <ul> 
 
      \t <li>home</li> 
 
       <li>infos</li> 
 
       <li>something</li> 
 
       <li>contact</li> 
 
      </ul> 
 
     </div>  
 
    </div> 
 
</div> 
 
<a href="#" id="toggleMenu">toggle Menu</a>

ответ

0

с дополнительной оберткой он работал:

function toggleNav() { 
 
$('#siteWrapper').toggleClass('showNav'); 
 
} 
 

 
$(function() { 
 
    $('.toggle').click(function() { 
 
    toggleNav(); \t 
 
    }); 
 
});
.toggle {float:right;margin-right:30%;cursor:pointer;} 
 

 
#siteWrapper { 
 
\t position: relative; 
 
\t overflow-x: hidden; 
 
\t width: 100%; 
 
\t height: 100%; 
 
\t background: lightgrey; \t 
 
} 
 
#siteCanvas { 
 
\t width: 100%; 
 
\t height:100%; 
 
\t position:relative; 
 
\t -webkit-transform: translateX(0); 
 
\t transform: translateX(0); 
 
\t -webkit-transition: .3s ease all; 
 
\t transition: .3s ease all; 
 
\t padding: 5% 0; 
 
} 
 
#siteMenu { 
 
\t width: 250px; 
 
\t height: 100%; \t 
 
\t position: absolute; 
 
\t top: 0; 
 
\t right: -300px; 
 
\t background: black; 
 
\t color: white; 
 
\t border-left: 1px solid white; 
 
\t z-index: 5000; 
 
\t padding-top: 5%; 
 
\t font-size: 1.2em; 
 
} 
 
#siteWrapper.showNav #siteCanvas { 
 
\t -webkit-transform: translateX(-300px); 
 
\t transform: translateX(-300px); \t 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<div id="siteWrapper"> 
 
<div id="siteCanvas"> 
 
<div id="siteMenu"> 
 
    <nav>MENU 
 
    <ul> 
 
    <li>home</li> 
 
    <li>away</li> 
 
    <li>tickets</li> 
 
    </ul> 
 
    </nav> 
 
</div> 
 

 
    <button class="toggle" type="button">toggle</button> 
 
<h1>the</h1> 
 
    <h3>actual</h3> 
 
    <p>site with some lorem ipsum to show the push effect</p> 
 
    
 
</div> 
 
</div>

0
#siteWrapper.toggleNav { /* quite possibly wrong... */ 
-webkit-transform: translateX(-400px); 
transform: translateX(-400px); 
} 
+0

Спасибо за ваши отзывы, я пробовал это раньше, он перемещает меню на 800 пикселей влево, а не на 400 пикселей ... Я предполагаю, что это сумма 400px fr om #siteWrapper плюс 400px из #canvasWrapper? – Ollie

+0

Хорошо, тогда примените css только на .toggleNav, поэтому, если он перемещается на 400 пикселей, вы увидите, что offcanvas будет отображаться. – Ahmadbaba46

+0

теперь только серый холст перемещается влево, но меню холста не перемещается ... – Ollie

0

Это действительно решение. # siteWrapper.toggleNav, # siteWrapper.toggleNav #canvasWrapper { -webkit-transform: translateX (-400px); transform: translateX (-400px);} # siteWrapper.toggleNav #canvasWrapper { Вправо: -400px; }

+0

Это дает мне 400px между правым концом и меню, например. в окне просмотра 900 пикселей: [900px viewport] [холст 100px] [меню 400px] [extra 400px] – Ollie

0

Вот код, я скопировал его и фиксированный - я имею в виду я сделал то, что я CAN-

* {padding:0;margin:0;font-family:Helvetica,sans-serif;font-weight:normal} 
body, html {width: 100%;height: 100%;} 
ul {list-style:none;padding-left:10px;} 

#siteWrapper{ 
overflow:shown; 
position:relative; 
width: 100%; 
height: 40%; 
background: lightgrey; 
} 
#canvasWrapper { 
position:absolute; 
top: 0; 
right:-400px; 
width: 400px; 
height: 100%; 
display:none; 
background: #3186CD;  
} 
#siteWrapper, #canvasWrapper { 
-webkit-transform: translateX(0); 
transform: translateX(0); 
-webkit-transition: .3s ease all; 
transition: .3s ease all; 
} 
#siteWrapper.toggleNav { 
left:-400px; 
overflow:; 
} 
#siteWrapper.toggleNav #canvasWrapper{ 
right:-400px; 
display:block; 
} 
+0

nope, не работает, холст перемещается, но не меню. вы на самом деле проверяете это? – Ollie

+0

Я действительно тестировал его, и он работал на firefox, chrome и IE. Это действительно сработало для меня – Ahmadbaba46

+0

не работал ни на меня, ни на меня ... – Ollie

Смежные вопросы