效果圖
方法:使用定時器讓元素不斷替換及高度變化
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>標題</title>
<link rel="stylesheet" href="../css/reset.css">
<script src="./jquery-3.4.1.min.js"></script>
<style type="text/css">
#box{
width: 202px; height: 32px;
line-height: 30px;
margin: 200px auto;
border: 1px solid #000;
position: relative;
/* overflow: hidden; */
}
#box ul{
width: 100%;
/* border: 1px solid red; */
position: absolute; bottom: -30px; left: 0;
}
#box ul li{
width: 100px; height: 30px;
line-height: 30px;
padding-left: 10px;
}
</style>
<script>
// 滾動播放函數
function gunDongBoFang(){
// 第一個元素高度變成0
var first = $("#box ul li").first().height(0);
// // 把第一個元素追加到父元素中
$("#box ul").append(first);
// 最後一個元素高度慢慢變成30px
// $("#box ul li").last().css("height", "20px");
$("#box ul li").last().animate({height:"30px"}, 1000);
};
// 定時器,每2秒執行一次
setInterval(gunDongBoFang, 2000);
</script>
</head>
<body>
<div id="box">
<ul>
<li>第1條公告...</li>
<li>第2條公告...</li>
<li>第3條公告...</li>
</ul>
</div>
</body>
</html>
優化:鼠標移入停止,移出開始
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>標題</title>
<link rel="stylesheet" href="../css/reset.css">
<script src="./jquery-3.4.1.min.js"></script>
<style type="text/css">
#box{
width: 202px; height: 32px;
line-height: 30px;
margin: 200px auto;
border: 1px solid #000;
position: relative;
overflow: hidden;
}
#box ul{
width: 100%;
/* border: 1px solid red; */
position: absolute; bottom: -30px; left: 0;
}
#box ul li{
width: 100px; height: 30px;
line-height: 30px;
padding-left: 10px;
}
</style>
<script>
$(function(){
// 滾動播放函數
function gunDongBoFang(){
// 第一個元素高度變成0
// var first = $("#box ul li").first().height(0);
// 把第一個元素追加到父元素中
// $("#box ul").append(first);
// 最後一個元素高度慢慢變成30px
// $("#box ul li").last().animate({height:"30px"}, 1000);
// 簡化寫法
$("#box ul").append($("#box ul li").first().height(0).animate({height:"30px"}, 1000));
};
// 定時器,每2秒執行一次
var time = setInterval(gunDongBoFang, 2000);
// 鼠標移入#box元素中,停止定時器
$("#box").mouseenter(function(){
clearInterval(time);
});
// 鼠標移出#box元素後,開始定時器
$("#box").mouseleave(function(){
// setInterval(gunDongBoFang, 1000); 錯誤寫法,鼠標移入移出定時器會累加
//鼠標移出時,開始定時器,並將定時器賦值給time變量,而當鼠標再次移入時,則剛好刪除上次的定時器,不會累加
time = setInterval(gunDongBoFang, 2000);
});
});
</script>
</head>
<body>
<div id="box">
<ul>
<li>第1條公告...</li>
<li>第2條公告...</li>
<li>第3條公告...</li>
</ul>
</div>
</body>
</html>