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

目录
相关文章
|
5月前
|
自然语言处理 前端开发 JavaScript
用 通义灵码 一键生成“水波纹按钮”,连 CSS 动画都不用自己写了!
通义灵码是一款智能编程辅助工具,它可以根据自然语言指令自动生成高质量的代码。例如,只需输入“生成一个按钮,点击时带水波纹动画,模拟 Material Ripple 效果”,它就能生成具备完整交互逻辑、CSS 动画和良好性能的按钮组件。不仅如此,它还支持拓展功能,如长按触发提示、添加图标等,并能自动优化样式适配不同场景。通过通义灵码,开发者可以大幅提升效率,专注于创意实现,而不必纠结于繁琐的代码细节。
|
10月前
|
前端开发 JavaScript
CSS 过渡和动画
CSS过渡和动画是用于为网页元素添加动态效果的两种重要技术
515 143
|
2月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
Animation属性 css3为Animation动画提供的几个属性如下: 属性名 属性值 animation-name 指定动画名称,该属性指定一个已有的关键帧定义。 animation-duration 指定动画持续时间。 animation-timing-funtion 指定动画变化速度。 animation-delay 指定动画延迟多长时间才开始执行。 animation-iteration-count 指定动画的循环执行次数。 animation:这是一个复合属性。
235 1
|
机器学习/深度学习 前端开发 JavaScript
CSS动画知识点
CSS动画知识点
|
11月前
css3 svg制作404页面动画效果HTML源码
css3 svg制作404页面动画效果HTML源码
240 34
|
移动开发 前端开发 JavaScript
除了 CSS3,还有哪些技术可以实现动画效果?
除了 CSS3,还有哪些技术可以实现动画效果?
389 63
|
JavaScript 前端开发
CSS3 动画和 JavaScript 动画的性能比较
具体的性能表现还会受到许多因素的影响,如动画的复杂程度、浏览器的性能、设备的硬件条件等。在实际应用中,需要根据具体情况选择合适的动画技术。
|
Web App开发 前端开发 JavaScript
如何在不牺牲动画效果的前提下,优化 CSS3 动画的性能?
如何在不牺牲动画效果的前提下,优化 CSS3 动画的性能?
755 58
|
11月前
jQuery+CSS3实现404背景游戏动画源码
jQuery+CSS3实现404背景游戏动画源码
184 22
|
前端开发 搜索推荐 UED
实现 CSS 动画效果的兼容性
【10月更文挑战第16天】实现 CSS 动画效果的兼容性需要对不同浏览器的特性有深入的了解,并采取适当的策略和方法。通过不断的实践和优化,你可以在各种浏览器上创造出流畅、美观且兼容的动画效果,为用户带来更好的体验。在实际开发中,要密切关注浏览器的发展动态,及时掌握最新的兼容性技巧和解决方案,以确保你的动画设计能够在广泛的用户群体中得到良好的呈现。
352 58

热门文章

最新文章

  • 1
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(九):强势分析Animation动画各类参数;从播放时间、播放方式、播放次数、播放方向、播放状态等多个方面,完全了解CSS3 Animation
    235
  • 2
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(八):学习transition过渡属性;本文学习property模拟、duration过渡时间指定、delay时间延迟 等多个参数
    225
  • 3
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(七):学习ransform属性;本文学习 rotate旋转、scale缩放、skew扭曲、tanslate移动、matrix矩阵 多个参数
    164
  • 4
    (CSS)使用Flex布局,帮助你快速了解各种基本的Flex布局属性以及帮你让元素快速达到布局中的指定位置!
    133
  • 5
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(六):全方面分析css的Flex布局,从纵、横两个坐标开始进行居中、两端等元素分布模式;刨析元素间隔、排序模式等
    275
  • 6
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(五):背景属性;float浮动和position定位;详细分析相对、绝对、固定三种定位方式;使用浮动并清除浮动副作用
    408
  • 7
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(四):元素盒子模型;详细分析边框属性、盒子外边距
    176
  • 8
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
    112
  • 9
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
    190
  • 10
    【CSS】前端三大件之一,如何学好?从基本用法开始吧!(一):CSS发展史;CSS样式表的引入;CSS选择器使用,附带案例介绍
    261