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;
相關文章
- 10種CSS3實現的loading動畫,挑一個走吧?CSSS3動畫
- css3實現顫動的動畫CSSS3動畫
- 記一個頭像高光動畫的CSS實現動畫CSS
- CSS3動畫方式改變div元素的尺寸CSSS3動畫
- 如何使用純CSS實現固定寬高比div?CSS
- CSS3實現流星動畫CSSS3動畫
- css面試題實現元素垂直水平居中-包括未知寬高的元素五種回答CSS面試題
- 原生js實現一個DIV的碰撞反彈運動JS
- css3高階動畫CSSS3動畫
- 探討把一個元素從它所在的div 拖動到另一個div內的實現方法
- 我用 CSS3 實現了一個超炫的 3D 載入動畫CSSS33D動畫
- css3實現逐幀動畫CSSS3動畫
- CSS3實現王者匹配時的粒子動畫效果CSSS3動畫
- 用一個div模擬textarea的實現
- 兩個div,知道其中一個div的高度或寬度,怎麼使另一個div佔滿剩餘的部分.
- css3實現動畫閃爍效果CSSS3動畫
- 使用css3實現小車行駛的動畫效果CSSS3動畫
- 如何使用css3實現一個div設定多張背景圖片?CSSS3
- css3 box-shadow 利用一個div實現紅綠燈圖案CSSS3
- css3動畫實現數字動態增加CSSS3動畫
- CSS3建立簡單的網頁動畫–實現彈跳球動CSSS3網頁動畫
- React div 實現一個 textareaReact
- 我的前端元件 —- 16:9固定寬高比例的div前端元件
- Flutter動畫:用Flutter來實現一個拍手動畫Flutter動畫
- css3實現動畫有幾種方式?CSSS3動畫
- Web前端培訓教程:CSS3動畫怎麼實現的Web前端CSSS3動畫
- 利用SVG和css3實現炫酷的邊框動畫SVGCSSS3動畫
- css3 動畫(一) transitionCSSS3動畫
- 使用css3實現一個斑馬線的效果CSSS3
- 一起動手實現一個js幀動畫庫JS動畫
- 圖片實現寬高比
- CSS3 div水平運動效果CSSS3
- 實現給一個DIV加陰影效果!
- 用canvas實現一個簡單的畫板Canvas
- jQuery中動畫的實現jQuery動畫
- 僅用一個HTML標籤,實現帶動畫的抖音LOGOHTML動畫Go
- 手把手教你實現一個引導動畫動畫
- 一個div運動,鍵盤操控的八個方向