为了账号安全,请及时绑定邮箱和手机立即绑定

保持div的宽高比但在CSS中填充屏幕宽度和高度?

保持div的宽高比但在CSS中填充屏幕宽度和高度?

白衣染霜花 2019-07-25 19:19:36
保持div的宽高比但在CSS中填充屏幕宽度和高度?我有一个网站,它有一个固定的长宽比近似16:9景观,像一个视频。我想让它居中并扩展以填充可用的宽度和可用的高度,但不要在任何一侧变大。例如:高而薄的页面将使内容伸展整个宽度,同时保持比例高度。较短的宽页面将使内容延伸到整个高度,具有成比例的宽度。我一直在研究两种方法:使用具有正确宽高比的图像来扩展容器div,但我无法让它在主要浏览器中以相同的方式运行。设置比例底部填充,但仅相对于宽度工作并忽略高度。它随着宽度不断变大,并显示垂直滚动条。我知道你可以很容易地用JS做到这一点,但我想要一个纯CSS解决方案。有任何想法吗?
查看完整描述

3 回答

?
HUX布斯

TA贡献1876条经验 获得超6个赞

使用新的CSS视口单位 vwvh(视口宽度/视口高度)

小提琴

垂直和水平调整大小,您将看到元素将始终填充最大视口大小而不会破坏比例并且没有滚动条!

(纯粹)CSS

div{
    width: 100vw; 
    height: 56.25vw; /* height:width ratio = 9/16 = .5625  */
    background: pink;
    max-height: 100vh;
    max-width: 177.78vh; /* 16/9 = 1.778 */
    margin: auto;
    position: absolute;
    top:0;bottom:0; /* vertical center */
    left:0;right:0; /* horizontal center */}
* {
  margin: 0;
  padding: 0;}div {
  width: 100vw;
  height: 56.25vw;
  /* 100/56.25 = 1.778 */
  background: pink;
  max-height: 100vh;
  max-width: 177.78vh;
  /* 16/9 = 1.778 */
  margin: auto;
  position: absolute;
  top: 0;
  bottom: 0;
  /* vertical center */
  left: 0;
  right: 0;
  /* horizontal center */}
<div></div>

如果要使用视口最大宽度和高度的90%:FIDDLE

* {
  margin: 0;
  padding: 0;}div {
  width: 90vw;
  /* 90% of viewport vidth */
  height: 50.625vw;
  /* ratio = 9/16 * 90 = 50.625 */
  background: pink;
  max-height: 90vh;
  max-width: 160vh;
  /* 16/9 * 90 = 160 */
  margin: auto;
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;}
<div></div>

此外,浏览器支持也很不错:IE9 +,FF,Chrome,Safari- caniuse


查看完整回答
反对 回复 2019-07-25
?
MM们

TA贡献1886条经验 获得超2个赞

只需Danield在LESS mixin中重新制定答案,以便进一步使用:

// Mixin for ratio dimensions    .viewportRatio(@x, @y) {
  width: 100vw;
  height: @y * 100vw / @x;
  max-width: @x / @y * 100vh;
  max-height: 100vh;}div {

  // Force a ratio of 5:1 for all <div>
  .viewportRatio(5, 1);

  background-color: blue;
  margin: 0;
  position: absolute;
  top: 0; right: 0; bottom: 0; left: 0;}


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 577 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信