我有一个固定高度的容器,包含图像和iframe。为了使图像响应并防止垂直和水平溢出,我可以设置以下CSS:
img {
max-width: 100%;
max-height: 100%;
}
这可确保纵向图像不会垂直溢出,并且横向图像不会水平溢出。
对于iframe,我使用“填充比率”technique,将包装元素的填充设置为iframe的宽高比(例如,对于16:9视频,为56.25%):
.iframe-wrapper {
position: relative;
height: 0;
padding-top: 56.25%;
overflow: hidden;
}
.iframe-wrapper iframe {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
虽然这意味着iframe按视口宽度缩放,但如果我更改视口的高度,它将无法正常工作。基本上我喜欢iframe来模仿图像的工作方式。
答案 0 :(得分:10)
对于我的用途(在响应式网站上嵌入来自Vimeo的视频),这在我测试过的浏览器中效果很好:
@media screen and (max-width: 750px) {
iframe {
max-width: 100% !important;
width: auto !important;
height: auto !important;
}
}
它不需要图像占位符,所以它更简单。
答案 1 :(得分:6)
这段代码对我有用:
<div class="video-container"><iframe.......></iframe></div>
.video-container {
position:relative;
padding-bottom:56.25%;
padding-top:30px;
height:0;
overflow:hidden;
}
.video-container iframe, .video-container object, .video-container embed {
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
}
来源:https://www.h3xed.com/web-development/how-to-make-a-responsive-100-width-youtube-iframe-embed
答案 2 :(得分:3)
这是我觉得它可能对你有用的修复,但是你必须为&#34;填充比率&#34;做出妥协。技术,因为不需要;)
HTML如下:
<div class="embeded-video">
<img class="ratio-img" src="http://placehold.it/16x9" alt="16:9 Image" />
<iframe src="//www.youtube.com/embed/I_dN9IpmOZU" frameborder="0" allowfullscreen align="center"></iframe>
</div>
CSS如下:
.embeded-video {
position: relative
}
.embeded-video .ratio-img {
display: block;
width: 100% !important;
height: auto !important;
}
.embeded-video IFRAME {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
答案 3 :(得分:0)
我不确定是否可以允许高度仅增长到最大高度,但是可以限制高度并仍然保留宽高比。这是使它起作用的聪明技巧...我没有编写此代码,但我使用了它,并且看起来效果很好:
https://codepen.io/shshaw/pen/uzlfh
为了后代在此处复制(粘贴)代码(稍作修改)...(我的主要修改是使用constructor()
单位而不是百分比。)
vh
/* Adapted from https://codepen.io/shshaw/pen/uzlfh - thanks Shaw! */
.responsive-embed {
height: 45vh; /* Set height here */
display: inline-block; /* Must be inline-block */
position: relative; /* Keep the child element contained */
/* min/max-width will break the aspect ratio, but otherwise work as expected */
/*
min-height: 200px;
max-height: 400px;
*/
}
.responsive-embed .ratio {
height: 100%; /* Our ratio canvas is expanded to as tall as the height set above. */
width: auto; /* Allows the width to adjust based in the height, keeping the aspect ratio */
visibility: hidden; /* Prevents non-transparent image or alt text from showing up */
text-align: left;
}
.responsive-embed iframe {
/* Force the child block to be same size as parent */
position: absolute !important;
top: 0 !important; left: 0 !important;
width: 100% !important;
height: 100% !important;
}
答案 4 :(得分:0)