任意高度元素的展开收缩动画的实现(max-height)

展开收缩动画的实现有多种方式,比如JQuery的slideUp()、slideDown()方法实现;vue框架中可以借助<transition></transition >实现。如果只是通过js实现display的元素属性和none之间的切换,但是没有展开和收缩的动画效果。因此,用css实现该动画效果是比较不错的选择。

1、通常使用css实现收缩效果时,一般就会想到通过height+overflow:hidden实现,但这适用于收缩内容有固定的高度的情况,如果高度auto时是无法实现过渡的动画效果,auto是一个关键值,并非数值。height从0px到auto也是无法计算的。如下代码变不会出现预期的动画效果:
/*css*/  
.main{
            height: 0;
            overflow: hidden;
            transition: height .25s;
            background-color: pink;
 }
 :checked ~ .main{
            height: 100%; /*高度100%和auto都是生硬的效果,给定具体值可以实现动画*/
        }

/* html*/
<input id="check" type="checkbox">
<div class="main">
     <div class="box" style="width: 100%;height: 800px"></div>
</div>
<label for="check" >收缩</label>
2、正确出现预期的动画效果,用max-height实现,代码如下:
/*css*/
        .main{
            max-height: 0;
            overflow: hidden;
            transition: max-height .25s;
            background-color: pink;
        }
        :checked ~ .main{
            max-height: 2000px; /*足够存放内容的高度*/
        }
/*html*/
<input id="check" type="checkbox">
<div class="main">
     <div class="box" style="width: 100%;height: 800px"></div>
</div>
<label for="check" >收缩</label>

####### 3、 推荐一个css网址 https://www.zhangxinxu.com/wordpress/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 注:此方法出自前端技术专家@张鑫旭所著《CSS世界》 “展开收起”效果是网页中比较常见的一种交互方式,通常的做法是...
    阿尔卑斯的隆冬阅读 5,268评论 0 2
  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 1,918评论 0 1
  • 选择qi:是表达式 标签选择器 类选择器 属性选择器 继承属性: color,font,text-align,li...
    love2013阅读 2,346评论 0 11
  • 通过jQuery,您可以选取(查询,query)HTML元素,并对它们执行“操作”(actions)。 jQuer...
    枇杷树8824阅读 672评论 0 3
  • 选择器选择器是jQuery的核心。 事件 动画 扩展
    wyude阅读 491评论 0 1