发布于 2026-01-06 6 阅读
0

复古HTML,让我们来制作跑马灯吧😃

复古HTML,让我们来制作跑马灯吧😃

我最早学会的HTML技能之一就是用跑马灯效果让文字在屏幕上水平移动。能够用一个简单的标签在页面上创建广告,吸引用户注意,真是太酷了。当然,后来人们滥用了这种效果,就像90年代的宽松牛仔裤一样,在新设计中逐渐过时了。

历史

这个 HTML<marquee>元素用于插入一个可滚动的文本区域。你可以使用它的属性来控制文本到达区域边缘时的行为。当然,我用过去式并不意味着它不再受支持。它虽然已经过时一段时间了,但大多数浏览器仍然支持它。

你可以亲眼见证它的实际效果:

CSS跑马灯

所以我想只用一些方法来模拟这些效果CSS。我们将使用CSS动画并进行一些调整overflow来模拟文本延伸到边缘的效果。

滚动文本

所以,我们来调整一下translateX(),指定动画开始和结束时的内容位置。我们将利用这个参数来保持文本在动画开始和结束时的移动。

动画部分我们将使用持续时间为 10 秒的无限线性动画。

.marquee {
  height: 50px;
  overflow: hidden;
  position: relative;
}
.marquee span {
  font-size: 2em;
  color: turquoise;
  position: absolute;
  width: 100%;
  height: 100%;
  margin: 0;
  line-height: 50px;
  text-align: center;
  transform:translateX(100%);
  animation: cssmarquee 10s linear infinite;
}
@keyframes cssmarquee {
  0% {
  transform: translateX(100%);
  }
  100% {
  transform: translateX(-100%);
  }
}
Enter fullscreen mode Exit fullscreen mode

HTML 代码很简单:

<div class="marquee">
  <span>Scrolling Text </span>
</div>
Enter fullscreen mode Exit fullscreen mode

滑入

现在我们把文本滑入文本,并固定开头的位置。我们将使用ease-out一个200%值来表示translateX起始位置,并使用一个值0%来表示结束位置。

.marquee {
  height: 50px;
  overflow: hidden;
  position: relative;
}
.marquee span {
  font-size: 2em;
  color: green;
  position: absolute;
  width: 100%;
  height: 100%;
  margin: 0;
  line-height: 50px;
  text-align: left;
  animation: cssmarquee 10s ease-out;
}
@keyframes cssmarquee {
  0% {
    transform: translateX(200%);
  }
  100% {
    transform: translateX(0%);
  }
}
Enter fullscreen mode Exit fullscreen mode

为了节省打字时间,我就不再重复HTML代码了😁。代码和上面一模一样。

从左到右

现在我们来把文本从左向右移动。同样,我们translateX第一个例子将使用线性无限动画,但数值要反转。

唯一的区别在于 transform 属性的初始值。

.marquee {
  height: 50px;
  overflow: hidden;
  position: relative;
}
.marquee span {
  font-size: 2em;
  position: absolute;
  width: 100%;
  height: 100%;
  color: green;
  margin: 0;
  line-height: 50px;
  text-align: center;
  /* Starting position */
  transform: translateX(-100%);
  animation: cssmarquee 20s linear infinite;
}
@keyframes cssmarquee {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(100%);
  }
}
Enter fullscreen mode Exit fullscreen mode

垂直滚动

现在你应该能猜到我们将使用什么了。translateX我们将使用,而不是translateY

.marquee {
  height: 100px;
  overflow: hidden;
  position: relative;
}
.marquee span {
  font-size: 2em;
  position: absolute;
  color: green;
  width: 100%;
  height: 100%;
  margin: 0;
  line-height: 50px;
  text-align: center;
  transform: translateY(-100%);
  animation: cssmarquee 5s linear infinite;
}
@keyframes cssmarquee {
  0% {
    transform: translateY(-100%);
  }
  100% {
    transform: translateY(100%);
  }
}
Enter fullscreen mode Exit fullscreen mode

弹跳文本

现在假设当时人们想要一些花哨的效果。这次我们想让文字弹跳起来😃。我们需要改进alternate动画并减少延迟。我们还要添加一些trnslateX设置,防止内容弹跳到页面边缘之外。

.marquee {
  height: 200px;
  overflow: hidden;
  position: relative;
}
.marquee span {
  font-size: 2em;
  position: absolute;
  color: turquoise;
  width: 100%;
  height: 100%;
  margin: 0;
  line-height: 50px;
  text-align: center;
  transform: translateY(70%);
  animation: cssmarquee 1s linear infinite alternate;
}
@keyframes cssmarquee {
  0% {
    transform: translateY(70%);
  }
  100% {
    transform: translateY(0%);
  }
}
Enter fullscreen mode Exit fullscreen mode

打字效果

这次我们想在动画中加入一些步进效果,来营造打字机的效果。我们将使用 `\sigma`fromto`\sigma` 作为关键帧。然后使用 `\sigma`stepsstep-end`\sigma` 来模拟文本和闪烁光标的效果。

body {
  font-family: 'Special Elite', cursive;
  background: #efefef;
  padding-top: 5em;
  display: flex;
  justify-content: center;
}

.typewriter h1 {
  overflow: hidden; 
  border-right: .15em solid green; 
  white-space: nowrap;
  margin: 0 auto; 
  letter-spacing: .15em; 
  animation: 
    type 4s steps(50, end),
    blink-cursor .7s step-end infinite;
}

@keyframes type {
  from { width: 0 }
  to { width: 100% }
}

@keyframes blink-cursor {
  from, to { border-color: transparent }
  50% { border-color: green; }
}
Enter fullscreen mode Exit fullscreen mode

别忘了Special Elite从谷歌字体添加字体。

<head>
  <link href="https://fonts.googleapis.com/css?family=Special+Elite&display=swap" rel="stylesheet">
</head>
Enter fullscreen mode Exit fullscreen mode

概括

就这样吧。你可以回去继续做你正在做的重要工作了。对我来说,放松一下总是好的,希望这对你也有好处😊。下次见👋🏼。

文章来源:https://dev.to/yashints/retro-html-let-s-create-marquees-4n31