H5制作跑马灯

3,120 阅读3分钟

第一种方式:marquee标签

marquee标签其实就是一个用于制作跑马灯的标签

格式

<marquee>内容</marquee>

属性

marquee标签的属性主要有behavior、bgcolor、direction、width、height、hspace、vspace、loop、scrollamount、scrolldelay等,它们都是可选的

  • width和height属性

width和height属性的作用决定滚动文字在页面中的矩形范围大小宽高,属性值可以为数字或百分比

<marquee width="300" height="100%">`跑马灯内容</marquee>

hspace和vspace属性

这两个属性决定滚动矩形区域跟周围空白区域的距离

<marquee width="300" height="30" vspace="10" hspace="10">跑马灯内容</marquee>
  • align

设定marquee标签内容的对齐方式

属性值 描述
absbottom 绝对底部对齐
absmiddle 绝对中央对齐
baseline 底线对齐
bottom 底部对齐(默认)
left 左对齐
middle 中间对齐
right 右对齐
texttop 顶线对齐
top 顶部对齐
<marquee align="absbottom">绝对底部对齐(与g、p等字母的最下端对齐)。</marquee>
<marquee align="absmiddle">绝对中央对齐。</marquee>
<marquee align="baseline">底线对齐。</marquee>
<marquee align="bottom">底部对齐(默认)。</marquee>
<marquee align="left">左对齐。</marquee>
<marquee align="middle">中间对齐。</marquee>
<marquee align="right">右对齐。</marquee>
<marquee align="texttop">顶线对齐。</marquee>
<marquee align="top">顶部对齐。</marquee>
  • behavior

设定滚动的方式:

属性值 意义
alternate 表示在两端之间来回滚动。
scroll 表示由一端滚动到另一端,会重复。
slide 表示由一端滚动到另一端,不会重复。
<marquee behavior="alternate">表示在两端之间来回滚动。</marquee>
<marquee behavior="scroll">表示由一端滚动到另一端,会重复。</marquee>
<marquee behavior="slide">表示由一端滚动到另一端,不会重复。</marquee>

如果在marquee标签中同时出现了directionbehavior属性,那么scrollslide的滚动方向将依照direction属性中参数的设置

  • bgcolor

活动字幕背景颜色

  • direction

活动字幕的滚动方向

属性值 描述
up 字幕向上滚动
down 字幕向下滚动
left 字幕向左滚动(默认)
right 字幕向右滚动
<marquee direction="up">字幕的滚动方向:向上</marquee>
<marquee direction="down">字幕的滚动方向:向下</marquee>
<marquee direction="left">字幕的滚动方向:向左</marquee>
<marquee direction="right">字幕的滚动方向:向右</marquee>
  • loop 设定滚动的次数,当loop为-1时表示一直滚下去,默认为-1
<marquee loop="-1">我会不停地走。</marquee>
<marquee loop="2">我只走两次哦</marquee>
  • scrollmount

设定字幕的滚动速度,值越大越快,单位pixels

<marquee scrollamount="10">滚动内容</marquee>
  • scrolldelay

设定字幕滚动两次之间的延迟时间,单位为millisecond(毫秒)

值太大会又一步一停顿的效果

<marquee scrolldelay="10">滚动内容</marquee>

事件

下面这两个事件经常用到:

onMouseOut="this.start()":用来设置鼠标移出该区域时继续滚动

onMouseOver="this.stop()":用来设置鼠标移入该区域时停止滚动

<marquee onMouseOut="this.start()" onMouseOver="this.stop()">鼠标移入该区域时停止滚动,鼠标移出该区域时继续滚动</marquee>

marquee标签不是W3C推荐的标签, 在W3C官方文档中也无法查询这个标签, 但是各大浏览器对这个标签的支持非常好

第二种方式:CSS3样式

使用CSS3中的animation属性

<div class="marquee-test"><p>不要只因一次挫败,就放弃你原来决心想达到的目的</p></div>
.marquee-test {
      width: 100%;
      height: 50px;
      overflow: hidden;
      position: relative;
      white-space: nowrap;
}
p {
      position: absolute;
      animation: marquee 10s linear infinite;
}
@keyframes marquee {
      from {
        left: 100%;
      }
      to {
        left: -100%
      }
}
<!--第二种做法-->
<!--
@keyframes marquee {
      from {
        transform: translateX(100%);
      }
      to {
        transform: translateX(-100%);
      }
}
-->