使用 :hover 和 :focus 這樣的偽類,我們可以很方便的將元素從一個樣式切換到另一個樣式,而且切換是會有過渡效果。但有時我們想要使用 js 來驅動過渡(即在代碼中觸發過渡)也是可以實現的。
和普通過渡一樣,先建立兩個樣式規則,一個是元素的初始狀態,一個是過渡結束的狀態。然後用 js 在合適的事機修改對應元素的樣式即可。
下面以一個日夜景圖片切換的範例示範:
(1)日景和夜景是兩張圖片疊在一起的。夜景圖初始透明度是0,覆蓋在日景圖上方。
(2)點擊“看夜景”按鈕,夜景圖透明度逐漸從0過渡到1,看起來畫面慢慢變成夜景。
(3)點擊“看日景”按鈕,夜景圖透明度逐漸又從1過渡到0,看起來畫面恢複成日景。
線上範例如下:
<!doctype html>
<html lang="en">
<head>
<title>hangge.com</title>
<style>
img {
position:absolute;
transition: opacity 5s;
-webkit-transition: opacity 5s;
}
.solid {
opacity: 1;
}
.transparent {
opacity: 0;
}
</style>
<script>
function toNight(){
var nightImage = document.getElementById("nightImage");
nightImage.className = "solid";
}
function toDay(){
var nightImage = document.getElementById("nightImage");
nightImage.className = "transparent";
}
</script>
</head>
<body>
<button onclick="toNight()">看夜景</button>
<button onclick="toDay()">看日景</button>
<div>
<img src="day.png" alt="日景"/>
<img src="night.png" alt="夜景" id="nightImage" class="transparent"/>
</div>
</body>
</html>