這次帶給大家用CSS3實現無限循環的無縫滾動效果,CSS3實現無限循環的無縫滾動效果注意事項有哪些,下面就是實戰案例,一起來看一下。
有時候在頁面的某個模組中,需要無限循環的滾動一些訊息。那如果我們用js實現無縫銜接滾動的想法是什麼呢(例如我們這個模組是向上滾動的)?
複製A一份完全一樣的資料B放在原始資料A的後面;
使用setInterval向上捲動A的父級容器;
當向上滾動的距離L正好的A的高度時(L==A.height()),L=0,重新開始滾動,無限循環。
複製一份資料放在後面,是為了當A往上移動時,後面有資料能填補漏出來的空白。當B移動到可視區域的頂部時,此時A剛好移出可視區域,那麼此時將容器重新歸0,用戶是沒有感知的,以為還是B中的第一條數據。然後繼續向上滾動。
1. 使用CSS3來實作
#若要用CSS3的屬性實現的話,非animation莫屬,因為transition是需要手動的觸發,而且不能無限次執行下去,而animation恰好能解決這個問題。
假如資料是在寫死的情況下時,我們完全可以手動複製一份資料放在後面,然後把原始資料的高度寫到css中,實現的想法與上面的一樣:
css:
@keyframes rowup { 0% { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 100% { -webkit-transform: translate3d(0, -307px, 0); transform: translate3d(0, -307px, 0); } } .list{ width: 300px; border: 1px solid #999; margin: 20px auto; position: relative; height: 200px; overflow: hidden; } .list .rowup{ -webkit-animation: 10s rowup linear infinite normal; animation: 10s rowup linear infinite normal; position: relative; }
html:
<p> </p><p> </p><p>1- 121233fffffr国家认可更健康进口价格困扰</p> <p>2- 3123233</p> <p>3- 个人口结构俄跨入国际科技馆客人感觉</p> <p>4- ggrgerg</p> <p>5- fvdgdv</p> <p>6- 德国南部巴士与卡车相撞起火 31人受伤11人死亡朴槿惠庭审时突然昏迷 支持者:她死了法官要负责!</p> <p>7- 外交部再次回应印军越界:要求立即将越界部队撤回</p> <p>8- 德国网红致信默克尔</p> <p>9- 国资委原</p> <p>1- 121233fffffr国家认可更健康进口价格困扰</p> <p>2- 3123233</p> <p>3- 个人口结构俄跨入国际科技馆客人感觉</p> <p>4- ggrgerg</p> <p>5- fvdgdv</p> <p>6- 德国南部巴士与卡车相撞起火 31人受伤11人死亡朴槿惠庭审时突然昏迷 支持者:她死了法官要负责!</p> <p>7- 外交部再次回应印军越界:要求立即将越界部队撤回</p> <p>8- 德国网红致信默克尔</p> <p>9- 国资委原</p>
運行的效果如下:
##2.資料不確定時
在上面的小節中,資料是死的,高度也是寫死到了CSS3中。可是如果從介面取得到的資料個數不定呢,每個資料的長度也不確定,怎麼辦呢? 這裡就需要根據資料來重新計算高度,並寫到CSS裡,可是keyframes修改起來還比較麻煩,那麼我們就用覆蓋的方式來重新keyframes中的數據:// 设置keyframes属性 function addKeyFrames(y){ var style = document.createElement('style'); style.type = 'text/css'; var keyFrames = '\ @-webkit-keyframes rowup {\ 0% {\ -webkit-transform: translate3d(0, 0, 0);\ transform: translate3d(0, 0, 0);\ }\ 100% {\ -webkit-transform: translate3d(0, A_DYNAMIC_VALUE, 0);\ transform: translate3d(0, A_DYNAMIC_VALUE, 0);\ }\ }\ @keyframes rowup {\ 0% {\ -webkit-transform: translate3d(0, 0, 0);\ transform: translate3d(0, 0, 0);\ }\ 100% {\ -webkit-transform: translate3d(0, A_DYNAMIC_VALUE, 0);\ transform: translate3d(0, A_DYNAMIC_VALUE, 0);\ }\ }'; style.innerHTML = keyFrames.replace(/A_DYNAMIC_VALUE/g, y); document.getElementsByTagName('head')[0].appendChild(style); }計算出原始資料A的高度後,執行addKeyFrames 方法,往head中加入css屬性,那麼這裡的rowup就會覆寫之前設定的,每次滾動的距離就是資料A的高度:
function init(){ var data = '塞下秋来风景异,衡阳雁去无留意。四面边声连角起,千嶂里,长烟落日孤城闭。浊酒一杯家万里,燕然未勒归无计。羌管悠悠霜满地,人不寐,将军白发征夫泪。', //样例数据 data_len = data.length, len = parseInt(Math.random()*6)+6, // 数据的长度 html = '<p>'; for(var i=0; i<len>'+i+'- '+data.substr(start, s)+'</len></p>'; } html += ''; document.querySelector('.list .cc').innerHTML = html+html; // 复制一份数据 var height = document.querySelector('.list .ss').offsetHeight; // 一份数据的高度 addKeyFrames( '-'+height+'px' ); // 设置keyframes document.querySelector('.list .cc').className += ' rowup'; // 添加 rowup } init();
3. 橫向滾動
上面講解的都是向上滾動,那麼向左,向右,向下也比較容易理解了,把transform中的值更改為對應的數值即可。4. 總結
使用CSS來進行動畫的展示,會讓頁面顯得更加流暢。如果能用CSS實現,可以嘗試盡量用CSS實現下相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章! 推薦閱讀:以上是以CSS3實現無限循環的無縫滾動效果的詳細內容。更多資訊請關注PHP中文網其他相關文章!

文章討論了CSS FlexBox,這是一種佈局方法,用於有效地對齊和分佈響應設計中的空間。它說明了FlexBox用法,將其與CSS網格進行了比較,並詳細瀏覽了瀏覽器支持。

本文討論了使用CSS創建響應網站的技術,包括視口元標籤,靈活的網格,流體媒體,媒體查詢和相對單元。它還涵蓋了使用CSS網格和Flexbox一起使用,並推薦CSS框架

本文討論了CSS盒裝屬性,該屬性控制了元素維度的計算方式。它解釋了諸如Content-Box,Border-Box和Padding-Box之類的值,以及它們對佈局設計和形式對齊的影響。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

SublimeText3 Linux新版
SublimeText3 Linux最新版

禪工作室 13.0.1
強大的PHP整合開發環境