微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何创建可拖动、可缩放的时间轴,用户可以在其中拖动到网站上的特定日期?

如何解决如何创建可拖动、可缩放的时间轴,用户可以在其中拖动到网站上的特定日期?

我想实现类似于此处显示的时间表的内容timeline1 timeline2

在时间线 1 中,用户可以拖动时间线并单击其中的日期以将其选中。

在时间线 2 中,用户拖动时间线本身,并根据显示的时间线中间选择日期。两个时间线都是可缩放的。

我已经搜索了很多具有此功能的 javascript 库,但到目前为止还没有找到任何东西。有谁知道这样的库,或者像示例中那样实现时间线的方法

非常感谢您的帮助。

解决方法

一种方法是像这样自定义 <input type="range">

html,body{
  margin:0;
}

input[type='range'] {
  overflow: hidden;
  width: 90%;
  -webkit-appearance: none;
  background-color: white;
  border:2px solid;
  height:40px;
  background-image:url(https://i.stack.imgur.com/IXatz.png); /* this is the background for the slider,replace with an image of the track */
}

input[type='range']::-webkit-slider-runnable-track {
  -webkit-appearance: none;
  color: white;
  margin-top: -1px;
}

input[type='range']::-webkit-slider-thumb {
  width: 44.5px;
  -webkit-appearance: none;
  height: 50px;
  cursor: ew-resize;
  background-image: url(https://i.stack.imgur.com/iOhn7.png); /* this is the image of the dragbar thumb */
}
<input type="range">

一种更好的方法是将它与井号和标签一起使用:

<input type="range" list="tickmarks">

<datalist id="tickmarks">
  <option value="0" label="0%"></option>
  <option value="10"></option>
  <option value="20"></option>
  <option value="30"></option>
  <option value="40"></option>
  <option value="50" label="50%"></option>
  <option value="60"></option>
  <option value="70"></option>
  <option value="80"></option>
  <option value="90"></option>
  <option value="100" label="100%"></option>
</datalist>

遗憾的是,对此功能的支持有限。具体(来自 MDN):

目前,没有浏览器完全支持这些功能。例如,Firefox 根本不支持哈希标记和标签,而 Chrome 支持哈希标记但不支持标签。 Chrome 66 (66.0.3359.181) 版本支持标签,但 <datalist> 标签必须使用 CSS 设置样式,因为其 display 属性默认设置为 none,隐藏标签。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。