我正在尝试显示实时摄像机的网格。
我需要两个响应列,以保持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的宽高比。
关于如何做到这一点的任何想法?
答案 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