国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前端實現文字跑馬燈的三種方式

godlong_X / 2895人閱讀

摘要:前言最近寫了一個文字跑馬燈的項目需求,剛開始用寫,能夠完成需求。代碼部分預覽實現文字跑馬燈小結的方式能夠完美的滿足子需求點和自需求點。

前言

最近寫了一個文字跑馬燈的項目需求,剛開始用js寫,能夠完成需求。后面想著換種方式(分別是html和css)來實現同一個需求,以減少性能消耗。

首先,需求分析:

需求點1.判斷文字的長度和容器的長度,如果文字長度大于容器長度則開始滾動,否則不滾動;

需求點2.判斷滾動滾動的結束,在結束的時間點觸發事件(比如: 增減樣式等操作);

一、JS實現

思路:

1.判斷文字的長度和容器的長度,如果文字長度大于容器長度,則開始滾動,否則不滾動。(offsetWidth)

2.獲取滾動條到元素左邊的距離,遞歸滾動,直到滾動后的距離等于文字的長度退出遞歸。(scrollLeft)

如果不熟悉offsetWidth,scrollLeft,您可以點擊這里offsetWidth、scrollLeft

效果圖

注釋: 文字抖動現象是因為錄制時間過長,ps制作gif文件只能是500幀以下,通過降低幀率才出現了文字抖動。
代碼部分

預覽Demo:JS實現文字跑馬燈

小結

js的方式能夠完美的滿足子需求點1和自需求點2。

判斷文字和容器的長度可以通過offsetWidth來判斷。如果文字長度大于容器長度,則開始滾動。

window.onload=function checkScrollLeft(){
  // 判斷文字長度是否大于盒子長度
  if(boxWidth >= textWidth){ return false}
  content.innerHTML += content.innerHTML
  document.querySelector(".text").classList.add("padding")
  // 更新
  textWidth = document.querySelector(".text").offsetWidth
  // 開始滾動  觸發事件
  toScrollLeft()
}

判斷滾動的結束根據滾動條到元素左邊的距離和文字的長度判斷,如果滾動條到元素左邊的距離等于文字的長度,則結束滾動。

function toScrollLeft(){
  //  如果文字長度大于滾動條距離,則遞歸拖動
  if(textWidth > box.scrollLeft){
    box.scrollLeft++
    setTimeout("toScrollLeft()", 18);
  }
  else{
    // 滾動結束 觸發事件
  }
}
二、HTML實現

效果圖:

代碼部分:

  1.文字如果超出了寬度自動向左滾動文字如果超出了寬度自動向左滾動。

非常簡潔的代碼~、~

marquee的API

雖然marquee標簽的api十分豐富,但是該標簽在MDN上是這樣描述的:

This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.

元素已經過時,請不要再使用。盡管一些瀏覽器仍然支持它,但它不是必須的。此外,使用這個元素基本上是你可以對你的用戶做最糟糕的事情之一,所以請不要這樣做。

所以,根據咱們IT圈內的緊跟文檔標準的原則,對marquee標簽,我們在項目中請盡量不要使用

三、CSS實現

效果圖

代碼部分

預覽Demo: CSS實現文字跑馬燈

小結

CSS能滿足子需求點1,能夠判斷什么時候開始滾動。

window.onload=function checkScrollLeft(){
  // 判斷文字長度是否大于盒子長度
  if(textWidth > wrapWidth) {
    // 開始滾動  觸發事件
    text.style.paddingRight = "300px"
    cont.style.left = "-870px"
  }
}

同時,也能滿足子需求點2,判斷滾動的結束。

// 滾動結束
document.addEventListener("transitionend", function (){
    console.log("end")
}, false)
結語

回顧需求

需求點1.判斷文字的長度和容器的長度,如果文字長度大于容器長度則開始滾動,否則不滾動;

需求點2.判斷滾動滾動的結束,在結束的時間點觸發事件(比如: 增減樣式等操作);

實現方式的優劣對比

js實現跑馬燈效果 html實現跑馬燈效果 css實現跑馬燈效果
需求點1 ?? ? ??
需求點2 ?? ? ??
兼容性 ?? ? ?

如果需要滿足需求,js和css都能夠實現。但是考慮到兼容性,css在ios9以下,安卓4.4以下不支持,其他好的解決方案在考慮中。如果你有好的解決方案,歡迎在下方留言與我交流~

另外,css用作單純的展示效果用還是能優先考慮的,比如下方的css無縫滾動

效果圖

代碼部分

預覽Demo css無縫滾動動畫

所以,工具本身沒有優劣之分,什么時候用什么工具。我們要有清晰的思路。

-------------------------華麗的分割線--------------------

關于我

我的github主頁(點擊進入)

我的公眾號(點擊進入)

我的掘金主頁(點擊進入)

我的簡書主頁(點擊進入)

參考

w3c最新標準

HTML_制作滾動字幕_marquee標簽

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/114154.html

相關文章

  • 前端實現文字馬燈三種方式

    摘要:前言最近寫了一個文字跑馬燈的項目需求,剛開始用寫,能夠完成需求。代碼部分預覽實現文字跑馬燈小結的方式能夠完美的滿足子需求點和自需求點。 前言 最近寫了一個文字跑馬燈的項目需求,剛開始用js寫,能夠完成需求。后面想著換種方式(分別是html和css)來實現同一個需求,以減少性能消耗。 首先,需求分析: 需求點1.判斷文字的長度和容器的長度,如果文字長度大于容器長度則開始滾動,否則不滾動;...

    fanux 評論0 收藏0
  • 前端每日實戰:7# 視頻演示如何用純 CSS 創作一個 3D 文字馬燈特效

    摘要:效果預覽按下右側的點擊預覽按鈕在當前頁面預覽,點擊鏈接全屏預覽。可交互視頻教程此視頻是可以交互的,你可以隨時暫停視頻,編輯視頻中的代碼。 showImg(https://segmentfault.com/img/bVbfmGm?w=400&h=303); 效果預覽 按下右側的點擊預覽按鈕在當前頁面預覽,點擊鏈接全屏預覽。 https://codepen.io/zhang-ou/pen/...

    huaixiaoz 評論0 收藏0
  • 前端每日實戰:7# 視頻演示如何用純 CSS 創作一個 3D 文字馬燈特效

    摘要:效果預覽按下右側的點擊預覽按鈕在當前頁面預覽,點擊鏈接全屏預覽。可交互視頻教程此視頻是可以交互的,你可以隨時暫停視頻,編輯視頻中的代碼。 showImg(https://segmentfault.com/img/bVbfmGm?w=400&h=303); 效果預覽 按下右側的點擊預覽按鈕在當前頁面預覽,點擊鏈接全屏預覽。 https://codepen.io/zhang-ou/pen/...

    MrZONT 評論0 收藏0

發表評論

0條評論

godlong_X

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<