您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# HTML代码怎么制作滚动文字
## 一、滚动文字的基本概念
滚动文字(Marquee Text)是网页中一种经典的动态效果,它能让文字在页面上水平或垂直移动,吸引访问者的注意力。虽然HTML5已不再推荐使用原生`<marquee>`标签,但在许多场景下依然可以通过CSS和JavaScript实现更现代的滚动效果。
### 1.1 Marquee标签的历史
- 1996年随IE3.0引入
- 2007年被W3C标记为废弃
- 现代浏览器仍保留支持但建议使用CSS替代方案
### 1.2 滚动文字的典型应用场景
- 新闻头条跑马灯
- 公告通知栏
- 广告横幅
- 股票行情展示
## 二、使用HTML原生marquee标签
### 2.1 基础语法
```html
<marquee>这里是要滚动的文字内容</marquee>
属性 | 说明 | 示例值 |
---|---|---|
direction | 滚动方向 | left, right, up, down |
behavior | 滚动方式 | scroll, slide, alternate |
scrollamount | 滚动速度(像素) | 1-10 |
scrolldelay | 滚动延迟(毫秒) | 60-200 |
loop | 循环次数 | 数字或infinite |
width/height | 显示区域尺寸 | 200px或50% |
bgcolor | 背景颜色 | #FF0000或red |
<marquee direction="right" behavior="alternate" scrollamount="5"
bgcolor="#f0f0f0" width="80%">
重要通知:本网站将于今晚24:00进行系统升级!
</marquee>
<style>
.marquee {
width: 100%;
overflow: hidden;
white-space: nowrap;
box-sizing: border-box;
animation: marquee 15s linear infinite;
}
@keyframes marquee {
0% { transform: translateX(100%); }
100% { transform: translateX(-100%); }
}
</style>
<div class="marquee">使用CSS3实现的平滑滚动效果,性能更好更流畅</div>
.vertical-marquee {
height: 100px;
overflow: hidden;
animation: verticalScroll 10s linear infinite;
}
@keyframes verticalScroll {
0% { transform: translateY(100%); }
100% { transform: translateY(-100%); }
}
.marquee:hover {
animation-play-state: paused;
}
function startMarquee(element, speed) {
let container = document.querySelector(element);
let content = container.innerHTML;
container.innerHTML = content + content;
let position = 0;
setInterval(() => {
position -= 1;
if (position <= -container.scrollWidth/2) {
position = 0;
}
container.style.transform = `translateX(${position}px)`;
}, speed);
}
startMarquee('.js-marquee', 30);
window.addEventListener('resize', function() {
// 重新计算滚动参数
});
will-change: transform
提升动画性能/* 双倍内容技巧 */
.marquee-content {
display: inline-block;
padding-left: 100%;
animation: marquee 20s linear infinite;
}
.marquee-container {
position: relative;
overflow: hidden;
}
.marquee-container::after {
content: "";
position: absolute;
right: 0;
top: 0;
width: 100px;
height: 100%;
background: linear-gradient(90deg, transparent, white);
}
<div class="news-ticker">
<ul>
<li>央行宣布降准0.5个百分点</li>
<li>全国多地迎来强降雨天气</li>
<li>新能源汽车销量同比增长120%</li>
</ul>
</div>
<style>
.news-ticker {
height: 40px;
line-height: 40px;
background: #333;
color: white;
overflow: hidden;
}
.news-ticker ul {
margin: 0;
padding: 0;
list-style: none;
animation: ticker 20s linear infinite;
}
@keyframes ticker {
0% { transform: translateY(0); }
25% { transform: translateY(-40px); }
50% { transform: translateY(-80px); }
75% { transform: translateY(-120px); }
100% { transform: translateY(0); }
}
</style>
<div class="promo-banner">
<span>限时特惠 | </span>
<span>全场满300减50 | </span>
<span>新用户首单立减20元 | </span>
<span>会员专享折上折</span>
</div>
方案 | IE9+ | Firefox | Chrome | Safari | 移动浏览器 |
---|---|---|---|---|---|
Marquee标签 | ✓ | ✓ | ✓ | ✓ | 部分支持 |
CSS动画 | ✓ | ✓ | ✓ | ✓ | ✓ |
JavaScript | ✓ | ✓ | ✓ | ✓ | ✓ |
// 检测CSS动画支持
if (!CSS.supports('animation', 'name')) {
// 回退到JavaScript实现
}
aria-live
属性<div class="marquee" aria-live="polite">...</div>
<button id="pauseMarquee">暂停滚动</button>
<script>
document.getElementById('pauseMarquee').addEventListener('click', function() {
document.querySelector('.marquee').style.animationPlayState = 'paused';
});
</script>
现代方案优先:推荐使用CSS动画而非<marquee>
标签
性能考量:复杂页面应限制滚动元素数量
用户体验:
代码示例(综合最佳实践):
<div class="modern-marquee" aria-live="polite">
<div class="marquee-content">
<span>这是符合现代Web标准的滚动文字实现方案</span>
</div>
<button class="marquee-control">暂停</button>
</div>
<style>
.modern-marquee {
--speed: 20s;
position: relative;
overflow: hidden;
display: flex;
}
.marquee-content {
display: inline-block;
padding-left: 100%;
will-change: transform;
animation: marquee var(--speed) linear infinite;
}
@keyframes marquee {
0% { transform: translateX(0); }
100% { transform: translateX(-100%); }
}
.marquee-control {
margin-left: 1rem;
flex-shrink: 0;
}
</style>
<script>
document.querySelector('.marquee-control').addEventListener('click', function() {
const content = document.querySelector('.marquee-content');
const isPaused = content.style.animationPlayState === 'paused';
content.style.animationPlayState = isPaused ? 'running' : 'paused';
this.textContent = isPaused ? '暂停' : '继续';
});
</script>
注意:虽然滚动文字能吸引注意力,但过度使用会影响用户体验。建议仅在真正需要强调的内容上使用,并确保不会干扰主要内容的阅读。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。