【发布时间】:2016-04-22 17:18:41
【问题描述】:
我正在尝试创建一个显示电视节目名称和节目持续时间的简单应用。我需要做的是根据时间改变跨度的宽度。如果节目已经开始,用户应该会看到一个彩色进度条,并且它的宽度应该是时间线的某个百分比。
// this is a very simplified version of the json I'm getting
var data = { "showName":"Batman Begins", "duration":"141", "startTime":"22 January 2016 17:30:00" };
function showProgress(){
var timeline = $('.timeline');
var duration = data.duration; // time in minutes. Getting this from a json
var timelineSection = 100 / duration;
var maxWidth = 100;
var increment = timelineSection;
var now = Math.floor($.now() / 1000); // UNIX timestamp for current date and time
var startTime = Date.parse(data.startTime) / 1000; // UNIX timestamp for showtime
var timer = setInterval(function(){
$('.timeline').css({ 'width' : timelineSection + '%' });
timelineSection = timelineSection + increment; // doing this to keep the incrementation same everytime
if (timelineSection > maxWidth) {
clearInterval(timer);
$('.timeline').css({ 'width' : timelineSection + '%' });
}
}, 1000); // running every second instead of minute for demo purposes
}
$(document).ready(function(){
$('.showName').html(data.showName);
$('.startTime').html(data.startTime);
showProgress();
});
.wrapper {
margin: auto;
width: 500px;
}
.timeline-container {
background: #bbb;
}
.timeline {
background: green;
height: 20px;
margin: 0 0 10px;
max-width: 100%;
transition: all 200ms linear;
width: 0%;
}
.example-timeline {
background: green;
height: 20px;
margin: 0 0 10px;
max-width: 100%;
transition: all 200ms linear;
}
.example-timeline.half { width: 50%; }
.example-timeline.twothirds { width: 66.6666%; }
.example-timeline.onethird { width: 33.3333%; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
<h1 class="showName"></h1>
<p class="description">Show starting at: <span class="startTime"></span></p>
<div class="timeline-container">
<div class="timeline"></div>
<div class="example-timeline half"></div>
<div class="example-timeline twothirds"></div>
<div class="example-timeline onethird"></div>
</div>
</div>
如果节目已经开始,我似乎无法弄清楚如何正确显示时间线。请参阅 sn-p 中的示例时间线。我有一个节目开始的倒计时时钟,当节目开始显示时间线时它会隐藏起来,而且效果很好。
我真的希望有人可以帮助我:)
【问题讨论】:
-
您的预期结果是什么?
-
@mylee 我需要时间线来匹配电视节目的当前时间和持续时间。如果电视节目从 17:30 开始,而用户在 17:45 检查我的应用,那么时间线的宽度应该与节目的经过时间相匹配。
标签: javascript jquery html css time