css3实现一个宽高未知的div的slidedown动画

需求

slidedown和slideup动画被广泛应用于导航栏的下拉菜单中,过去利用DOM操作配合setInterval或setTimeOut,可以制造出非常方便的slidedown过渡动画。使用js和dom操作时,我们着重强调的宽高未知便不是什么大问题,因为使用js获取一个元素的高度实在是再简单不过的事情了。
但随着vue和react的普及,低效且繁琐的DOM操作已经逐渐退出舞台。而强大的CSS3又提供了非常完整的动画功能,因此对于slidedown这类简单的动画效果,使用css便足以实现。

属性和知识点

max-length
transition

都是很简单的东西,知道该利用什么方式实现,便完成了工作的一半。

代码

header {display: flex;align-items: center;justify-content: center;padding-top: 250px;
}.div {background-color: aqua;transition: all 3.3s;max-height: 0px;overflow: hidden;
}.show {max-height: 300px;
}
import React from 'react';
import './App.css';
import { RefObject } from "react"interface IState {groupEl: any,myRef: RefObject<HTMLUListElement>,styleObj: {},classList : string
}interface IProps {}class App extends React.Component<IProps, IState>{constructor(props: IProps) {super(props);const Ref = React.createRef<HTMLUListElement>();this.state = {groupEl: "",myRef: Ref,styleObj: {},classList : "div"}}handleClick = () => {const count = Math.random() * 10 + 1;let listItem: any[] = [];for (let i = 0; i < count; i++) {listItem.push(<li key={i} onClick = {this.onAlert(1)}>d</li>)}this.setState({ groupEl: listItem ,classList : "div show"});}onAlert:(i:number) => void = (i:number) => {}render() {const { groupEl, myRef,classList} = this.state;return (<div className="App"><header className="App-header"><section><div className={classList}><ul ref={myRef}>{groupEl}</ul></div><button onClick={this.handleClick}>获取li标签</button></section></header></div>);}
}export default App;

css3实现一个宽高未知的div的slidedown动画相关推荐

  1. css 宽高自适应的div 元素 如何居中 垂直居中

    在我们 编写css 样式的时候经常会遇见一个问题 那就是一个 宽高未知的元素 要让他 垂直居中如何实现这个呢 下面是我常用的两种方法 上代码 下面的是 结构代码 <div class=" ...

  2. 【web前端特效源码】使用HTML5+CSS3制作一个会动的音频loading加载动画效果~~适合初学者~超简单~ |前端开发|IT编程

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3制作一个会动的音频loading加载动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTY ...

  3. 【web前端特效源码】使用HTML5+CSS3制作一个会动的不规则斑点边框半径动画的动画效果~~适合初学者~超简单~ |前端开发

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3制作一个会动的不规则斑点边框半径动画的动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCT ...

  4. CSS:仅对子盒子修饰样式,三种让其在父盒子中水平垂直居中的方法及其优缺点(父盒子宽高未知)

    1.给父盒子相对定位,子盒子绝对定位,left,top,right和bottom,都设置为0: position: absolute; left: 0; right: 0; top: 0; botto ...

  5. 宽高未知且居中,内容居左

    父级parent设置position:relative:子级parentBox设置position:absolute:left:0:right:0:overflow:hidden: 上面的设置可使外层 ...

  6. CSS子元素居中(父元素宽高已知,子元素未知)

    <style> .container{width:400px; height:400px; position:relative;} .center{position:absolute; l ...

  7. 宽高不定div水平、垂直居中

    宽高不确定div居中 宽高不定的div水平垂直居中在前端页面布局中经常用到,它能够根据当前页面的大小做到自适应,使页面展示更协调:由于比较重要,因此在前端面试的时候此知识点会经常被问到. 水平垂直居中 ...

  8. 原生图片预览实现及由此引出的图片自适应宽高问题探索

    看到手机相册,突发奇想:能不能用实现一个原生的页面"相册"?或者说,传统网页中怎么实现图片预览功能? 如果在原生网页中使用插件,那必不可少的要引入一堆东西(并不是鄙视插件,只是为了 ...

  9. 如何给行内元素设置宽高

    我们都知道行内元素直接设置宽高是无效的.当我们在面试中遇到这个问题的时候,很容易想到给它设置 display:block或者display:inline-block就可以了,但是面试官来了句" ...

最新文章

  1. 一个隐马尔科夫模型的应用实例:中文分词
  2. 还是这个序列化的解释比较好懂
  3. 中国机器人产业发展报告(2019)正式发布!
  4. numpy 下的数据结构与数据类型的转换(np.array vs. np.asarray)
  5. 《Android开发艺术探索》读书笔记——Cha3.2.2使用动画实现View的滑动
  6. MYSQL创建多张表,相同表结构,不同表名
  7. linux mv 环境变量,linux环境变量 cp mv 以及文档查看的几个命令
  8. damage framework can be used by economics
  9. 【8-22】java学习笔记04
  10. Android项目持续集成之Jenkins的使用
  11. Log Explorer 恢复误删除、更新数据
  12. 通过定制控制在屏幕上显示图片
  13. 关于java中assert(断言)的使用讲解
  14. 轻量级网络模型之EfficientNet
  15. 已解决:录屏软件录不了全屏的问题
  16. 【测试】软件测试的生命周期
  17. SQL中COUNT的用法
  18. selenium三种等待时间之强制等待
  19. 如何截取视频片段 批量截取片段的方法 1
  20. python opencv读mp4视频

热门文章

  1. cmd mysql 指令_MySQL简单指令(CMD)
  2. JavaScript——misc
  3. 4个永久关闭电脑弹窗的方法,99%的人都不知道!
  4. C#中Linq用法汇集
  5. bbsxp2007 漏洞初探
  6. 如何下载和在本地使用Bert预训练模型
  7. html+css+js实现post简易聊天室
  8. python电脑下载什么软件-Python编程软件(专业电脑编程工具)V3.9.1 最新版
  9. 批量图片文字识别OCR场景试用体验-静图变活字,腐朽变神奇
  10. Nj8多计算机精品免费视频下载