javascript - 具有从右到左水平滚动的每月时间轴网格
问题描述
我想用 Js 在 Bootstrap 中制作一个水平时间轴轮播,我不知道从哪里开始。结构如下所示。请帮忙
我可以使用表格列或列表项来做到这一点。通过单击箭头键,列表从右向左滚动一个月。我没有在互联网上找到类似的代码。
<table width="100%" class="table table-responsive table-bordered">
<tbody>
<tr>
<td width="20%" class=""><div class="stages ready" style="left: 0px;">
<ul class="">
<li data-stage-date="2018-07-01" class="ready" style="width: 480px; left: 0px;">
<div class="interval"> <span class="title">July</span> </div>
<div class="summary" data-open="0% of ₹0 " data-weighted-open="₹0" data-won="₹0" data-value="₹0" data-weighted-summary="₹0" data-percentage="0">
<div class="icon"> <span class="plus" data-summary="₹0" data-weighted-open="₹0" data-open="0% of ₹0 " data-won="₹0">+</span>
<svg class="cui3-icon cui3-icon--s">
<use xlink:href="#icon-sm-weighted" href="#icon-sm-weighted"></use>
</svg>
<span class="number" data-summary="₹0" data-weighted-summary="" data-weighted-open="₹0" data-open="0% of ₹0 " data-won="₹0"></span> </div>
<div class="totalSum"></div>
</div>
</li>
<li data-stage-date="2018-08-01" class="ready" style="width: 480px; left: 480px;">
<div class="interval"> <span class="title">August</span> </div>
<div class="summary" data-open="100% of ₹10,000 " data-weighted-open="₹10,000" data-won="₹0" data-value="₹10,000" data-weighted-summary="₹10,000" data-percentage="100">
<div class="icon"> <span class="plus" data-summary="₹10,000" data-weighted-open="₹10,000" data-open="100% of ₹10,000 " data-won="₹0">+</span>
<svg class="cui3-icon cui3-icon--s">
<use xlink:href="#icon-sm-weighted" href="#icon-sm-weighted"></use>
</svg>
<span class="number" data-summary="₹10,000" data-weighted-summary="" data-weighted-open="₹10,000" data-open="100% of ₹10,000 " data-won="₹0"></span> </div>
<div class="totalSum"></div>
</div>
</li>
<li data-stage-date="2018-09-01" class="ready" style="width: 480px; left: 960px;">
<div class="interval"> <span class="title">September</span> </div>
<div class="summary" data-open="0% of ₹0 " data-weighted-open="₹0" data-won="₹0" data-value="₹0" data-weighted-summary="₹0" data-percentage="0">
<div class="icon"> <span class="plus" data-summary="₹0" data-weighted-open="₹0" data-open="0% of ₹0 " data-won="₹0">+</span>
<svg class="cui3-icon cui3-icon--s">
<use xlink:href="#icon-sm-weighted" href="#icon-sm-weighted"></use>
</svg>
<span class="number" data-summary="₹0" data-weighted-summary="" data-weighted-open="₹0" data-open="0% of ₹0 " data-won="₹0"></span> </div>
<div class="totalSum"></div>
</div>
</li>
<li data-stage-date="2018-10-01" class="ready" style="width: 480px; left: 1440px;">
<div class="interval"> <span class="title">October</span> </div>
<div class="summary" data-open="0% of ₹0 " data-weighted-open="₹0" data-won="₹0" data-value="₹0" data-weighted-summary="₹0" data-percentage="0">
<div class="icon"> <span class="plus" data-summary="₹0" data-weighted-open="₹0" data-open="0% of ₹0 " data-won="₹0">+</span>
<svg class="cui3-icon cui3-icon--s">
<use xlink:href="#icon-sm-weighted" href="#icon-sm-weighted"></use>
</svg>
<span class="number" data-summary="₹0" data-weighted-summary="" data-weighted-open="₹0" data-open="0% of ₹0 " data-won="₹0"></span> </div>
<div class="totalSum"></div>
</div>
</li>
<li data-stage-date="2018-11-01" class="ready" style="width: 480px; left: 1920px;">
<div class="interval"> <span class="title">November</span> </div>
<div class="summary" data-open="0% of ₹0 " data-weighted-open="₹0" data-won="₹0" data-value="₹0" data-weighted-summary="₹0" data-percentage="0">
<div class="icon"> <span class="plus" data-summary="₹0" data-weighted-open="₹0" data-open="0% of ₹0 " data-won="₹0">+</span>
<svg class="cui3-icon cui3-icon--s">
<use xlink:href="#icon-sm-weighted" href="#icon-sm-weighted"></use>
</svg>
<span class="number" data-summary="₹0" data-weighted-summary="" data-weighted-open="₹0" data-open="0% of ₹0 " data-won="₹0"></span> </div>
<div class="totalSum"></div>
</div>
</li>
<li data-stage-date="2018-06-01" class="ready" style="width: 480px; left: -480px;">
<div class="interval"> <span class="title">June</span> </div>
<div class="summary" data-open="0% of ₹0 " data-weighted-open="₹0" data-won="₹0" data-value="₹0" data-weighted-summary="₹0" data-percentage="0">
<div class="icon"> <span class="plus" data-summary="₹0" data-weighted-open="₹0" data-open="0% of ₹0 " data-won="₹0">+</span>
<svg class="cui3-icon cui3-icon--s">
<use xlink:href="#icon-sm-weighted" href="#icon-sm-weighted"></use>
</svg>
<span class="number" data-summary="₹0" data-weighted-summary="" data-weighted-open="₹0" data-open="0% of ₹0 " data-won="₹0"></span> </div>
<div class="totalSum"></div>
</div>
</li>
</ul>
</div></td>
</tr>
</tbody>
</table>
解决方案
我认为你可以这样做一些元素,但这次,我使用了 ul(list)。您可以使用 scrollLeft(jQuery 方法),因此您唯一的工作就是正确设置新位置。
$("scroll content(ul)").scrollLeft("100(new position)");
例如. 我希望这能帮到您。
更新
最后,我将向您展示一个示例。关联
你有SyntaxError: Unexpected token .
,所以请先解决这个错误。只要 JavaScript 运行没有错误,我就可以调试。
ul.animate({
ul.scrollLeft(ul.scrollLeft() + targetMonth.position().left - 15);
}, 200);
↓
ul.animate({
scrollLeft: ul.scrollLeft() + targetMonth.position().left - 15
}, 200);
最后
,首先,添加一些样式和元素#date-list
以确认正常工作。
/* ADDED */
#date-list {
overflow-x: auto;
}
<ul id="date-list" class="d-flex">
<li id="month-1" class="list-group-item">...</li>
<li id="month-2" class="list-group-item">...</li>
<li id="month-3" class="list-group-item">...</li>
<li id="month-4" class="list-group-item">...</li>
<li id="month-5" class="list-group-item">...</li>
<li id="month-6" class="list-group-item">...</li>
<!-- ADDED -->
<li id="month-7" class="list-group-item">...</li>
<li id="month-8" class="list-group-item">...</li>
</ul>
然后,在init进程中添加一个变量并修改一个逻辑。
(如果你应该在数量#date-list li
不是 12 时正确处理)(但我假设你至少有八个项目,因为你有“今天”按钮。)
// ADDED in init process.
var listCount = $("#date-list li").length;
// using it instead of hard cording.
} else if (currentMonth === listCount) {
现在,您可以看到滚动条,让我们不要在您的 css 文件中添加一个类。
(如果您想查看您关注的列表项的突出显示位置。)
.list-group-item.active-month {
color: #31708f;
background-color: #d9edf7;
}
最后,如果您不想显示默认滚动条,我认为最好的简单方法是使用 webkit-scrollbar,但不幸的是,这不适用于 IE。
#date-list::-webkit-scrollbar {
/* Of course, you can also change the scrollbar what it looks. */
display: none;
}
如果您只需要使用 IE11 或 Egde,我推荐Perfect-scrollbar或至少其他插件,而不是自己实现。
如果你需要使用其他版本的IE,我帮不上忙。(我没有环境。)
这是使用.perfect-scrollbar
推荐阅读
- r - 用 R 中的矩阵列表编写一个文本文件
- teradata - 在“comm_pmreadddparse”操作期间收到 uty4014 访问模块错误 35:
- excel - Delphi - 将 ALT 键码传递给 Excel
- chainer - Chainer 模块“cupy.cudnn”没有属性“softmax_forward”
- apache-spark - spark.yarn.jars 和 spark.yarn.archive 都没有设置,回退到上传 SPARK_HOME 下的库吗?
- java - 删除时执行 JPA 托管实体的清理方法
- java - 自定义Java注解引入方法参数和执行代码
- java - 如何调用以 hashmap 作为参数的用户定义方法?
- python - __call__ 装饰器没有通过 self 参数
- prolog - 写一个跳过谓词