当 div 内容改变和 div 增长时 CSS3 过渡

Posted

技术标签:

【中文标题】当 div 内容改变和 div 增长时 CSS3 过渡【英文标题】:CSS3 transitions when div content changes and div grows 【发布时间】:2015-05-07 15:17:49 【问题描述】:

我有一个充满文本的 div。当点击不同的按钮时,该文本会发生变化,并且 div 会增长和缩小以适应文本(就像使用 CSS 时 div 通常会做的那样)。它有一个背景和一个边框,我想使用 CSS3 过渡让 div 通过一点动画平滑地增长和缩小。出于某种原因,我的代码无法正常工作。我写道:

div.div-in-question 
    margin: 0 auto;
    position: relative;
    padding: 0 50px;
    width: 600px;
    -webkit-transition: all .2s ease-in-out;
    -moz-transition: all .2s ease-in-out;
    -o-transition: all .2s ease-in-out;
    -ms-transition: all .2s ease-in-out;

它仍然像平常一样增长和缩小,没有动画或平滑度。

我已经创建了一个JSFiddle,我认为它会根据我认为 CSS3 过渡的工作方式来工作。

【问题讨论】:

您无法转换自动高度 - 您必须设置特定高度才能进行转换。 看看这个答案,看看是否有帮助:***.com/questions/13938460/… 【参考方案1】:

不知道为什么,但我在这里创建了一个小示例动画交易,但它不适用于那个

 div.div-in-question

选择器,只是

.div-in-question

试试看。

http://jsfiddle.net/plushyObject/d06ynxy5/

【讨论】:

是的,但是因为您正在指定 div 的新高度,所以这很有效。 div 没有动态增长。 玩它。这是用来说明问题的小提琴(对不起,一开始没看到你的)。 jsfiddle.net/plushyObject/d06ynxy5/2【参考方案2】:

这个作品

$(function()
    $("body").click(function(e)
        e.preventDefault();
        $("<li>Another row</li>").appendTo("ul").hide().slideDown();
    );
);

【讨论】:

【参考方案3】:

用 jQuery 试试这样的东西

JSIFFLDE

$("body").click(function(e)
    e.preventDefault();
    $("ul").append("<li>Another row</li>");
    $("ul li").slideDown();
);

编辑

我添加了缓动“easeOutBounce”所以它看起来像是从上层元素掉下来

JSFIDDLE

【讨论】:

以上是关于当 div 内容改变和 div 增长时 CSS3 过渡的主要内容,如果未能解决你的问题,请参考以下文章

CSS3改变背景颜色

[学员笔记]CSS3特效第一篇--旋转的背景&翻书效果

如何监听div内容的改变?

Javascript 实现简单的星级评分功能

给div加上padding和border,如何不让div整体改变

css3绘制的图形会不会影响原来的div