javascript - 使用 JQuery 的 animate() 为 CSS 值设置动画

标签 javascript jquery css

我想将元素的样式动画化为使用 CSS 定义的值。我不想为默认值设置动画,所以 animate({'width':'auto'}) 将不起作用。

例如:

<style>
#element{width:100px;}
</style>

<div id=element></div>

<script>
$('#element').width(200);
$('#element').animate({width:'auto'});
</script>

有没有一种方法可以在不使用 Javascript 变量的情况下将元素动画回其原始宽度?

最佳答案

您可以尝试以下方法之一:

  1. 如果 widthanimate 在同一范围内,您可以这样做(在本地 var 中设置新宽度之前存储初始宽度并使用它在 animate 中):

    var initialWidth = $('#element').width(); // or $('#element').css('width')
    $('#element').width(200);
    $('#element').animate({width:initialWidth});
    
  2. 如果您稍后调用 animate 并且由于超出范围而无法使用局部变量,您可以将初始宽度存储在 data 中属性

    var initialWidth = $('#element').width(); // or $('#element').css('width')
    $('#element').data('initial-width', initialWidth);
    $('#element').width(200);
    

    然后在调用 animate 时检索它:

    var initialWidth = $('#element').data('initial-width');
    $('#element').animate({width: initialWidth});
    

查看工作 FIDDLE对于方法 #2 没有使用 JS 变量

关于javascript - 使用 JQuery 的 animate() 为 CSS 值设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23161459/

相关文章:

html - 带图像的 Bootstrap 粘性页脚

javascript - 我如何包含所有 js 文件,就像我们在一个 main.css 中添加所有 css 文件一样

javascript - 如何将原型(prototype)附加到 JS 中的对象文字

javascript - 使用 javascript 写入主机上的文本文件

javascript - 使用带有变量的 .css() 定义 css 属性值的问题

jQuery 根据所选参数对 ul 内的 li 进行排序

jquery - 给定两个元素,将 html 包裹在异构元素周围?

html - 调试 Google Web 字体

javascript - 所有 google Sheet 内置函数上的 ReferenceError

javascript - 如何在 Javascript 事件中检查 Chrome 中仅存在于 DOM 中的元素