/*
* jQuery liMarquee v 4.6
*
* Copyright 2013, Linnik Yura | LI MASS CODE | http://masscode.ru
* http://masscode.ru/index.php/k2/item/44-limarquee
* Free to use
*
* Last Update 20.11.2014
*/
(function ($) {
var methods = {
init: function (options) {
var p = {
direction: 'left', //Указывает направление движения содержимого контейнера (left | right | up | down)
loop: -1, //Задает, сколько раз будет прокручиваться содержимое. "-1" для бесконечного воспроизведения движения
scrolldelay: 0, //Величина задержки в миллисекундах между движениями
scrollamount: 50, //Скорость движения контента (px/sec)
circular: true, //Если "true" - строка непрерывная
drag: true, //Если "true" - включено перетаскивание строки
runshort: true, //Если "true" - короткая строка тоже "бегает", "false" - стоит на месте
hoverstop: true, //true - строка останавливается при наведении курсора мыши, false - строка не останавливается
inverthover: false, //false - стандартное поведение. Если "true" - строка начинает движение только при наведении курсора
xml: false //Путь к xml файлу с нужным текстом
};
if (options) {
$.extend(p, options);
}
return this.each(function () {
var enterEvent = 'mouseenter';
var leaveEvent = 'mouseleave';
if (p.inverthover) {
enterEvent = 'mouseleave';
leaveEvent = 'mouseenter';
}
var loop = p.loop,
strWrap = $(this).addClass('str_wrap').data({ scrollamount: p.scrollamount }),
fMove = false;
var strWrapStyle = strWrap.attr('style');
if (strWrapStyle) {
var wrapStyleArr = strWrapStyle.split(';');
var startHeight = false;
for (var i = 0; i < wrapStyleArr.length; i++) {
var str = $.trim(wrapStyleArr[i]);
var tested = str.search(/^height/g);
if (tested != -1) {
startHeight = parseFloat(strWrap.css('height'));
}
}
}
var code = function () {
strWrap.off('mouseleave');
strWrap.off('mouseenter');
strWrap.off('mousemove');
strWrap.off('mousedown');
strWrap.off('mouseup');
if (!$('.str_move', strWrap).length) {
strWrap.wrapInner($('<div>').addClass('str_move'));
}
var strMove = $('.str_move', strWrap).addClass('str_origin'),
strMoveClone = strMove.clone().removeClass('str_origin').addClass('str_move_clone'),
time = 0;
if (!p.hoverstop) {
strWrap.addClass('noStop');
}
var circCloneHor = function () {
strMoveClone.clone().css({
left: '100%',
right: 'auto',
width: strMove.width()
}).appendTo(strMove);
strMoveClone.css({
right: '100%',
left: 'auto',
width: strMove.width()
}).appendTo(strMove);
}
var circCloneVert = function () {
strMoveClone.clone().css({
top: '100%',
bottom: 'auto',
height: strMove.height()
}).appendTo(strMove);
strMoveClone.css({
bottom: '100%',
top: 'auto',
height: strMove.height()
}).appendTo(strMove);
}
if (p.direction == 'left') {
strWrap.height(strMove.outerHeight())
if (strMove.width() > strWrap.width()) {
var leftPos = -strMove.width();
if (p.circular) {
if (!p.xml) {
circCloneHor()
leftPos = -(strMove.width() + (strMove.width() - strWrap.width()));
}
}
if (p.xml) {
strMove.css({
left: strWrap.width()
})
}
var strMoveLeft = strWrap.width(),
k1 = 0,
timeFunc1 = function () {
var fullS = Math.abs(leftPos),
time = (fullS / strWrap.data('scrollamount')) * 1000;
if (parseFloat(strMove.css('left')) != 0) {
fullS = (fullS + strWrap.width());
time = (fullS - (strWrap.width() - parseFloat(strMove.css('left')))) / strWrap.data('scrollamount') * 1000;
}
return time;
},
moveFuncId1 = false,
moveFunc1 = function () {
if (loop != 0) {
strMove.stop(true).animate({
left: leftPos
}, timeFunc1(), 'linear', function () {
$(this).css({
left: strWrap.width()
});
if (loop == -1) {
moveFuncId1 = setTimeout(moveFunc1, p.scrolldelay);
} else {
loop--;
moveFuncId1 = setTimeout(moveFunc1, p.scrolldelay);
}
});
}
};
strWrap.data({
moveId: moveFuncId1,
moveF: moveFunc1
})
if (!p.inverthover) {
moveFunc1();
}
if (p.hoverstop) {
strWrap.on(enterEvent, function () {
$(this).addClass('str_active');
clearTimeout(moveFuncId1);
strMove.stop(true);
}).on(leaveEvent, function () {
$(this).removeClass('str_active');
$(this).off('mousemove');
moveFunc1();
});
if (p.drag) {
strWrap.on('mousedown', function (e) {
if (p.inverthover) {
strMove.stop(true);
}
//drag
var dragLeft;
var dir = 1;
var newX;
liMarquee跑馬燈插件
需积分: 0 79 浏览量
2023-08-17
15:10:46
上传
评论
收藏 6KB ZIP 举报
♛Adonis
- 粉丝: 0
- 资源: 1