方案一:

<marquee width="360" scrolldelay="20" scrollamount="2" onclick="openZoosUrl();return false">这是走马灯实例,这是走马灯实例,这是走马灯实例...</marquee>

方案二:构建jquery插件

走马灯插件:http://aamirafridi.com/jquery/jquery-marquee-plugin.js
(function($) {
$.fn.marquee = function(options) {
return this.each(function() {
var o = $.extend({}, $.fn.marquee.defaults, options), $this = $(this), $marqueeWrapper, containerWidth, animationCss, verticalDir, elWidth, loopCount = 3, playState = 'animation-play-state', css3AnimationIsSupported = !1, _prefixedEvent = function(element, type, callback) {
var pfx = ["webkit", "moz", "MS", "o", ""];
for (var p = 0; p < pfx.length; p++) {
if (!pfx[p])
type = type.toLowerCase();
element.addEventListener(pfx[p] + type, callback, !1)
}
}, _objToString = function(obj) {
var tabjson = [];
for (var p in obj) {
if (obj.hasOwnProperty(p)) {
tabjson.push(p + ':' + obj[p])
}
}
tabjson.push();
return '{' + tabjson.join(',') + '}'
}, _startAnimationWithDelay = function() {
$this.timer = setTimeout(animate, o.delayBeforeStart)
}, methods = {
pause: function() {
if (css3AnimationIsSupported && o.allowCss3Support) {
$marqueeWrapper.css(playState, 'paused')
} else {
if ($.fn.pause) {
$marqueeWrapper.pause()
}
}
$this.data('runningStatus', 'paused');
$this.trigger('paused')
},
resume: function() {
if (css3AnimationIsSupported && o.allowCss3Support) {
$marqueeWrapper.css(playState, 'running')
} else {
if ($.fn.resume) {
$marqueeWrapper.resume()
}
}
$this.data('runningStatus', 'resumed');
$this.trigger('resumed')
},
toggle: function() {
methods[$this.data('runningStatus') == 'resumed' ? 'pause' : 'resume']()
},
destroy: function() {
clearTimeout($this.timer);
$this.find("*").addBack().off();
$this.html($this.find('.js-marquee:first').html())
}
};
if (typeof options === 'string') {
if ($.isFunction(methods[options])) {
if (!$marqueeWrapper) {
$marqueeWrapper = $this.find('.js-marquee-wrapper')
}
if ($this.data('css3AnimationIsSupported') === !0) {
css3AnimationIsSupported = !0
}
methods[options]()
}
return
}
var dataAttributes = {}, attr;
$.each(o, function(key, value) {
attr = $this.attr('data-' + key);
if (typeof attr !== 'undefined') {
switch (attr) {
case 'true':
attr = !0;
break;
case 'false':
attr = !1;
break
}
o[key] = attr
}
});
if (o.speed) {
o.duration = parseInt($this.width(), 10) / o.speed * 1000
}
verticalDir = o.direction == 'up' || o.direction == 'down';
o.gap = o.duplicated ? parseInt(o.gap) : 0;
$this.wrapInner('<div class="js-marquee"></div>');
var $el = $this.find('.js-marquee').css({
'margin-right': o.gap,
'float': 'left'
});
if (o.duplicated) {
$el.clone(!0).appendTo($this)
}
$this.wrapInner('<div style="width:100000px" class="js-marquee-wrapper"></div>');
$marqueeWrapper = $this.find('.js-marquee-wrapper');
if (verticalDir) {
var containerHeight = $this.height();
$marqueeWrapper.removeAttr('style');
$this.height(containerHeight);
$this.find('.js-marquee').css({
'float': 'none',
'margin-bottom': o.gap,
'margin-right': 0
});
if (o.duplicated)
$this.find('.js-marquee:last').css({
'margin-bottom': 0
});
var elHeight = $this.find('.js-marquee:first').height() + o.gap;
if (o.startVisible && !o.duplicated) {
o._completeDuration = ((parseInt(elHeight, 10) + parseInt(containerHeight, 10)) / parseInt(containerHeight, 10)) * o.duration;
o.duration = (parseInt(elHeight, 10) / parseInt(containerHeight, 10)) * o.duration
} else {
o.duration = ((parseInt(elHeight, 10) + parseInt(containerHeight, 10)) / parseInt(containerHeight, 10)) * o.duration
}
} else {
elWidth = $this.find('.js-marquee:first').width() + o.gap;
containerWidth = $this.width();
if (o.startVisible && !o.duplicated) {
o._completeDuration = ((parseInt(elWidth, 10) + parseInt(containerWidth, 10)) / parseInt(containerWidth, 10)) * o.duration;
o.duration = (parseInt(elWidth, 10) / parseInt(containerWidth, 10)) * o.duration
} else {
o.duration = ((parseInt(elWidth, 10) + parseInt(containerWidth, 10)) / parseInt(containerWidth, 10)) * o.duration
}
}
if (o.duplicated) {
o.duration = o.duration / 2
}
if (o.allowCss3Support) {
var elm = document.body || document.createElement('div')
, animationName = 'marqueeAnimation-' + Math.floor(Math.random() * 10000000)
, domPrefixes = 'Webkit Moz O ms Khtml'.split(' ')
, animationString = 'animation'
, animationCss3Str = ''
, keyframeString = '';
if (elm.style.animation !== undefined) {
keyframeString = '@keyframes ' + animationName + ' ';
css3AnimationIsSupported = !0
}
if (css3AnimationIsSupported === !1) {
for (var i = 0; i < domPrefixes.length; i++) {
if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) {
var prefix = '-' + domPrefixes[i].toLowerCase() + '-';
animationString = prefix + animationString;
playState = prefix + playState;
keyframeString = '@' + prefix + 'keyframes ' + animationName + ' ';
css3AnimationIsSupported = !0;
break
}
}
}
if (css3AnimationIsSupported) {
animationCss3Str = animationName + ' ' + o.duration / 1000 + 's ' + o.delayBeforeStart / 1000 + 's infinite ' + o.css3easing;
$this.data('css3AnimationIsSupported', !0)
}
}
var _rePositionVertically = function() {
$marqueeWrapper.css('transform', 'translateY(' + (o.direction == 'up' ? containerHeight + 'px' : '-' + elHeight + 'px') + ')')
}
, _rePositionHorizontally = function() {
$marqueeWrapper.css('transform', 'translateX(' + (o.direction == 'left' ? containerWidth + 'px' : '-' + elWidth + 'px') + ')')
};
if (o.duplicated) {
if (verticalDir) {
if (o.startVisible) {
$marqueeWrapper.css('transform', 'translateY(0)')
} else {
$marqueeWrapper.css('transform', 'translateY(' + (o.direction == 'up' ? containerHeight + 'px' : '-' + ((elHeight * 2) - o.gap) + 'px') + ')')
}
} else {
if (o.startVisible) {
$marqueeWrapper.css('transform', 'translateX(0)')
} else {
$marqueeWrapper.css('transform', 'translateX(' + (o.direction == 'left' ? containerWidth + 'px' : '-' + ((elWidth * 2) - o.gap) + 'px') + ')')
}
}
if (!o.startVisible) {
loopCount = 1
}
} else if (o.startVisible) {
loopCount = 2
} else {
if (verticalDir) {
_rePositionVertically()
} else {
_rePositionHorizontally()
}
}
var animate = function() {
if (o.duplicated) {
if (loopCount === 1) {
o._originalDuration = o.duration;
if (verticalDir) {
o.duration = o.direction == 'up' ? o.duration + (containerHeight / ((elHeight) / o.duration)) : o.duration * 2
} else {
o.duration = o.direction == 'left' ? o.duration + (containerWidth / ((elWidth) / o.duration)) : o.duration * 2
}
if (animationCss3Str) {
animationCss3Str = animationName + ' ' + o.duration / 1000 + 's ' + o.delayBeforeStart / 1000 + 's ' + o.css3easing
}
loopCount++
} else if (loopCount === 2) {
o.duration = o._originalDuration;
if (animationCss3Str) {
animationName = animationName + '0';
keyframeString = $.trim(keyframeString) + '0 ';
animationCss3Str = animationName + ' ' + o.duration / 1000 + 's 0s infinite ' + o.css3easing
}
loopCount++
}
}
if (verticalDir) {
if (o.duplicated) {
if (loopCount > 2) {
$marqueeWrapper.css('transform', 'translateY(' + (o.direction == 'up' ? 0 : '-' + elHeight + 'px') + ')')
}
animationCss = {
'transform': 'translateY(' + (o.direction == 'up' ? '-' + elHeight + 'px' : 0) + ')'
}
} else if (o.startVisible) {
if (loopCount === 2) {
if (animationCss3Str) {
animationCss3Str = animationName + ' ' + o.duration / 1000 + 's ' + o.delayBeforeStart / 1000 + 's ' + o.css3easing
}
animationCss = {
'transform': 'translateY(' + (o.direction == 'up' ? '-' + elHeight + 'px' : containerHeight + 'px') + ')'
};
loopCount++
} else if (loopCount === 3) {
o.duration = o._completeDuration;
if (animationCss3Str) {
animationName = animationName + '0';
keyframeString = $.trim(keyframeString) + '0 ';
animationCss3Str = animationName + ' ' + o.duration / 1000 + 's 0s infinite ' + o.css3easing
}
_rePositionVertically()
}
} else {
_rePositionVertically();
animationCss = {
'transform': 'translateY(' + (o.direction == 'up' ? '-' + ($marqueeWrapper.height()) + 'px' : containerHeight + 'px') + ')'
}
}
} else {
if (o.duplicated) {
if (loopCount > 2) {
$marqueeWrapper.css('transform', 'translateX(' + (o.direction == 'left' ? 0 : '-' + elWidth + 'px') + ')')
}
animationCss = {
'transform': 'translateX(' + (o.direction == 'left' ? '-' + elWidth + 'px' : 0) + ')'
}
} else if (o.startVisible) {
if (loopCount === 2) {
if (animationCss3Str) {
animationCss3Str = animationName + ' ' + o.duration / 1000 + 's ' + o.delayBeforeStart / 1000 + 's ' + o.css3easing
}
animationCss = {
'transform': 'translateX(' + (o.direction == 'left' ? '-' + elWidth + 'px' : containerWidth + 'px') + ')'
};
loopCount++
} else if (loopCount === 3) {
o.duration = o._completeDuration;
if (animationCss3Str) {
animationName = animationName + '0';
keyframeString = $.trim(keyframeString) + '0 ';
animationCss3Str = animationName + ' ' + o.duration / 1000 + 's 0s infinite ' + o.css3easing
}
_rePositionHorizontally()
}
} else {
_rePositionHorizontally();
animationCss = {
'transform': 'translateX(' + (o.direction == 'left' ? '-' + elWidth + 'px' : containerWidth + 'px') + ')'
}
}
}
$this.trigger('beforeStarting');
if (css3AnimationIsSupported) {
$marqueeWrapper.css(animationString, animationCss3Str);
var keyframeCss = keyframeString + ' { 100% ' + _objToString(animationCss) + '}'
, $styles = $marqueeWrapper.find('style');
if ($styles.length !== 0) {
$styles.filter(":last").html(keyframeCss)
} else {
$('head').append('<style>' + keyframeCss + '</style>')
}
_prefixedEvent($marqueeWrapper[0], "AnimationIteration", function() {
$this.trigger('finished')
});
_prefixedEvent($marqueeWrapper[0], "AnimationEnd", function() {
animate();
$this.trigger('finished')
})
} else {
$marqueeWrapper.animate(animationCss, o.duration, o.easing, function() {
$this.trigger('finished');
if (o.pauseOnCycle) {
_startAnimationWithDelay()
} else {
animate()
}
})
}
$this.data('runningStatus', 'resumed')
};
$this.on('pause', methods.pause);
$this.on('resume', methods.resume);
if (o.pauseOnHover) {
$this.on('mouseenter', methods.pause);
$this.on('mouseleave', methods.resume)
}
if (css3AnimationIsSupported && o.allowCss3Support) {
animate()
} else {
_startAnimationWithDelay()
}
})
}
;
$.fn.marquee.defaults = {
allowCss3Support: !0,
css3easing: 'linear',
easing: 'linear',
delayBeforeStart: 1000,
direction: 'left',
duplicated: !1,
duration: 5000,
speed: 0,
gap: 20,
pauseOnCycle: !1,
pauseOnHover: !1,
startVisible: !1
}
}
)(jQuery)

如何编写html:

<div class="marquee">
<div class="js-marquee-wrapper">
<div class="js-marquee">XXXXXX</div>
</div>
</div>

如何创建实例:

$(".marquee").marquee({
speed: 20,
startVisible: !0,
gap: 50,
delayBeforeStart: 1e3,
duplicated: !0
});

关于前端JS走马灯(marquee)总结的更多相关文章

  1. 前端Js框架汇总

    概述: 有些日子没有正襟危坐写博客了,互联网飞速发展的时代,技术更新迭代的速度也在加快.看着Java.Js.Swift在各领域心花路放,也是煞是羡慕.寻了寻.net的消息,也是振奋人心,.net co ...

  2. 闲聊——浅谈前端js模块化演变

    function时代 前端这几年发展太快了,我学习的速度都跟不上演变的速度了(门派太多了,后台都是大牛公司支撑类似于facebook的react.google的angular,angular的1.0还 ...

  3. json处理总结(前端js和后端java)

    前端(js): json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键,下面将介绍两者之间的相互转换. json字符串:var st ...

  4. 前端js文件合并三种方式

    最近在思考前端js文件该如何合并,当然不包括不能合并文件,而是我们能合并的文件,想了想应该也只有三种方式. 三个方式如下: 1. 一个大文件,所有js合并成一个大文件,所有页面都引用它. 2. 各个页 ...

  5. 2015 前端[JS]工程师必知必会

    2015 前端[JS]工程师必知必会 本文摘自:http://zhuanlan.zhihu.com/FrontendMagazine/20002850 ,因为好东东西暂时没看懂,所以暂时保留下来,供以 ...

  6. RSA加密前端JS加密,后端asp.net解密,报异常

    RSA加密前端JS加密,后端asp.net解密,报异常 参考引用:http://www.ohdave.com/rsa/的JS加密库 前端JS加密代码: function GetChangeStr() ...

  7. 前端js的书写规范和高效维护的方案_自我总结使用的方案

    作为程序员,人生最值得幸福的事有几件: 解决困扰了很长时间的问题 升职加薪 找个漂亮又靠谱的对象 深得领导的喜欢 带领团队冲锋陷阵 ... 哈哈,这些都是梦想,暂时想想就好了.这肯定和我说的东西不符合 ...

  8. 前端js,css文件合并三种方式,bat命令

    前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...

  9. 前端js上传文件 到后端接收文件

    下面是前端js代码: <html> <head> <meta http-equiv="Content-Type" content="text ...

随机推荐

  1. Django组件content-type使用方法详解

    前言 参考博客:https://www.zhangshengrong.com/p/zD1yQJwp1r/ 一个表和多个表进行关联,但具体随着业务的加深,表不断的增加,关联的数量不断的增加,怎么通过一开 ...

  2. 12.1 Go nsq

    12.1 Go nsq 1.nsq是Go语言编写的,开源的内存分布式消息队列中间件 2.可以大规模的处理每天数以十亿级别的消息 3.分布式和去中心化拓扑结构,无单点故障 4.地址https://git ...

  3. python3.x 基础八:socket网络编程

    Socket socket就是一直以来说的“套接字”,用于描述:ip:端口,是通信链的句柄,客户端通过这个句柄进行请求和响应 普通文件的操作顺序:打开-读写-关闭,针对的是文件 socket是特殊的文 ...

  4. Struts2导图

  5. Text Reverse(hdu1062)

    输入方式:先输入整数,再循环输入字符串. 思考:字符串中有空格.那么要在字符串大循环输入前,首先,用"getchar()"函数读取scanf_s()函数缓冲区的空格或者空行或者换行 ...

  6. VMware Workstation如何修改弹出释放快捷键

    VMware Workstation默认使用Ctrl+Alt键就可以将鼠标从虚拟机脱离出来. 但有时这2个键可能会和其他软件的快捷键冲突,这时候如何设置快捷键呢: 打开WMware Workstati ...

  7. Thinkphp5 post提交模糊查询带分页如何保留参数

    最近做了一个分页的模糊查询post请求,发现查出来的分页点击下一页导致所有的搜索条件被重置,分页效果就失效了. 以下是网上部分解决办法: 控制器代码 public function index($na ...

  8. 3.CSS字体属性

    CSS Fonts(字体)属性用定义字体系列,大小粗细,和文字样式(如斜体) 3.1字体系列 CSS使用font-family属性定义文本字体系列 p { font-family:'微软雅黑' ;} ...

  9. MySQL递归查询

    MySQL8.0已经支持CTE递归查询,举例说明 CREATE TABLE EMP (EMPNO integer NOT NULL, ENAME ), JOB ), MGR integer, HIRE ...

  10. PAT 1033 To Fill or Not to Fill (25分) 贪心思想

    题目 With highways available, driving a car from Hangzhou to any other city is easy. But since the tan ...