データベースからオンラインで見つけたマーキーに動的コンテンツを追加しています。問題は、コンテンツの長さが大きく異なり、スクリプトが適切に機能するために一定の静的な幅が必要なことです。コンテンツをプルしている間に幅を生成する方法を見つけるか、スクリプトでアイテムの幅を自動生成する必要があります。これは、実際にここで見つけた非常に重要なスクリプトです。これがどのように機能するかを確認するためのJSFiddleです。
JSFiddle が気に入らない人のために、簡単な html/css をいくつか示します。
<h1>This runs differently than the ticker for some reason. It's highly annoying in my personal opinion.</h1>
<div id="ticker">
<div class="event">test1</div>
<div class="event">This is Test 2</div>
<div class="event">test3</div>
<div class="event">This is test number 4</div>
</div>
CSS
.event{float: left;}
/* Add width and it will run, sorta fine
.event{width:100px;}
*/
</p>
Jクエリ
(function($) {
$.fn.textWidth = function(){
return $(this).width();
};
$.fn.marquee = function(args) {
var that = $(this);
var $textWidth = that.textWidth(),
offset = that.width(),
width = offset,
css = {
'text-indent' : that.css('text-indent'),
'overflow' : that.css('overflow'),
'white-space' : that.css('white-space')
},
marqueeCss = {
'text-indent' : width,
'overflow' : 'hidden',
'white-space' : 'nowrap'
},
args = $.extend(true, { count: -1, speed: 1e1, leftToRight: false }, args),
i = 0,
stop = $textWidth*-1,
dfd = $.Deferred();
function go() {
if (that.data('isStopped') != 1)
{
if(!that.length) return dfd.reject();
if(width == stop) {
i++;
if(i == args.count) {
that.css(css);
return dfd.resolve();
}
if(args.leftToRight) {
width = $textWidth*-1;
} else {
width = offset;
}
}
that.css('text-indent', width + 'px');
if(args.leftToRight) {
width++;
} else {
width--;
}
}
setTimeout(go, 10);
};
if(args.leftToRight) {
width = $textWidth*-1;
width++;
stop = offset;
} else {
width--;
}
that.css(marqueeCss);
that.data('isStopped', 0);
that.bind('mouseover', function() { $(this).data('isStopped', 1); }).bind('mouseout', function() { $(this).data('isStopped', 0); });
go();
return dfd.promise();
};
})(jQuery);
$('h1').marquee();
$('#ticker').marquee();
最初に考えたのは、マーキーを生成する前に各リスト項目の幅を取得し、幅をインラインに配置することでした。私はそれを行う方法を理解できませんでしたが、しばらく遊んだ後、あきらめました。これは、コンテンツが ajax を介して追加されているWeb サイトへのリンクです。マーキーは上部にあります。少ししたらリンクを外します。何をすべきかについての提案はありますか?