Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 嵌入YouTube视频时的自动高度?_Html_Css_Video_Youtube - Fatal编程技术网

Html 嵌入YouTube视频时的自动高度?

Html 嵌入YouTube视频时的自动高度?,html,css,video,youtube,Html,Css,Video,Youtube,我在我的网站上嵌入了一个YouTube视频,但问题是我需要根据视频的宽度和纵横比自动调整高度。所以如果我的宽度是1280,如果视频是16:9,我的高度应该是720。 我试过使用“VW”和“VH”单元,但它们似乎不适用于iframe。我的宽度已按比例设置 我的代码如下: <iframe style="margin-right: 1%; margin-left: 1%;" width="98%" height="" src="https://www.youtube.com/embed/HwzQ

我在我的网站上嵌入了一个YouTube视频,但问题是我需要根据视频的宽度和纵横比自动调整高度。所以如果我的宽度是1280,如果视频是16:9,我的高度应该是720。 我试过使用“VW”和“VH”单元,但它们似乎不适用于iframe。我的宽度已按比例设置

我的代码如下:

<iframe style="margin-right: 1%; margin-left: 1%;" width="98%" height="" src="https://www.youtube.com/embed/HwzQbfde-kE" frameborder="0"></iframe>

您可以使用此代码解决此问题

CSS:

.video-container {
    position: relative;
    padding-bottom: 56.25%; /* 16:9 */
    height: 0;
}
.video-container iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}
示例Html

<div class="video-container">
    <iframe width="560" height="315" src="https://www.youtube.com/embed/_TyJeKKQh-s?controls=0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>


工作原理:容器元素的高度为零,底部填充百分比为0。底部填充百分比是容器宽度的百分比,因此它具有固定的纵横比。但是为了让iframe显示在零高度容器中,需要使容器相对,iframe绝对,定位在div内。

我能够在样式元素的宽度和高度上使用
vw
生成响应iframe大小,因为我知道我希望元素使用的水平宽度,然后根据宽度和视频为16:9的知识计算高度。如果您希望视频占用屏幕尺寸893px以上水平空间的45%,否则为90%,则:

.embedded-video-16-9 {
  width:  90vw;
  height: 50.625vw; /* 90*9/16 */
  margin-left: 5vw;
  margin-right: 5vw;
}

@media (min-width: 893px) {
  .embedded-video-16-9 {
    width: 45vw;
    height: 25.3125vw; /* 45*9/16 */
    margin-left: 2vw;
    margin-right: 2vw
  }
}
用法如下:

<iframe 
  class="embedded-video-16-9" 
  src="https://www.youtube.com/embed/_TyJeKKQh-s?controls=0" 
  frameborder="0" 
  allowfullscreen=""
></iframe>

如果选择整个视口,可以使用以下代码:

iframe{
  width: 100vw;
  height: calc(100vw/1.77);
}

html
width
属性只接受数字(),而不接受原始问题中以测量单位(%、px、vw等为后缀的字符串

如果您知道
iframe
容器的宽度(在绝对单位中,如
px
vw
,而不是
%
),则可以使用css中的单行
高度
解决方案:

.youtube嵌入{
--容器宽度:720px;
--比率:calc(16/9);/*1.77*/
宽度:100%;
高度:计算值(var(--容器宽度)/var(--比率));
}
以下是一个响应迅速的解决方案,它可以解决容器上的水平填充问题:

:根目录{
--视频比率:calc(16/9);
--视频容器最大宽度:640px;
--video-container-x-padding-sum:2rem;/*例如,padding:0 1rem*/
}
.youtube嵌入{
--视频容器宽度:计算(100vw-var(--video-container-x-padding-sum));
宽度:100%;
高度:计算值(var(--视频容器宽度)/var(--视频比率));
}
@仅介质屏幕和(最小宽度:672px){
.youtube嵌入{
--视频容器宽度:var(--视频容器最大宽度);
}
}

@RTW你能解释一下吗,小比特删除col-sm-6样式参考这能回答你的问题吗?这回答了你的问题吗?