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

資訊專欄INFORMATION COLUMN

前端實(shí)現(xiàn)文字跑馬燈的三種方式

fanux / 2642人閱讀

摘要:前言最近寫了一個(gè)文字跑馬燈的項(xiàng)目需求,剛開始用寫,能夠完成需求。代碼部分預(yù)覽實(shí)現(xiàn)文字跑馬燈小結(jié)的方式能夠完美的滿足子需求點(diǎn)和自需求點(diǎn)。

前言

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

首先,需求分析:

需求點(diǎn)1.判斷文字的長度和容器的長度,如果文字長度大于容器長度則開始滾動(dòng),否則不滾動(dòng);

需求點(diǎn)2.判斷滾動(dòng)滾動(dòng)的結(jié)束,在結(jié)束的時(shí)間點(diǎn)觸發(fā)事件(比如: 增減樣式等操作);

一、JS實(shí)現(xiàn)

思路:

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

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

如果不熟悉offsetWidth,scrollLeft,您可以點(diǎn)擊這里offsetWidth、scrollLeft

效果圖

注釋: 文字抖動(dòng)現(xiàn)象是因?yàn)殇浿茣r(shí)間過長,ps制作gif文件只能是500幀以下,通過降低幀率才出現(xiàn)了文字抖動(dòng)。
代碼部分

預(yù)覽Demo:JS實(shí)現(xiàn)文字跑馬燈

小結(jié)

js的方式能夠完美的滿足子需求點(diǎn)1和自需求點(diǎn)2。

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

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

判斷滾動(dòng)的結(jié)束根據(jù)滾動(dòng)條到元素左邊的距離和文字的長度判斷,如果滾動(dòng)條到元素左邊的距離等于文字的長度,則結(jié)束滾動(dòng)。

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

效果圖:

代碼部分:

  1.文字如果超出了寬度自動(dòng)向左滾動(dòng)文字如果超出了寬度自動(dòng)向左滾動(dòng)。

非常簡(jiǎn)潔的代碼~、~

marquee的API

雖然marquee標(biāo)簽的api十分豐富,但是該標(biāo)簽在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.

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

所以,根據(jù)咱們IT圈內(nèi)的緊跟文檔標(biāo)準(zhǔn)的原則,對(duì)marquee標(biāo)簽,我們?cè)陧?xiàng)目中請(qǐng)盡量不要使用

三、CSS實(shí)現(xiàn)

效果圖

代碼部分

預(yù)覽Demo: CSS實(shí)現(xiàn)文字跑馬燈

小結(jié)

CSS能滿足子需求點(diǎn)1,能夠判斷什么時(shí)候開始滾動(dòng)。

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

同時(shí),也能滿足子需求點(diǎn)2,判斷滾動(dòng)的結(jié)束。

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

回顧需求

需求點(diǎn)1.判斷文字的長度和容器的長度,如果文字長度大于容器長度則開始滾動(dòng),否則不滾動(dòng);

需求點(diǎn)2.判斷滾動(dòng)滾動(dòng)的結(jié)束,在結(jié)束的時(shí)間點(diǎn)觸發(fā)事件(比如: 增減樣式等操作);

實(shí)現(xiàn)方式的優(yōu)劣對(duì)比

js實(shí)現(xiàn)跑馬燈效果 html實(shí)現(xiàn)跑馬燈效果 css實(shí)現(xiàn)跑馬燈效果
需求點(diǎn)1 ?? ? ??
需求點(diǎn)2 ?? ? ??
兼容性 ?? ? ?

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

另外,css用作單純的展示效果用還是能優(yōu)先考慮的,比如下方的css無縫滾動(dòng)

效果圖

代碼部分

預(yù)覽Demo css無縫滾動(dòng)動(dòng)畫

所以,工具本身沒有優(yōu)劣之分,什么時(shí)候用什么工具。我們要有清晰的思路。

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

關(guān)于我

我的github主頁(點(diǎn)擊進(jìn)入)

我的公眾號(hào)(點(diǎn)擊進(jìn)入)

我的掘金主頁(點(diǎn)擊進(jìn)入)

我的簡(jiǎn)書主頁(點(diǎn)擊進(jìn)入)

參考

w3c最新標(biāo)準(zhǔn)

HTML_制作滾動(dòng)字幕_marquee標(biāo)簽

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/98986.html

相關(guān)文章

  • 前端實(shí)現(xiàn)文字馬燈三種方式

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

    godlong_X 評(píng)論0 收藏0
  • 前端每日實(shí)戰(zhàn):7# 視頻演示如何用純 CSS 創(chuàng)作一個(gè) 3D 文字馬燈特效

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

    huaixiaoz 評(píng)論0 收藏0
  • 前端每日實(shí)戰(zhàn):7# 視頻演示如何用純 CSS 創(chuàng)作一個(gè) 3D 文字馬燈特效

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

    MrZONT 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

fanux

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<