這篇文章主要介紹了原生js如何實現公告滾動效果,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
1、能夠嵌入動態文本于HTML頁面。2、對瀏覽器事件做出響應。3、讀寫HTML元素。4、在數據被提交到服務器之前驗證數據。5、檢測訪客的瀏覽器信息。6、控制cookies,包括創建和修改等。7、基于Node.js技術進行服務器端編程。
具體內容如下
1.html結構
<body> <div id="notice" class="notice"> <ul id="noticeList"> <li>我是公告1</li> <li>我是公告2</li> <li>我是公告3</li> <li>我是公告4</li> </ul> </div> </body>
2.css樣式
<style type="text/css">
body,
div,
ul,
li {
margin: 0;
padding: 0;
}
ul,
li {
list-style: none;
}
.notice {
width: 300px;
height: 30px;
border: 1px solid black;
text-align: center;
overflow: hidden;
}
li {
padding: 3px;
}
</style>3.js行為
<script type="text/javascript">
window.onload = function() {
var notice = document.getElementById("notice");
var noticeList = document.getElementById("noticeList");
// 獲取ul下第一個li元素,好計算li的高度,因為后面滾動的時候每次要滾動一個高度,這里li都是一樣高的,
// 所以獲取第一個的高度就行了,不然要遍歷獲取每一個li的高度。
var noticeFirstItem = noticeList.querySelector("li");
// 獲取li的高度,這里獲取的是offsetHeight,關于js各種高度的定義可以注意以下
var scrollHeight = noticeFirstItem.offsetHeight;
// 是否可以進行動畫
var opt = {
animated: true,
interval: 1000
};
notice.onclick = function() {
// 動畫之前首先重置
// noticeFirstItem.style.transition = "";
noticeFirstItem.style.marginTop = 0;
if (opt.animated) {
opt.animated = false;
animate(noticeList, scrollHeight, opt);
}
};
};
// 動畫函數,obj——要產生動畫的對象,sHeight——每次要滾動的距離,interval——多久滾動一次
function animate(obj, sHeight, option) {
// 當滾到最后一條公告的時候就不用動畫了。
var stopHeight = sHeight - obj.scrollHeight;
var marginTopNum = 0;
var timer = setInterval(function() {
marginTopNum -= sHeight;
obj.style.marginTop = marginTopNum + "px";
obj.style.transition = "margin-top 1.5s ease";
// 注意這里的比較符號,前面得到的高度都進行四舍五入了
if (marginTopNum <= stopHeight) {
clearInterval(timer);
// option.animated = true;
}
}, option.interval);
}
</script>4.運行結果

動畫在進行中時注意控制不能進行其他動畫!
結束語:不要把動畫想得很難,當你想實現復雜的動畫時,比如jquery的animate方法,你可以先實現針對一個屬性的動畫,然后再想辦法擴展到多個屬性(即以對象方式去傳參,然后遍歷對象中的每個樣式屬性,然后給每個樣式屬性添加動畫)。以前都是用js去實現每一幀每一幀的移動,即在肉眼無法反應過來的時間里產生移動,這樣就能產生連續移動的效果,現在css3出來了,可以方便的利用css3來實現過渡效果了,而不用復雜的js來實現了。這個真的太棒了。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“原生js如何實現公告滾動效果”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。