2016-05-09 1 views
1

Я хочу использовать переменную «drawerHeight» в моем translateY, чтобы указать, насколько я хочу, чтобы был перевод. Мне нужно получить текущую высоту div, потому что я планирую, чтобы содержимое ящика было отзывчивым.Использование переменных в функции анимации Zepto

Это одна из тех ситуаций, когда я знаю, что хочу, но не могу понять синтаксис, чтобы сделать это.

Код работает в настоящее время, если вы замените «drawerHeight» на любую фиксированную сумму em/px, но это не то, что я хочу сделать.

var drawerHeight = $(".drawer").css('height'); 
    $(".toggle").click(function() { 
    drawerHeight 
    if (opened == false) { 
    $(".drawer").animate({ 
     translateY: '0', 

    }, 600, 'ease-in') 
    } 
    if (opened == true) { 
    $(".drawer").animate({ 
     translateY: '-drawerHeight', 

    }, 600, 'ease-out')  
    } 
    opened = !opened; 
    }) 

http://codepen.io/LivMac/pen/WwLEKe

+0

Как примечание: для того, чтобы быть в полной мере реагировать мне нужно также уменьшить/увеличить непрозрачность так, что при изменении размера окна содержимое не станет видимым. –

ответ

2

Вы должны изменить эту строку:

translateY: '-drawerHeight', 

к

translateY: '-' + drawerHeight, 

Кроме того, я бы рекомендовал вам использовать функцию .height() доступную с замедленным о. Таким образом, учитывается также добавление элементов.

var drawerHeight = $(".drawer").height(); 
translateY: '-' + drawerHeight + 'px', 

Вот ручка: http://codepen.io/thewisenerd/pen/zqeRQa

+0

Связанная с кодом ручка не полностью устраняет проблему, поскольку при изменении размера окна она не полностью скрывает ящик. Мое текущее решение по этой ссылке позволяет разместить измененные окна. Однако я не могу скрыть элемент должным образом, чтобы он не был виден после того, как он был переведен, и окно будет изменено. Aka Мне нужно указать, как установить непрозрачность для элемента или изменить его видимость ПОСЛЕ и только после завершения анимации. Не уверен, как правильно сделать эту часть прямо сейчас. –

+0

@ Liv, это потому, что вы статически присваиваете значение '' 'drawerHeight'''. Переместите '' 'var drawerHeight = $ (". Drawer "). Css ('height');' '' в функцию on click, чтобы она динамически вычислялась каждый раз. также, если вы планируете часто менять размер окна (между переключателями), вы должны иметь функцию изменения размера, которая _corrects_ translateY, так как высота элемента могла бы измениться. – thewisenerd

+0

Это предложение помогло, и мне также пришлось добавить условие, чтобы проверить, был ли ящик уже закрыт. В противном случае ящик закроется при любом изменении размера окна. –