纯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部分的注释

目录
相关文章
|
2天前
|
前端开发
css 实现一笔画动画(如签名、手写、手绘等)
css 实现一笔画动画(如签名、手写、手绘等)
13 8
|
1天前
|
前端开发
css动画(仿微信聊天页面)
css动画(仿微信聊天页面)
|
2天前
|
前端开发
css特效动画——页面加载中 ...
css特效动画——页面加载中 ...
5 1
|
3天前
|
前端开发 JavaScript 开发者
学习CSS动画的高级技巧
【7月更文挑战第1天】学习CSS动画的高级技巧
8 2
|
3天前
|
前端开发 开发者
通过实践来提升CSS动画技能是非常重要的
【7月更文挑战第1天】通过实践来提升CSS动画技能是非常重要的
7 1
|
3天前
|
前端开发 JavaScript 开发者
如何学习CSS动画?
【7月更文挑战第1天】如何学习CSS动画?
7 1
|
2天前
|
前端开发
css特效动画——转圈的加载动画
css特效动画——转圈的加载动画
5 0
|
2天前
|
前端开发 JavaScript UED
只会用插件可不行,这些前端动画技术同样值得收藏-CSS篇
只会用插件可不行,这些前端动画技术同样值得收藏-CSS篇
|
2天前
|
前端开发 API 开发者
前端 CSS 经典:边框转圈动画效果
前端 CSS 经典:边框转圈动画效果
8 0
|
2天前
|
前端开发
前端 CSS 经典:好看的标题动画
前端 CSS 经典:好看的标题动画
9 0