序言
给大家推荐一个用jQuery编写的滚动字幕程序,有的人也叫跑马灯程序。这个程序相对于传统跑马灯程序增加了文字滚动速度调节、显示一段时间后消失、鼠标移入停止、鼠标移出继续滚动等功能,同时修改了刷新界面时会先闪现一下字幕内容的bug。本程序基于jquery-3.4.0.min.js插件版本,废话不多说,直接上代码。
HTML:
<div id="container_small_tip">
<div id="content_small_tip"></div>
</div>
JS:
$("#content_small_tip")[0].innerHTML = "北京第三区交通委提醒您:道路千万条,安全第一条,行车不规范,亲人两行泪。";
(function ($) {
$.fn.extend({
roll: function (options) {
var defaults = {
speed: 1
};
var options = $.extend(defaults, options);
var speed = (document.all) ? options.speed : Math.max(1, options.speed - 1);
if ($(this) == null) return;
var $container = $(this);
var $content = $("#content_small_tip");
var init_left = $container.width();
$content.css({ left: parseInt(init_left) + "px" });
var This = this;
var time = setInterval(function () { This.move($container, $content, speed); }, 20); //setInterval会改变this指向,即使加了This=this,也要用匿名函数封装
$container.bind("mouseover", function () {
clearInterval(time);
});
$container.bind("mouseout", function () {
time = setInterval(function () { This.move($container, $content, speed); }, 20);
});
// setTimeout(function () { $("#container").slideUp(); }, 30000); //毫秒单位,显示30s后消失
return this;
},
move: function ($container, $content, speed) {
var container_width = $container.width();
var content_width = $content.width();
if (parseInt($content.css("left")) + content_width > 0) {
$content.css({ left: parseInt($content.css("left")) - speed + "px" });
$content.css({color:"#02A0E9"})//改变字体颜色
}
else {
$content.css({ left: parseInt(container_width) + "px" });
$content.css({color:"#02A0E9"})//改变字体颜色
}
}
});
})(jQuery);
//插件的调用$("#yourId").roll({speed:#yourSpeed});
$(document).ready(
function () {
$("#container_small_tip").roll({ speed: 2 });
}
);
CSS:
#container_small_tip{
background:#EBEEF7;
position:relative;
overflow:hidden;
width:1240px;
height:36px;
line-height:36px;
/* margin:100px; */
}
#content_small_tip{
position:absolute;
left:0;
top:0;
white-space:nowrap;
color: #EBEEF7;/*与背景颜色相同,先隐藏,需要时再变颜色*/
}
解决页面刷新时闪现一下字幕内容的bug,我是将一开始的字体颜色和背景色设置为相同颜色,这样就起到了隐藏的效果(如果没有背景,就直接将字体设置为白色),当滚动时再通过jQuery调用CSS属性改变字体颜色,这样每次刷新就不会闪现一下内容了。
效果
进入时效果
居中时效果
移出时效果
参考链接:https://blog.youkuaiyun.com/cddcj/article/details/52452061