首页 > 其他 > 详细

如何让元素从固定高度到未知高度的变换有动画效果?

时间:2019-12-03 18:23:54      阅读:254      评论:0      收藏:0      [点我收藏+]


    问题来自一个很常见的功能需求: 点击显示更多。为了实现这样的功能需要把元素的初始 CSS 样式设置为一个固定的高度,一般情况下是一行的高度。然后设置overflow: hidden; 当要显示全部文字时就给元素加上一个 height:auto;  此时元素就会根据内部内容自动计算高度并显示全部内容。但是,这样就会有一个问题,此时的高度变换是不会有动画效果的,无论有没有设置 transition: all .3s; 元素就是不会有动画效果,因为 height: auto; 不是一个有效的过渡函数结束值。

    为了解决这个问题,我们必须要给transition 函数一个有效的结束值。而transition 函数所有支持的属性如下:(参考链接:深入理解CSS 属性

   颜色: color background-color border-color outline-color
   位置: background-position left right top bottom
   长度:
   [1]max-height min-height max-width min-width height width
   [2]border-width margin padding outline-width outline-offset
   [3]font-size line-height text-indent vertical-align
   [4]border-spacing letter-spacing word-spacing
   数字: opacity visibility z-index font-weight zoom
   组合: text-shadow transform box-shadow clip
   其他: gradient

   由于我们需要让高度变换具有动画效果,而又不能给出一个具体的高度值,所以可以设置一个max-height, 此时这个max-height 必须要根据具体的情况来设置一个足够安全的值,如果太小了会导致内容显示不全。但是也不能太大,例如,如果设置了max-height:1000px;transition: max-height 1s; 而元素内容的高度只有100px 那么前900毫秒用户是看不到任何动画效果的感觉就像是页面卡住了一样。所以这个值必须要适当才行,根据经验可以比预估的最大高度大个100-200px,过渡动画的时间设置为 0.3s 此时的既有动画效果,用户也基本上感觉不到延迟。

如何让元素从固定高度到未知高度的变换有动画效果?

原文:https://www.cnblogs.com/nunts-yzy/p/11978034.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!