使用css3和js在手机上实现简单的跑马灯效果

情况描述

客户想在手机顶部的nav显示单行文字时,在字数较多,一屏显示不下的情况下,文字可以滚动起来.一开始,我是用的php做了一下字数的判断,如果字数比10个多就添加一个<marquee>标签,来制作这个滚动效果。
选取<marquee>标签这样的方法,主要是考虑到这样是能兼容所有的平台的绝大部分机型的。

这里首先做一个反省,这个问题是要考虑响应问题的,不是随意规定字数;这个问题应该交给js处理而不是php.

接下来,当我以为这样就大功告成的时候,设计部的同事告诉我说,客户要求,在文字可以滚动的情况,滚动文字
的开头要从左端开始向右滚动。但是我在查阅资料后发现,<marquee>标签只能从一端滚动到另一端,不能
设定开始滚动的位置。

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

解决问题的过程

一开始我能想到的首先就是用js来模拟<marquee>标签,但是我我试了几个插件之后都不满意,因为我要实现的仅仅是一个简单的轮播文字的功能,只不过轮播开始的位置的是可以适当调整的.我想到了可以借助css3中的transformtransition外加js就应该可以实现类似的效果。但是在做的过程中发现有的手机不支持transform使用百分比,而且transform属性也会出现在手机上模糊的情况,于是就想到了使用position

成果

经过一番努力,demo如下:
点我查看

html:


<div class="device">
<div class="navTitle marquee">
  <div class="get-marquee-width">
    <div class="marquee-move">
    <!-- 这里的span 仅仅是为了获得问题内容的长度用的,也可以换成其他的行内元素-->
     <span>我是一个很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长很长的标题</span>
    </div>
  </div>
</div>
</div>

css:

/* 假设.device的宽度是设备的宽度*/
.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这里主要获取到滚动内容的宽度就可以了
});

demo

PS:

  • 之前主要是使用js去控制类的切换,以及循环,现在看起来就很蠢的办法,现在主要是用了css的办法,兼容性也更好一点
  • 在css中有这样的写法,0% { left: 0; } 5%{left: 0;} 这样的写的目的是每次动画之前都有5%(1s)左右的延迟,虽然animation提供了animation-delay但是它只是在动画的第一次的时候起作用
  • 测试过程中发现,好像有的手机浏览器不支持在@keyframesfrom{left:50px}to{left:-100%}这样的写法,两个赋值的方式不同的话是不支持的,所以无奈只能让left从0开始了

opencode给我启发的例子:
点我查看

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容

  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 1,764评论 0 1
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,630评论 1 92
  • 旅行对我来说是到不一样的地方去体验,去吸收新力量的过程。每一次到一个新的地方,吸收回来之后感觉又是一个不一样的自己...
    胡红梅River阅读 971评论 12 14
  • 今天从青旅搬走了,换了家homestay,刚买车的小伙伴送我过去,小伙伴右駕还不熟,十分惊悚。。这次也要和小伙伴分...
    银一阅读 106评论 2 1
  • 吃完晚饭,我带着儿子在小区里玩,看到一只小麻雀躺在地上。 “小麻雀死了,好可怜啊!”我跟儿子说。 “它还能飞起来吗...
    楚淑慧阅读 887评论 0 1