【发布时间】:2015-07-06 19:08:03
【问题描述】:
我有一个 div (#outer),它位于网络浏览器 (Chromium) 的左中部分。它的宽度可以随着窗口大小的变化而变化。外部 div 内部有另一个 div,我想以固定的纵横比 (16:9) 调整其大小,同时始终保持在外部 div 的范围内。
例如,如果外部 div 调整为高和瘦,则内部 div 应适合外部 div 的整个宽度,同时保持成比例的高度。如果外部 div 调整为短和宽,则内部 div 应适合外部 div 的全高和成比例的宽度。内部 div 不应超出外部 div 的范围,也不应有滚动条。
基本上,我想完成here 的要求,但包含在另一个动态变化的 div 中,而不仅仅是视口。我尝试使用视口 vw 和 vh,但还没有让它在 div 中工作。我目前正在使用带有 padding-top: 56.25% 的 before 元素,它仅适用于外部 div 的宽度,如果宽度远大于高度,则会溢出外部 div。
理想情况下,我想使用纯 CSS,但如果没有其他选择,我愿意编写 javascript。有任何想法吗?谢谢!
相关 HTML:
<div id="outer">
<div class="box"><div id="camera_view"></div></div>
</div>
相关 CSS:
使用前元素:
.box {
position:relative;
width: 100%;
height: 100%;
}
.box:before {
content: "";
display: block;
padding-top: 56.25%;
background: #A2E8A7;
}
.box-content {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
}
#outer {
display: flex;
position: relative;
width: 100%;
align-items: center;
}
使用视口单位:(编辑:这是一个单独的测试文件)
.box {
width: 100vw;
height: 56.25vw;
background: #FF8AB1;
max-height: 100vh;
max-width: 177.78vh;
margin: auto;
position: absolute;
left:0;right:0;
}
#outer {
width: 50%;
height: 50%;
/* edit: 50% only used to mimic the approximate size of #outer */
}
.box-content {
background: #FF8AB1;
}
【问题讨论】:
-
哪个 div 应该保持 16:9 的纵横比?
#box? -
在“使用前元素”中,#outer 的高度应该是多少?
-
Tyler - 是的,#box 应该保持 16:9 的比例。
-
YandY - #outer 的高度将是其父级的高度(未显示),但 #outer 约为窗口高度的 60%
标签: javascript jquery html css