为啥手动调整 Visjs 时间线图的高度(可调整大小)不起作用?

Posted

技术标签:

【中文标题】为啥手动调整 Visjs 时间线图的高度(可调整大小)不起作用?【英文标题】:Why is manual adjustment of height (resizable) of Visjs timeline chart is not working?为什么手动调整 Visjs 时间线图的高度(可调整大小)不起作用? 【发布时间】:2020-09-19 20:52:42 【问题描述】:

当我运行下面的代码并调整时间线图的高度时,可视化div 正在调整大小,但不是时间线图的高度。在 image1 中,图表显示为可调整大小。我正在尝试调整大小的第二张图像,但时间线图表未调整大小。你能帮我解决这个问题吗?

代码

<!doctype html>

<html lang="en">

<head>

  <meta charset="utf-8">

  <meta name="viewport" content="width=device-width, initial-scale=1">

  <title>jQuery UI Resizable </title>

  <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">

  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>

  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js">
</script>

  <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" />

</head>

<body>
  <div id="visualization"></div>
  <script type="text/javascript">
    // DOM element where the Timeline will be attached
    const container = document.getElementById("visualization");

    // Create a DataSet (allows two way data-binding)
    const items = new vis.DataSet([
       'id': 1, 'content': "item 1", 'start': "2014-04-20" ,
       'id': 2, 'content': "item 2", 'start': "2014-04-14" ,
       'id': 3, 'content': "item 3", 'start': "2014-04-18" ,
       'id': 4, 'content': "item 4", 'start': "2014-04-16", 'end': "2014-04-19" ,
       'id': 5, 'content': "item 5", 'start': "2014-04-25" ,
       'id': 6, 'content': "item 6", 'start': "2014-04-27", 'type': "point" 
    ]);

    // Configuration for the Timeline
    const options = ;

    // Create a Timeline
    const timeline = new vis.Timeline(container, items, options);
    $("#visualization").resizable();
  </script>
</body>

</html>

【问题讨论】:

您应该在问题中指定这是您在使用 Jquery-UI 的可调整大小时遇到​​的 Jquery-UI 问题。我不熟悉可调整大小的功能,但我猜您还需要调整 container 的大小,查看可调整大小的 API,有一个 alsoResize 属性。 api.jqueryui.com/resizable 看看有没有帮助。 谢谢你能告诉我我们如何手动调整上述时间线图的高度(或高度和宽度)? 【参考方案1】:

根据您的图表可视化 div 正在调整大小,但时间线图没有调整大小。 在 jquery 的 resize 方法中使用 timeline chart 的 setOptions 方法/在文件中添加以下小代码-

$("#visualization").resize(function()
 var ht= $(this).height();
 timeline.setOptions(height:ht);
);

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js">
  </script>
  <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css" />
</head>
<body>
  <div id="visualization"></div>
  <script type="text/javascript">
  $(function () 
    const container = document.getElementById("visualization");
    const items = new vis.DataSet([
       'id': 1, 'content': "item 1", 'start': "2014-04-20" ,
       'id': 2, 'content': "item 2", 'start': "2014-04-14" ,
       'id': 3, 'content': "item 3", 'start': "2014-04-18" ,
       'id': 4, 'content': "item 4", 'start': "2014-04-16", 'end': "2014-04-19" ,
       'id': 5, 'content': "item 5", 'start': "2014-04-25" ,
       'id': 6, 'content': "item 6", 'start': "2014-04-27", 'type': "point" 
    ]);

    const options = ;
    const timeline = new vis.Timeline(container, items, options);

    $("#visualization").resizable();

    $("#visualization").resize(function () 
      var ht = $(this).height();
      timeline.setOptions( height: ht );
    );

  );
  </script>
</body>

</html>

【讨论】:

以上是关于为啥手动调整 Visjs 时间线图的高度(可调整大小)不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

canvas图表详解系列:折线图

为可调整大小的 UIView 设置最小和最大宽度和高度

检测单击可调整大小元素的调整大小手柄

Jquery 可调整大小的问题,其中 div 合同的宽度和高度为零

Qt C++ 可调整大小矩形的最小尺寸

为啥 ViewPager 需要手动指定高度?