我已将一个cytoscape图表合并到一个初始状态为{display:none}
的div中。
当显示div ($('div#id').show())
时,除非用户调整浏览器窗口大小,否则不会显示图表。
我用js控制台查看了css,并意识到画布的初始css是这样的:width: 0px; height: 0px
。
只有在调整浏览器窗口大小时,画布才会继承#cy的宽度和高度:
初始CSS状态:
<div id="cy">
<div style="position: absolute; z-index: 0; overflow: hidden; width: 0px; height: 0px;">**<canvas data-id="layer0-selectbox" width="0" height="0" style="position: absolute; z-index: 5; width: 0px; height: 0px;"></canvas>...
调整浏览器窗口大小时的CSS状态:
<div id="cy"><div style="position: absolute; z-index: 0; overflow: hidden; width: 560px; height: 420px;"><canvas data-id="layer0-selectbox" width="560" height="420" style="position: absolute; z-index: 5; **width: 560px; height: 420px;"**>...
知道为什么会这样吗?你能帮我解决这个问题吗?
答案 0 :(得分:2)
遗憾的是,鉴于DOM如何运作,在这种情况下你不能(单独)使用display: none
。
display: none
混淆维度检测,因此您需要
(1)使用另一个CSS属性,如visibility: hidden
或offpage绝对定位,或
(2)在显示图表时明确调用cy.resize()
。