使用css3和js在手機(jī)上實(shí)現(xiàn)簡(jiǎn)單的跑馬燈效果

情況描述

客戶(hù)想在手機(jī)頂部的nav顯示單行文字時(shí),在字?jǐn)?shù)較多,一屏顯示不下的情況下,文字可以滾動(dòng)起來(lái).一開(kāi)始,我是用的php做了一下字?jǐn)?shù)的判斷,如果字?jǐn)?shù)比10個(gè)多就添加一個(gè)<marquee>標(biāo)簽,來(lái)制作這個(gè)滾動(dòng)效果。
選取<marquee>標(biāo)簽這樣的方法,主要是考慮到這樣是能兼容所有的平臺(tái)的絕大部分機(jī)型的。

這里首先做一個(gè)反省,這個(gè)問(wèn)題是要考慮響應(yīng)問(wèn)題的,不是隨意規(guī)定字?jǐn)?shù);這個(gè)問(wèn)題應(yīng)該交給js處理而不是php.

接下來(lái),當(dāng)我以為這樣就大功告成的時(shí)候,設(shè)計(jì)部的同事告訴我說(shuō),客戶(hù)要求,在文字可以滾動(dòng)的情況,滾動(dòng)文字
的開(kāi)頭要從左端開(kāi)始向右滾動(dòng)。但是我在查閱資料后發(fā)現(xiàn),<marquee>標(biāo)簽只能從一端滾動(dòng)到另一端,不能
設(shè)定開(kāi)始滾動(dòng)的位置。

好吧,那我只能先踏上尋找解決方案的征程了~~~(偶也)

解決問(wèn)題的過(guò)程

一開(kāi)始我能想到的首先就是用js來(lái)模擬<marquee>標(biāo)簽,但是我我試了幾個(gè)插件之后都不滿(mǎn)意,因?yàn)槲乙獙?shí)現(xiàn)的僅僅是一個(gè)簡(jiǎn)單的輪播文字的功能,只不過(guò)輪播開(kāi)始的位置的是可以適當(dāng)調(diào)整的.我想到了可以借助css3中的transformtransition外加js就應(yīng)該可以實(shí)現(xiàn)類(lèi)似的效果。但是在做的過(guò)程中發(fā)現(xiàn)有的手機(jī)不支持transform使用百分比,而且transform屬性也會(huì)出現(xiàn)在手機(jī)上模糊的情況,于是就想到了使用position

成果

經(jīng)過(guò)一番努力,demo如下:
點(diǎn)我查看

html:


<div class="device">
<div class="navTitle marquee">
  <div class="get-marquee-width">
    <div class="marquee-move">
    <!-- 這里的span 僅僅是為了獲得問(wèn)題內(nèi)容的長(zhǎng)度用的,也可以換成其他的行內(nèi)元素-->
     <span>我是一個(gè)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)很長(zhǎng)的標(biāo)題</span>
    </div>
  </div>
</div>
</div>

css:

/* 假設(shè).device的寬度是設(shè)備的寬度*/
.device{
  width:320px;
}
.marquee{
    position: relative;
    width: 100%;
    overflow: hidden;
    height: 25px;
}
.marquee > .get-marquee-width{
    position: relative;
}
.marquee> .get-marquee-width > .marquee-move{
    -webkit-animation:  marquee 20s linear 1s infinite;
    -o-animation:  marquee 20s linear 1s infinite;
    animation:  marquee 20s linear 1s infinite;
    position: absolute;
    width:100%;
    padding-left: 50px;
    white-space: nowrap;
}

@-webkit-keyframes marquee {
/*
   
    
*/
    0% { left: 0; }
    5%{left: 0;}
    100% { left: -100%; }
}
@-moz-keyframes marquee {
    0% { left: 0; }
    5%{left: 0;}
    100% { left: -100%; }
}
@-o-keyframes marquee {
    0% { left: 0; }
    5%{left: 0;}
    100% { left: -100%; }
}
@keyframes marquee {
    0% { left: 0; }
    5%{left: 0;}
    100% { left: -100%; }
}

js:

$(function(){
  $(".marquee>div").width($("span").width());//js這里主要獲取到滾動(dòng)內(nèi)容的寬度就可以了
});

demo

PS:

  • 之前主要是使用js去控制類(lèi)的切換,以及循環(huán),現(xiàn)在看起來(lái)就很蠢的辦法,現(xiàn)在主要是用了css的辦法,兼容性也更好一點(diǎn)
  • 在css中有這樣的寫(xiě)法,0% { left: 0; } 5%{left: 0;} 這樣的寫(xiě)的目的是每次動(dòng)畫(huà)之前都有5%(1s)左右的延遲,雖然animation提供了animation-delay但是它只是在動(dòng)畫(huà)的第一次的時(shí)候起作用
  • 測(cè)試過(guò)程中發(fā)現(xiàn),好像有的手機(jī)瀏覽器不支持在@keyframesfrom{left:50px}to{left:-100%}這樣的寫(xiě)法,兩個(gè)賦值的方式不同的話(huà)是不支持的,所以無(wú)奈只能讓left從0開(kāi)始了

opencode給我啟發(fā)的例子:
點(diǎn)我查看

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評(píng)論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,310評(píng)論 3 415
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 175,951評(píng)論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 62,796評(píng)論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,566評(píng)論 6 407
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 55,055評(píng)論 1 322
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評(píng)論 3 440
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 42,303評(píng)論 0 288
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,799評(píng)論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,683評(píng)論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,899評(píng)論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評(píng)論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,135評(píng)論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 34,520評(píng)論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 35,757評(píng)論 1 282
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,528評(píng)論 3 390
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,844評(píng)論 2 372

推薦閱讀更多精彩內(nèi)容

  • 1. tab列表折疊效果 html: 能源系統(tǒng)事業(yè)部 崗位名稱(chēng): 工作地點(diǎn) 崗位名...
    lilyping閱讀 1,879評(píng)論 0 1
  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,774評(píng)論 1 92
  • 旅行對(duì)我來(lái)說(shuō)是到不一樣的地方去體驗(yàn),去吸收新力量的過(guò)程。每一次到一個(gè)新的地方,吸收回來(lái)之后感覺(jué)又是一個(gè)不一樣的自己...
    胡紅梅River閱讀 1,076評(píng)論 12 14
  • 今天從青旅搬走了,換了家homestay,剛買(mǎi)車(chē)的小伙伴送我過(guò)去,小伙伴右駕還不熟,十分驚悚。。這次也要和小伙伴分...
    銀一閱讀 118評(píng)論 2 1
  • 吃完晚飯,我?guī)е鴥鹤釉谛^(qū)里玩,看到一只小麻雀躺在地上。 “小麻雀死了,好可憐啊!”我跟兒子說(shuō)。 “它還能飛起來(lái)嗎...
    楚淑慧閱讀 1,008評(píng)論 0 1