2 回答

TA貢獻1893條經驗 獲得超10個贊
我使用的技巧是使用背景圖像而不是真實圖像。這允許使用一些簡單的 CSS 來為所有內容設置動畫。對于僅 JS 的解決方案,我建議使用 jQuery。
<html>
<head>
<style>
#view {
background-image: url("/pictures/0.png");
transition: background-image 1s;
background-repeat: no-repeat;
width: 100%;
height: 100%;
}
</style>
</head>
<body>
<div id="view"></div>
<script>
const view = document.getElementById("view");
const imageDir = "/pictures/";
const delayInSeconds = 2; //more then #view transition timing
const totalImages = 4; //0.png; 1.png; ...; 4.png;
var i = 0;
const changeImage = () => {
i += Math.floor(Math.random() * (totalImages-1) ) + 1;;
i %= totalImages;
view.style["background-image"] = `url(${imageDir}${i}.png)`;
};
changeImage(); //call immediately without having to wait for delayInSeconds
setInterval(changeImage, delayInSeconds * 1000);
</script>
</body>

TA貢獻1831條經驗 獲得超9個贊
如果你想做動畫,那么我建議你去圖書館尋找幫助。在這里,我使用的是 jQuery,基本上我需要的只是delay()
和fadeOut()
,盡管在大多數其他流行的庫中應該可以找到等價物。
另外:我正在設置z-index
圖像的 ,以便顯示的第一張圖像具有最高的 z-index,第二張圖像是第二高的,依此類推。工作代碼示例...
$('#image1').delay(1000).fadeOut(500);
$('#image2').delay(2000).fadeOut(500);
$('#image3').delay(3000).fadeOut(500);
$('#image4').delay(4000).fadeOut(500);
$('#image5').delay(5000).fadeOut(500);
$('#image6').delay(6000).fadeOut(500);
div {
? position:fixed;
? background-color:white;
? font-size:500%;
}
#image1 {
? z-index:10;
}
#image2 {
? z-index:9;
}
#image3 {
? z-index:8;
}
#image4 {
? z-index:7;
}
#image5 {
? z-index:6;
}
#image6 {
? z-index:5;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="image1">??</div>
<div id="image2">??</div>
<div id="image3">??</div>
<div id="image4">??</div>
<div id="image5">??</div>
<div id="image6">??</div>
添加回答
舉報