如何显示保持16:9长宽比的网格?

时间:2019-08-29 18:48:35

标签: css ionic-framework sass flexbox css-grid

我正在尝试显示实时摄像机的网格。

我需要两个响应列,以保持16:9的纵横比。

我的代码是:

<div class="grid">

  <div class="item" *ngFor="let i of cameras">
    <iframe [src]="this.sanitizer.bypassSecurityTrustResourceUrl(i.url)"
            scrolling="no"
            frameBorder="0"
            allow="autoplay; encrypted-media">
            </iframe>
  </div>

</div>

和CSS

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  grid-template-rows: 1fr;
  grid-gap: 1px;

  .item {
    background: grey;
    display: flex;
  }

  .item:before {
    content: "";
    display: block;
    height: 0;
    width: 0;
    padding-bottom: calc(9/16 * 50%);
  }

  iframe{
    width:100%;
    height:100%;
    background:#F2F2F2;
    overflow:auto !important;
    -webkit-overflow-scrolling:touch !important;
  }
}

问题在于如何保持16:9的宽高比。

example

关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分:1)

CSS-Tricks有一个很酷的技巧,曾帮助我解决过类似的问题:

.videoWrapper {
  position: relative;
  padding-bottom: 56.25%; /* 16:9 */
  padding-top: 25px;
  height: 0;
}
.videoWrapper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}
<div class="videoWrapper">
  <iframe width="560" height="349" src="#" frameborder="0" allowfullscreen></iframe>
</div>

来源:https://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php