javascript - Accordion 内的莫里斯图显示不正确

标签 javascript php css bootstrap-4 morris.js

bootstrap 4 Accordion 中的莫里斯图无法正常工作。

我正在学习 bootstrap 4 并使用 bootstrap 测试 morris 图表并且能够让它完美地工作。但是当我尝试将图表放入 Accordion 中时,图表无法正确显示并在我调整窗口大小时显示。我尝试了社区的许多建议,但似乎都没有用。尝试使用 shown.bs.collapse 选项,但没有成功。下面是代码。感谢帮助

<!DOCTYPE html>
<html lang="en">
<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>
</head>
<body>

  <div class="container">

  <div id="accordion">
    <div class="card">
      <div class="card-header">
        <a class="card-link" data-toggle="collapse" href="#collapseOne">
          Collapsible Group Item #1
        </a>
      </div>
      <div id="collapseOne" class="collapse show" data-parent="#accordion">
        <div class="card-body">
          <div id="area-chart" ></div>
        </div>
      </div>
    </div>
    <div class="card">
      <div class="card-header">
        <a class="collapsed card-link" data-toggle="collapse" href="#collapseTwo">
        Collapsible Group Item #2
      </a>
      </div>
      <div id="collapseTwo" class="collapse" data-parent="#accordion">
        <div class="card-body">
         <div id="line-chart"></div>
        </div>
      </div>
    </div>
    <div class="card">
      <div class="card-header">
        <a class="collapsed card-link" data-toggle="collapse" href="#collapseThree">
          Collapsible Group Item #3
        </a>
      </div>
      <div id="collapseThree" class="collapse" data-parent="#accordion">
        <div class="card-body">
       <div id="bar-chart" ></div>
        </div>
      </div>
    </div>
  </div>
</div>

</body>
<script type="text/javascript">
  var data = [
      { y: '2014', a: 50, b: 90},
      { y: '2015', a: 65,  b: 75},
      { y: '2016', a: 50,  b: 50},
      { y: '2017', a: 75,  b: 60},
      { y: '2018', a: 80,  b: 65},
      { y: '2019', a: 90,  b: 70},
      { y: '2020', a: 100, b: 75},
      { y: '2021', a: 115, b: 75},
      { y: '2022', a: 120, b: 85},
      { y: '2023', a: 145, b: 85},
      { y: '2024', a: 160, b: 95}
    ],
    config = {
      data: data,
      xkey: 'y',
      ykeys: ['a', 'b'],
      labels: ['Total Income', 'Total Outcome'],
      fillOpacity: 0.6,
      hideHover: 'auto',
      behaveLikeLine: true,
      resize: true,
      pointFillColors:['#ffffff'],
      pointStrokeColors: ['black'],
      lineColors:['gray','red']
  };
config.element = 'area-chart';
Morris.Area(config);
config.element = 'line-chart';
Morris.Line(config);
config.element = 'bar-chart';
Morris.Bar(config);

</script>
</html>

最佳答案

这是Morris在隐藏相关图表时的典型问题,其主要元素的尺寸没有.如果在显示 Accordion 卡片时有关联的事件,您可以使用下面的代码行(此示例用于面积图)调整 <svg> 的大小。和<div id='area-chart'>一样大

$('#area-chart svg').css({width: $('#area-chart').width() });
$('#area-chart svg').css({height: $('#area-chart').height() });

关于javascript - Accordion 内的莫里斯图显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56097945/

相关文章:

javascript - 在 CKeditor 中粘贴自定义标签

html - Bootstrap 网格两列一列多行

javascript - NodeJS : Cannot read property 'hide' of undefined

javascript - 如何在 RXJS retryWhen 内发出/合并另一个可观察值

php - 从 mysql_num_rows 选择查询

javascript - 通过返回 <div> 使用 Ajax/jQuery 加载更多内容

php - 插入数据库时​​字符损坏

javascript - 只允许数字的实时输入文本过滤

html - 响应式设计和带有 float div 的流畅图像

php - 引号内的javascript引号,字符串文字问题