2016-11-16 2 views
1

Я сделал несколько jquery, поэтому, когда кто-то нажимает на кнопку 2menu, на панели навигации на холсте отображается. Однако я не могу понять, как получить гладкий эффект слайда, когда кто-то открывает/закрывает .. меню Спасибо за вашу помощьСлайд-меню гладко

Мой Jquery является:

$(".menutrigger").click(function() { 
    $(".nav").toggleClass("show-nav"); 
    $(".page-wrap").toggleClass("page-wrap-menu", { direction: "left" }, 1000); 
}); 

Сайт:

http://ubie-global.ubieportal.co.uk/

ответ

7

Вы можете сделать это путем добавления transition к элементу с классом page-wrap.

.page-wrap { 
    min-width: 100%; 
    min-height: 100%; 
    position: relative; 
    top: 0; 
    bottom: 100%; 
    left: 0; 
    z-index: 1; 

    /* Transition */ 
    transition: left ease-in-out 0.3s; 
} 

CSS переходы обеспечивают возможность контролировать скорость анимации при изменении свойств CSS. Вместо того, чтобы изменения свойств вступают в силу немедленно, вы можете вызвать изменения свойства в течение определенного периода времени. Например, если вы меняете цвет элемента с белого на черный, обычно это изменение мгновенно. С включенными переходами CSS изменения происходят с временными интервалами, которые следуют за кривой ускорения, все из которых могут быть настроены.

Источник: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Transitions/Using_CSS_transitions

Редактировать

дополнения в соответствии с вашим обновления.

.nav { 
    list-style: none; 
    background: #fff; 
    width: 360px; 
    height: 100%; 
    position: fixed; 
    z-index: 999; 
    top: 0; 
    display: block; 
    right: 0; 
    transform: translateX(360px); 
} 

.page-wrap { 
    min-width: 100%; 
    min-height: 100%; 
    position: relative; 
    top: 0; 
    bottom: 100%; 
    z-index: 1; 
    transform: translateX(0px); 
    overflow: visible; 
    transition: all 0.9s ease; 
    overflow: visible !important; 
} 
+2

Также мне стоит использовать transform: translateY (0px) transform: translateY (-360pxpx), чтобы его можно было бросить на gpu (в отличие от левого) –

+0

@AndrewBone Абсолютно верно. Гораздо лучше позволить устройству, предназначенному для этой цели :) – Kyle

+0

@AndrewBone - отличный совет, так как это предотвратит любое дрожание во время анимации, которое имеет тенденцию происходить на некоторых устройствах. –

0

вы можете сделать это, добавив несколько изменений CSS:

.nav { 
list-style: none; 
background: #fff; 
width: 360px; 
height: 100%; 
position: fixed; 
z-index: 0; 
right: -360px; // changed from 0 to -360px 
top: 0; 
/* display: none; */ 
} 

.show-nav { 
/* display: block !important; */ 
right: 0; // add this line 
} 

чем добавить этот

.page-wrap, .nav { 
transition: all 0.2s ease; 
} 
+0

Отлично. Единственное, что «.nav» по какой-то причине не показывается на http://ubie-global.ubieportal.co.uk/ –

+0

Извините, я не добавил лишний раз: 0; на "show-nav" извините. Моя ошибка –

+0

Отлично, не стесняйтесь отметить правильный ответ – Okba

0

Используйте переход, как выше ответы, но не живой left и right , что будет очень медленным и медленным. Вместо этого используйте трансформацию.

+0

Я сделал это. Единственное, что я не могу получить, чтобы NAV показывал справа после этого, http://ubie-global.ubieportal.co.uk/ –

+0

Правильно: 0 в этом проблема.Использовать влево: -360px – alvarlagerlof

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