Javascript AMCharts 通过 ID 引用图表无效

Javascript AMCharts referencing graph via ID not working

使用 AMCharts 可以 select 单个图形通过 css 进行编辑。如果您给图形一个 ID,您应该会看到 class select 或

amcharts-graph-[id]

例如

<g transform="translate(0,0)" class="amcharts-graph-smoothedLine amcharts-graph-g1">

然而,这并不总是以同样的方式工作,我看不出有什么不同。谁能帮帮我?

为澄清起见,我在此处提供了具有完全相同代码的示例。第一个显示 class(您可以通过 css 引用它)第二个不是。

  1. AMCharts 的官方演示:http://www.amcharts.com/demos/intraday-data/
  2. 在 codepen 中打开完全相同的演示(通过单击第一个 link 上的编辑,然后在 codepen 中打开)http://codepen.io/anon/pen/mJoaNB

当您检查图表的元素(绿线)时,您会看到差异。该行的 class 属性在 codepen 示例中丢失(在我的服务器上的所有测试中也是如此)。

如果您在演示(通过单击编辑)和代码笔示例中复制并粘贴完全相同的 css 代码,您会看到更多差异: 第一个会缓和线,第二个不会 - 但有什么区别?

#chartdiv {
    width   : 100%;
    height  : 500px;
}       

.amcharts-graph-g1 .amcharts-graph-stroke {
  stroke-dasharray: 1000%;
  -webkit-animation: css-effect 10s ease-out forwards;
      animation: css-effect 10s ease-out forwards;
}

@-webkit-keyframes css-effect {
  0% {
    stroke-dashoffset: 1000%;
  }
  100% {
    stroke-dashoffset: 0%;
  }
}
@keyframes css-effect {
  0% {
    stroke-dashoffset: 1000%;
  }
  100% {
    stroke-dashoffset: 0%;
  }
}

关于 amCharts 应用带有对象 ID 的 class 名称,你是对的。您错过的是默认情况下未启用它。

要启用此功能,您需要在图表配置中将 addClassNames 设置为 true

var chart = AmCharts.makeChart( "chartdiv", {
  "type": "stock",
  "addClassNames": true,
  // ...
} );

这是相同的演示,应用了上述内容,动画按预期工作:

http://codepen.io/team/amcharts/pen/89720c7ca5b05e8ad8cea239a6fec30e/