2015-06-03 38 views
13

Próbowałem ustawić CSS calc() użyciu jQuery animowania, na przykład:jQuery animate() i oblicz, CSS()

$element.animate({ 
    height: 'calc(100% - 30px)' 
}, 500); 

i zauważyłem, że calc() nie pracuje z jQuery animowania ...

mam nadzieję, że istnieje sposób, aby to zrobić, nie chcę podobny sposób to zrobić, alternatywę lub obejścia chcę ustawić calc()

Czy to niemożliwe? W jakikolwiek sposób?

Jeśli to możliwe, proszę pokazać jak?

+0

'$ (dokument) .width()' jest taki sam jak '100%' czy próbowałeś tego? – Akshay

+1

Jeśli używam tego, muszę zmienić rozmiar również w oknie zmiany rozmiaru .. Jeśli mogę użyć Calc() To zrobi to automatycznie – neoDev

+1

Obawiam się, że 'calc' nie jest obsługiwany przez' jQuery animate'. Z podręcznika: 'Wszystkie animowane właściwości powinny być animowane do pojedynczej wartości liczbowej,' –

Odpowiedz

9

Ustawienie opcji calc(), tak jak chcesz, nie będzie działać. Najprostszym sposobem na to jest „oblicz” to wartość do zmiennej, coś takiego:

var newHeight = $('.container').height() - 30; 

następnie można użyć animate() z nowej zmiennej, coś takiego:

$('.animate-me').animate({ 
    height: newHeight 
}, 500); 

Utworzono CodePen z przykładem. Po kliknięciu jaśniejszego kwadratu (.animate-me) zostanie on animowany do 100% wysokości .container minus 30 pikseli. Mam nadzieję, że to jest to, czego szukaliśmy ...

http://codepen.io/anon/pen/JYqPxm

Jeśli chcesz go do pracy również na okno rozmiar i używasz zmiennych globalnych, wtedy można po prostu zaktualizować zmienne od wewnątrz zmiany rozmiaru funkcja, tak jak:

$(window).on("resize",function() { 
    // update all variables that you need 
}); 
2

Szukałem odpowiedzi na to dokładne pytanie. Widziałem ten link i było jak "TAK!" Potem zobaczyłem odpowiedzi i brzmiało to jak "nie!" Oto co zrobiłem, oparte na przykład:

var nextHeight = $element.parent().width()-30; 
$element.animate({ 
    height:nextHeight 
}, {duration:500, complete:function(){ $element.width("calc(100% - 30px)"); } }); 

wiem, ja nie wiem dokładnie o co prosiłeś, ale ożywia się, gdzie chcesz animować do i po zakończeniu jego szerokość chciałeś ustawić na. Tak długo jak nie zmieniasz rozmiaru CZAS, który jest animowany, myślę, że to przyzwoite obejście.

+0

Dziękuję kolego! Obiecuję, że ' Testuję jak najszybciej :) – neoDev

Powiązane problemy