纯css动画 —— 展开、收起

简介: 纯css动画 —— 展开、收起

在web端,“展开收起”效果一般用jQuery的slideUp()/slideDown()实现

但在移动端,因为CSS3动画支持良好,所以移动端的JavaScript框架都没有动画模块。此时,使用CSS实现动画就成了最佳的技术选型。

最终效果

完整范例代码

<template>
    <div class="box">
        <input id="check" type="checkbox">
        <p>个人觉得,display:table-cell最强的应用是可以任意个数列表的等宽效果。</p>
        <div class="element">
            <p>display:table-cell其他一些应用,例如,两栏自适应布局,垂直居中效果等等都是可以通过其他技术手段模拟出来的,但是,根据列表个数自动等宽的效果,其他CSS是很难模拟的,尤其当需要兼容IE8浏览器的时候。</p>
        </div>
        <label for="check" class="check-in">更多↓</label>
        <label for="check" class="check-out">收起↑</label>
    </div>
</template>
<style scoped>
    /*文本分散对齐*/
    p {
        text-align: justify;
    }
 
    /*限定文本的最大宽度*/
    .box {
        max-width: 300px;
        padding: 10px;
    }
 
    /*隐藏多选框*/
    input[type="checkbox"] {
        display: none;
    }
 
    /*更多和收起按钮的样式*/
    .check-in, .check-out {
        color: #34538b;
        cursor: pointer;
    }
 
    /*默认隐藏收起按钮*/
    .check-out {
        display: none;
    }
    /*选中状态时,显示收起按钮*/
    :checked ~ .check-out {
        display: inline-block;
    }
    /*选中状态时,隐藏更多按钮*/
    :checked ~ .check-in {
        display: none;
    }
 
    /*更多文本的最大高度为0,即不显示*/
    .element {
        max-height: 0;
        overflow: hidden;
        transition: max-height .25s;
    }
 
    /*选中状态时,更多文本的最大高度为666,触发transition过渡动画向下展开显示*/
    :checked ~ .element {
        max-height: 666px;
    }
</style>

核心实现原理

  1. 通过type为checkbox的input多选框的选中状态切换,来改变更多文本的显示和隐藏
  2. 使用css的伪类选择器:checked来获取多选框的选中状态
  3. 通过设定足够大的max-height,可以支持动态的更多文本,但不能太大,否则收起动画会有延迟(远大于真实高度的动画部分,用户感觉不到)

更多细节,详见代码中css部分的注释

目录
相关文章
|
8月前
|
前端开发 JavaScript
CSS 过渡和动画
CSS过渡和动画是用于为网页元素添加动态效果的两种重要技术
264 73
|
12月前
|
机器学习/深度学习 前端开发 JavaScript
CSS动画知识点
CSS动画知识点
|
9月前
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
149 34
|
11月前
|
移动开发 前端开发 JavaScript
除了 CSS3,还有哪些技术可以实现动画效果?
除了 CSS3,还有哪些技术可以实现动画效果?
314 63
|
11月前
|
JavaScript 前端开发
CSS3 动画和 JavaScript 动画的性能比较
具体的性能表现还会受到许多因素的影响,如动画的复杂程度、浏览器的性能、设备的硬件条件等。在实际应用中,需要根据具体情况选择合适的动画技术。
|
11月前
|
Web App开发 前端开发 JavaScript
如何在不牺牲动画效果的前提下,优化 CSS3 动画的性能?
如何在不牺牲动画效果的前提下,优化 CSS3 动画的性能?
499 58
|
9月前
jQuery+CSS3实现404背景游戏动画源码
jQuery+CSS3实现404背景游戏动画源码
122 22
|
12月前
|
前端开发 搜索推荐 UED
实现 CSS 动画效果的兼容性
【10月更文挑战第16天】实现 CSS 动画效果的兼容性需要对不同浏览器的特性有深入的了解,并采取适当的策略和方法。通过不断的实践和优化,你可以在各种浏览器上创造出流畅、美观且兼容的动画效果,为用户带来更好的体验。在实际开发中,要密切关注浏览器的发展动态,及时掌握最新的兼容性技巧和解决方案,以确保你的动画设计能够在广泛的用户群体中得到良好的呈现。
276 58
|
11月前
纯css3实现的百分比渐变进度条加载动画源码
纯css3实现的百分比渐变进度条加载动画特效源码
183 31
|
10月前
|
Web App开发 移动开发 JavaScript
纯CSS3+SVG实现的节日庆祝五彩纸屑动画效果源码
这是一款基于纯CSS3+SVG实现的节日庆祝五彩纸屑动画效果源码。画面中左下角是一个圆锥形礼炮卡通效果,呈现出节日庆祝时礼花爆破、五彩纸屑纷飞的动画特效。整体动画效果采用纯css3+svg实现,没有引入任何外部图形或js脚本元素。建议使用支持HTML5与css3效果较好的火狐(Firefox)或谷歌(Chrome)等浏览器预览本源码。
188 6