css3實現一個寬高未知的div的slidedown動畫
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;
相關文章
- css如何實現未知寬高div中圖片垂直水平居中效果CSS
- js實現未知寬高的元素在指定元素中垂直水平居中JS
- 如何使用純CSS實現固定寬高比div?CSS
- css面試題實現元素垂直水平居中-包括未知寬高的元素五種回答CSS面試題
- 10種CSS3實現的loading動畫,挑一個走吧?CSSS3動畫
- css3實現顫動的動畫CSSS3動畫
- 一個聖誕動畫的實現動畫
- 純css實現長寬等比例的divCSS
- CSS3動畫方式改變div元素的尺寸CSSS3動畫
- css3實現的簡單動畫效果CSSS3動畫
- CSS3實現的div元素旋轉一定角度效果CSSS3
- 用偽類實現一個div的寬度和高度是固定百分比
- CSS3實現流星動畫CSSS3動畫
- 我的前端元件 —- 16:9固定寬高比例的div前端元件
- 我用 CSS3 實現了一個超炫的 3D 載入動畫CSSS33D動畫
- React div 實現一個 textareaReact
- css3和js實現的大白動畫效果CSSS3JS動畫
- css3高階動畫CSSS3動畫
- 基於css3動畫實現的旅行的小車CSSS3動畫
- css3實現逐幀動畫CSSS3動畫
- css3 實現逐幀動畫CSSS3動畫
- CSS3實現王者匹配時的粒子動畫效果CSSS3動畫
- css3 box-shadow 利用一個div實現紅綠燈圖案CSSS3
- js實現的點選一個div顯示,其他div隱藏效果JS
- 圖片實現寬高比
- CSS子元素居中(父元素寬高已知,子元素未知)CSS
- 探討把一個元素從它所在的div 拖動到另一個div內的實現方法
- 記一個頭像高光動畫的CSS實現動畫CSS
- CSS3實現的div圓角效果程式碼例項CSSS3
- CSS3實現的div陰影效果程式碼例項CSSS3
- CSS3實現的div塊上下左右翻滾效果CSSS3
- css3實現動畫閃爍效果CSSS3動畫
- 純CSS3實現人物跑步動畫CSSS3動畫
- css3實現的loadding載入動畫效果CSSS3動畫
- css3實現的滑鼠懸浮按鈕動畫效果CSSS3動畫
- CSS3 動畫實現12種風格的通知提示CSSS3動畫
- Flutter動畫:用Flutter來實現一個拍手動畫Flutter動畫
- 原生js實現一個DIV的碰撞反彈運動JS