首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从价值到零的最大高度动画

从价值到零的最大高度动画
EN

Stack Overflow用户
提问于 2017-03-16 12:57:44
回答 2查看 2.3K关注 0票数 1

我到处玩CSS-transitions,发现了一些奇怪的东西,将max-height从一个值(例如14px)添加到了none

根本没有动画,隐藏的元素立即出现并消失。

我看到了一个问题,因为none没有高度,很难计算出动画的差异。将none更改为实际值(例如,120px),效果与预期相同。

有什么方法可以在不改变HTML结构的情况下让这个示例工作吗?

代码语言:javascript
复制
$("div").click(function(){
  $(this).toggleClass("unfold");
})
代码语言:javascript
复制
div {
    max-height: 14px;
    overflow: hidden;
    cursor: pointer;
    
    -moz-transition: 1s;
    -ms-transition: 1s;
    -o-transition: 1s;
    -webkit-transition: 1s;
    transition: 1s;
}

div.unfold {
    max-height:none;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div>
First-line<br />
Second<br />
Third<br />
Fourth<br />
More<br />More<br />More<br />More<br />More<br />More<br />More<br />More<br />
</div>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-20 12:50:40

问题是max-height: none CSS-属性。

我可以通过使用JS解决方案和保存元素的scrollHeight来管理这个问题。这是元素的实际高度,不考虑max-height CSS-属性。

代码语言:javascript
复制
var INITIAL_MAX_HEIGHT = 14;

$("div").each(function() {
  var $element = $(this);
  var scrollHeight = $element.prop("scrollHeight");
  $element.css({"max-height": INITIAL_MAX_HEIGHT});

  $element.click(function(){
    var height = $element.height();
    if (height <= INITIAL_MAX_HEIGHT) {
      $element.animate({"max-height": scrollHeight}, 1000);
    } else {
      $element.animate({"max-height": INITIAL_MAX_HEIGHT}, 1000);
    }
  });
});
代码语言:javascript
复制
div {
    overflow: hidden;
    cursor: pointer;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div>
First-line<br />
Second<br />
Third<br />
Fourth<br />
More<br />More<br />More<br />More<br />More<br />More<br />More<br />More<br />
</div>

票数 0
EN

Stack Overflow用户

发布于 2017-03-16 12:59:03

通过动画高度,如果您使用jquery,它有一个名为slideDown的很好的方法,它可以像下面这样做很好的动画。

代码语言:javascript
复制
$("button").click(function(){
  $('div').slideToggle();
})
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>Click me to animate</button>
<div style="display:none">
First-line<br />
Second<br />
Third<br />
Fourth<br />
</div>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42834786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档