大数跨境

企业官网顶部公告跑马灯|JS 实现:图标固定、停留延时、边缘渐变、悬浮暂停

企业官网顶部公告跑马灯|JS 实现:图标固定、停留延时、边缘渐变、悬浮暂停 wordpress知识
2026-08-30
20

JS 企业公告跑马灯:解决 CSS 动画交互痛点

官网顶部公告栏是常见组件,虽然 CSS animation 可实现基础跑马灯,但难以处理鼠标悬浮暂停、初始停留等复杂交互。本文分享一套基于 JavaScript 的跑马灯方案,精准解决以下核心痛点:

  • 图标固定:左侧喇叭图标保持静止,不随文字滚动。
  • 智能延时:页面加载后完整展示公告文字,停留 5 秒后自动向左滚动。
  • 柔和渐变:文字滑出右侧时呈现模糊渐变效果,避免生硬切割感。
  • 交互暂停:鼠标悬浮时文字自动暂停,移开后继续滚动。
  • 兼容性强:采用 transform 位移,规避 flex、iframe 及低代码环境下 offsetLeft 取值错乱导致的文字消失 BUG。
  • 无缝循环:文字完全滑出左侧后,自动从右侧重新滑入,实现无限循环。

效果与代码实现

以下是完整的 HTML、CSS 及 JS 代码示例,可直接复制使用:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JS 企业公告跑马灯|修复开头文字模糊</title>
<style>
*{margin:0;padding:0;box-sizing:border-box;}
.marquee-wrap{
    width:100%;
    height:40px;
    line-height:40px;
    background:#fff2e8;
    display:flex;
    align-items:center;
    overflow:hidden;
}
/* 左侧喇叭,固定不动,不受蒙版影响 */
.marquee-icon{
    flex-shrink:0;
    padding:0 12px;
    color:#d4380d;
    font-size:16px;
}
.marquee-outer{
    flex:1;
    overflow:hidden;
    /* 修复:左侧完全不透明,只做右侧渐变模糊,解决开头文字被虚化 */
    -webkit-mask-image: linear-gradient(to right, #000 0%, #000 calc(100% - 25px), transparent 100%);
    mask-image: linear-gradient(to right, #000 0%, #000 calc(100% - 25px), transparent 100%);
    -webkit-mask-size:100% 100%;
    mask-size:100% 100%;
}
.marquee-text{
    display:inline-block;
    white-space:nowrap;
    font-size:14px;
    color:#d4380d;
}
</style>
</head>
<body>

<div class="marquee-wrap">
    <div class="marquee-icon">📢</div>
    <div class="marquee-outer" id="outer">
        <div class="marquee-text" id="txt">企业通知:服务器例行维护,部分功能临时受限,有问题请联系客服!欢迎新老客户咨询业务合作</div>
    </div>
</div>

<script>
const txt = document.getElementById('txt');
const outer = document.getElementById('outer');
let speed = 2;
let offsetX = 0;
let timer = null;

function move(){
    offsetX -= speed;
    if(offsetX < -txt.offsetWidth){
        offsetX = outer.offsetWidth;
    }
    txt.style.transform = `translateX(${offsetX}px)`;
}

//初始静止停留 5 秒后启动滚动
setTimeout(()=>{
    timer = setInterval(move,30);
},5000);

//鼠标悬浮暂停
txt.onmouseover = ()=> clearInterval(timer);
//鼠标离开继续滚动
txt.onmouseout = ()=> timer = setInterval(move,30);
</script>

</body>
</html>

参数快速配置指南

开发者可根据实际需求调整以下关键参数:

  • 初始停留时间:代码中的5000代表毫秒数,可修改为3000(3 秒)或8000(8 秒)等。
  • 滚动速度:变量speed = 2控制速度,数值越大滚动越快。
  • 模糊渐变范围:CSS 中calc(100% - 25px)25px决定右侧模糊区域的宽度,可按需调整。
  • 内容动态化:模板项目中只需替换marquee-text内部的文本,后端可直接输出公告变量。

#前端开发 #JS 实战 #HTML 代码 #跑马灯组件 #企业公告

【声明】内容源于网络
0
0
wordpress知识
各类跨境出海行业相关资讯
内容 336
粉丝 0
wordpress知识 各类跨境出海行业相关资讯
总阅读8.3k
粉丝0
内容336