vertical_3c/modules/text_marquee/_widget3.html.erb

115 lines
2.0 KiB
Plaintext

<div class="marquee-1 marquee-3" module="text_marquee" data-ps="">
<div class="marquee-container">
<ul class="marquee" data-level="0" data-list="texts">
<li>{{content}}</li>
</ul>
</div>
</div>
<style>
.marquee-row{
li{
list-style:none;
a{
color:red;
}
}
}
.marquee-container {
overflow: hidden;
position: relative;
width: 100%;
height: 150px;
}
.marquee {
display: flex;
position: absolute;
white-space: nowrap;
left: 0;
}
.marquee-row {
position: relative;
height: 25px;
overflow: hidden;
}
.marquee-row ul {
display: flex;
position: absolute;
white-space: nowrap;
left: 0;
}
.marquee li {
display: inline-block;
padding-right: 200px;
}
</style>
<script type="text/javascript">
(function(){
var main_div = $("div[data-subpart-id={{subpart-id}}]");
var container = main_div.find(".marquee-container");
var original_ul = main_div.find("ul.marquee");
var items = original_ul.find("li");
if (!items.length) return;
// 清空
container.empty();
// 建立三行
for (var i = 0; i < 3; i++) {
container.append('<div class="marquee-row"><ul></ul></div>');
}
var rows = container.find(".marquee-row ul");
// 平均分配
items.each(function(index){
rows.eq(index % 3).append($(this));
});
// 固定速度(像素/毫秒)
var speed = 0.06; // 數字越大越快,可自行調整
function startMarquee($ul){
var total_width = 0;
$ul.find("li").each(function(){
total_width += $(this).outerWidth(true);
});
// ⭐ 強制在最後再補 100px 空白
total_width += 100;
var containerWidth = container.width();
// 固定速度 → duration = 距離 / 速度
var distance = containerWidth + total_width;
var duration = distance / speed;
$ul.css({
left: containerWidth + 'px'
});
$ul.animate({
left: -total_width + 'px'
}, duration, 'linear', function(){
startMarquee($ul);
});
}
rows.each(function(){
startMarquee($(this));
});
})();
</script>