这是“高度等于动态宽度(CSS 流体布局)”的延续。
我想最大化视频元素的大小,同时保持它的纵横比,并且我成功地使用上述问题中的大多数答案来实现宽度。
但是,这是针对单个非滚动网页的。因此,我希望元素在高度太大的情况下自动减小元素的宽度。
我愿意使用 JavaScript/jQuery 来获得这个结果,但最好使用纯 CSS 解决方案。
在下面的示例中,我使用img
hack 来强制保持纵横比。
如果高度足够高,一切正常(宽度正常,并保持纵横比):
问题:
当元素太高时我需要它(手动编辑 DOM 以获得结果):
正如您在此处看到的,宽度减小了,这反过来又减小了高度以避免滚动条,同时保持纵横比为 16:9。
请参阅 jsfiddle 以更好地理解。
HTML
<script src="https://raw.github.com/flowplayer/flash/master/core/src/javascript/flowplayer.js/flowplayer-3.2.12.min.js">
<div class="top">
<div class="left">
<div id="chat">
chat<br>
chat<br>
chat<br>
chat<br>
chat<br>
chat<br>
chat<br>
chat<br>
chat
</div>
</div>
<div class="right">
<img src="#" width="200" height="58">
</div>
</div>
<div class="video">
<img class="maintain169aspectratio" src="https://dl.dropboxusercontent.com/u/21688/staticlinked/maintain_aspect_ratio_hack.png" />
<div id="player"></div>
</div>
JavaScript (不太相关,但它会生成播放器)
$f("player", "flowplayer-3.2.16.swf", {
clip: {
provider: 'rtmp',
live: true,
url: 'bouvet',
},
plugins: {
rtmp: {
url: "flowplayer.rtmp-3.2.12.swf",
netConnectionUrl: '',
scaling: 'fit',
}
}
});
CSS
div.video {
position: relative;
margin: 0;
padding-top: 58px;
}
div.video img.maintain169aspectratio {
width: 100%;
}
div#player {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
}
div#chat {
position: relative;
overflow-y: scroll;
width: 100%;
height: 100%;
}
div.top {
position: relative;
width: 100%;
height: 58px;
margin: 0;
}
div.left {
display: table-cell;
width: 100%;
height: 100%;
}
div.right {
display: table-cell;
min-width: 200px;
vertical-align: top;
height: 100%;
}
body {
margin: 0;
}