我有以下布局(单击片段中的“Full page”可以看到它)。
左列包含一个 Package 器,其中包含几个相互重叠的<canvas>
(为简单起见,这里只有一个画布)。
问题:如果画布的宽度/高度很高(在画布坐标系中,这里是4000 x3000),那么整个画布是不可见的(高度太高,它会超出视口)。
如何使画布缩放/收缩以包含在左列中?(没有页面垂直滚动条)
这里max-width: 100%;
* 工作 * 是为了让画布水平地包含。
但是max-height: 100%;
没有任何效果:画布不是垂直的,为什么?
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
html,
body,
.page {
height: 100%;
width: 100%;
}
.page {
background-color: red;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}
.left-column {
background-color: green;
display: flex;
}
.right-column {
background-color: orange;
flex: 1;
}
canvas {
border: 3px solid magenta;
max-width: 100%;
max-height: 100%;
}
<div class="page">
<div class="left-column">
<div class="canvas-wrapper">
<canvas width="4000" height="3000"></canvas>
</div>
</div>
<div class="right-column">
RIGHT
</div>
</div>
1条答案
按热度按时间qyswt5oh1#
当元素具有百分比高度时,父元素必须具有定义的高度。
如果父对象没有定义高度,则高度百分比简单地解析为
auto
。以下是完整的解释:
height
property and percentage values您至少有两个可用的解决方案:
1.在父节点上定义一个高度(
.canvas-wrapper
),或者在本例中更好,1.使用viewport percentage units(例如,
vh
)而不是 * 百分比单位 *(%
)。对代码做一个调整: