工作中經常會寫一些簡單的顯示隱藏功能,可以適當加個動畫
transition(過度動畫,從某某某屬性到某某某屬性)語法
transition: property duration timing-function delay;
值 | 描述 |
---|
transition-property | 規定設置過渡效果的 CSS 屬性的名稱。 |
transition-duration | 規定完成過渡效果需要多少秒或毫秒。 |
transition-timing-function | 規定速度效果的速度曲線。 |
transition-delay | 定義過渡效果何時開始。 |
transform (轉化動畫) 旋轉:rotate()
縮放:scale()
翻轉:skew()
transition和transform 動畫會占文檔流display:none 不占文檔流 block 占文檔流 動畫<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.main{
height: 600px;
color: #fff;
}
.down{
height: 300px;
transform: scaleY(0);
transition: transform 0.8s;
transform-origin: bottom center;
background: #2c275b;
}
.active {
height: 300px;
transform: scaleY(1);
transition: transform 0.8s;
transform-origin: bottom center;
}
.btn{
display: inline-block;
margin-bottom: 20px;
padding: 3px 10px;
border-radius: 5px;
background: #999;
}
</style>
</head>
<body>
<div class="main">
<span class="btn" id="btn">測試</span>
<div class="down">
contentcontentcontentcontentcontentcontent
</div>
</div>
<script>
document.getElementById('btn').addEventListener('click',()=>{
let element = document.getElementsByClassName('down')[0];
addClass(element,'active');
});
function addClass (element,className) {
element.className = element.className.indexOf(className)===-1 ? element.className+' '+className : element.className.replace(' active','') ;
}
</script>
</body>
</html>
- ps:如果使用transform和transition寫動畫可能會出現文檔流的一系列問題,
- 可以使用脫離文檔流的定位(absolute,fixed)來解決這個問題
CSDN 社區圖書館,開張營業!
深讀計劃,寫書評領圖書福利~