gojs 图在 IE11 中不显示

gojs diagram is not shown in IE11

我在gojs中画了图,图在IE11下不显示,其他浏览器显示正常。系统中还有其他图表,一一展示。

包裹图表 (diagram.div) 的 div 的样式:

   position: absolute;
     width: calc (100% - 0.625rem);
     height: 100%;
     z-index: 1000;
     float: right;
     top: 1.25brake;

在 f12 中,我看到 canvas 有 属性: "height=1" 与 canvas 有几百个高度的其他浏览器相比。

如果我将 div 的高度更改为 px 而不是百分比,图表将照常显示。

元素的结构:

   <div class="cabinets-grid">
    <div class="cabinet-unit">
    <cabinet-map>
    <div class="cabinetMap" id="cabinetDiagram">
    <canvas width="231" height="1" style="..."></canvas>
    <div style="..."></div>
    </div>
    </cabinet-map>
<cabinet-map>
...
</cabinet-map>
    </div>
    </div>

scss:

.cabinets-grid
{
display:table;
border-collapse:collapse;
width: calc(100% - 3.438rem);
height:100%;
margin-left: 3.438;
table-layout:fixed;
}
.cabinet-unit
{
display:table-cell;
position:relative;
}
.cabinetMap {
position:absolute;
width:calc(100% - 0.625rem);
height:calc(100% - 1.5rem);
z-index:1000;
float:right;
top:1.25rem;
}

您不能设置 height: 100%,除非您还设置了外部元素以具有适合的高度。

通常但并非总是如此,您只需要添加到您的 CSS:

html, body {
  height:100%;
}

根据Make a DIV fill an entire table cell, and Firefox, IE9+ issue with div height 100% inside a td (working example on Chrome), 问题是table中的IE cell没有获取percentage height(必须获取一个固定的数字),所以cabinetMap没有获取value。

因为 table 是动态的,我添加了一段设置高度的代码:

const cabinets_grid = this.diagram.div.parentElement.parentElement.parentElement;
const height = cabinets_grid.getBoundingClientRect().height
    if (!height) {
        setTimeout(() => {
            this.calcCabinetHeight(onLoad);
        }, 150);
    }
    else {
        this.diagram.div.style.height = height - 24 + 'px';
        this.zoomToFit();
    }