2014-11-29 10 views
0
//startling class of object 
.c1 { width: 100px; } 

//object gets animated 
$(".c1").animate({width: 200},500); 

//I wanna animate the object back to the initial width 
//without animate I would do 
$(".c1").css("width", ""); 
//to clear the inline style 

Как это можно сделать без работы?анимировать значение в css/классе


Моя работа вокруг будет очистить inlinestyle, прочитать ширину, установите inlinestyle снова и анимировать. Как это:

$this = $(".c1"); 
var tempwidth=$this.width(); 
$this.css("width", ""); 
var targetwidth=$this.width(); 
$this.css("width", tempwidth); 
$this.animate({width: targetwidth},1000); 
+1

Какое событие вы используете под этим кодом? Вы можете сделать это очень просто, используя CSS 'transform' в зависимости от требуемой поддержки браузера. –

+0

@RoryMcCrossan хорошо пункт. с преобразованием css это было бы легко. Но переписать весь код будет не так просто, потому что я использую callback .done(), а также очереди. Поэтому мне пришлось бы написать некоторую логику для обработки очередей самим. Было бы неплохо иметь решение с jQuery – nbar

ответ

0
$(document).ready(function(){ 
    var realwidth = parseInt($('.c').width()); 

    $('.c').animate({width: 200},1000); 
    $('.c').click(function(){ 
     $(this).animate({width: realwidth},1000); 
    }); 
}); 

DEMO with click одушевленного OnLoad и нажмите DIV анимировать назад


и если вы не хотите событие щелчка просто использовать этот

$(document).ready(function(){ 
    var realwidth = parseInt($('.c').width()); 
    $('.c').animate({width: 200},1000).animate({width: realwidth},1000); 
}); 

DEMO without click

0

Это можно сделать, сохранив исходное значение css для хранения данных элемента (используя метод jQuery .data()). Позже, например, сравните текущее значение с начальным значением для переключения элемента, FIDDLE.

// set the initial value 
$('.c1').each(function() { 
    $(this).data('width', $(this).width()); 
}); 

// animate element 
$(".c1").animate({ width: 200 }, 500); 

// animate element back to initial value 
var width = $(".c1").data('width'); 
$(".c1").animate({ width: width }, 500); 
Смежные вопросы