两个 iframe(不同尺寸)并排响应
Two iframes(Different Sizes) side by side responsive
我正在尝试添加一个响应式布局,其中并排放置了两个 iframe(视频 (16:9) 和图片 (1:1))。我设法以某种方式搜索了一种使布局响应的代码,我现在面临的唯一问题是我无法使视频具有与第二个 iframe 相同的高度(图像一),并且同时保持其宽高比(16:9 因为它是 youtube 视频)。
我现在拥有的(带代码的演示):http://jsfiddle.net/dzw8jx4e/
HTML代码:
<div class="t_container">
<div class="ts_iframe">
<iframe frameborder="0" height="250" width="100%" src="https://www.youtube.com/embed/jNQXAC9IVRw"></iframe>
</div>
<div class="tc_iframe">
<iframe frameborder="0" height="250" width="250" src="https://cdn.shopify.com/s/files/1/0436/5985/3990/files/ezgif.com-video-to-gif.gif?v=1597626410"></iframe>
</div>
</div>
CSS代码:
.t_container{
display: inline-table;
width: 100%;
}
.ts_iframe{
display: table-cell;
width: 100%;
}
.tc_iframe{
width: 250px;
float:right;
}
@media (max-width: 768px) {
.t_container { display: block; }
.t_container .tc_iframe { display: block; width: 100%; float:none; }
}
如果不是因为复杂的自定义 table 逻辑(或者即使那样,考虑到一些 flexbox 经验),我会为这种工作推荐 flexbox 显示样式。它针对响应能力和自动处理一些粗糙 html 边缘进行了非常优化。
https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox
你可以通过这个游戏来感受一下
这是您的代码,我刚刚删除了与 table 相关的所有特定样式,并仅保留 yt 视频中的 display: block
以使它们出现在媒体查询之外的不同行上(注意:在 flex 中,通过在父容器上强制 flex-direction: column
更容易获得)
http://jsfiddle.net/kctda2vr/1/
干杯,如果有什么遗漏,请告诉我。
保持宽高比的一种旧方法是使用 padding-top 百分比,因为它会根据可用宽度进行计算。这是一个例子:
body {
margin: 0;
}
.t_container::after {
clear: both;
}
.t_iframe {
position: relative;
float: left;
}
.t_iframe iframe {
width: 100%;
height: 100%;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.t_video {
width: 64%;
padding-top: 36%;
}
.t_image {
width: 36%;
padding-top: 36%;
}
@media (max-width: 768px) {
.t_iframe {
float: none;
width: 100%;
}
.t_video {
width: 100%;
padding-top: 36%;
}
.t_image {
width: 100%;
padding-top: 100%;
}
}
<div class="t_container">
<div class="t_iframe t_video">
<iframe frameborder="0" src="https://www.youtube.com/embed/jNQXAC9IVRw"></iframe>
</div>
<div class="t_iframe t_image">
<iframe frameborder="0" scrolling="no" src="https://cdn.shopify.com/s/files/1/0436/5985/3990/files/ezgif.com-video-to-gif.gif?v=1597626410"></iframe>
</div>
</div>
也在 JSFiddle.
我正在尝试添加一个响应式布局,其中并排放置了两个 iframe(视频 (16:9) 和图片 (1:1))。我设法以某种方式搜索了一种使布局响应的代码,我现在面临的唯一问题是我无法使视频具有与第二个 iframe 相同的高度(图像一),并且同时保持其宽高比(16:9 因为它是 youtube 视频)。
我现在拥有的(带代码的演示):http://jsfiddle.net/dzw8jx4e/
HTML代码:
<div class="t_container">
<div class="ts_iframe">
<iframe frameborder="0" height="250" width="100%" src="https://www.youtube.com/embed/jNQXAC9IVRw"></iframe>
</div>
<div class="tc_iframe">
<iframe frameborder="0" height="250" width="250" src="https://cdn.shopify.com/s/files/1/0436/5985/3990/files/ezgif.com-video-to-gif.gif?v=1597626410"></iframe>
</div>
</div>
CSS代码:
.t_container{
display: inline-table;
width: 100%;
}
.ts_iframe{
display: table-cell;
width: 100%;
}
.tc_iframe{
width: 250px;
float:right;
}
@media (max-width: 768px) {
.t_container { display: block; }
.t_container .tc_iframe { display: block; width: 100%; float:none; }
}
如果不是因为复杂的自定义 table 逻辑(或者即使那样,考虑到一些 flexbox 经验),我会为这种工作推荐 flexbox 显示样式。它针对响应能力和自动处理一些粗糙 html 边缘进行了非常优化。
https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Flexbox
你可以通过这个游戏来感受一下
这是您的代码,我刚刚删除了与 table 相关的所有特定样式,并仅保留 yt 视频中的 display: block
以使它们出现在媒体查询之外的不同行上(注意:在 flex 中,通过在父容器上强制 flex-direction: column
更容易获得)
http://jsfiddle.net/kctda2vr/1/
干杯,如果有什么遗漏,请告诉我。
保持宽高比的一种旧方法是使用 padding-top 百分比,因为它会根据可用宽度进行计算。这是一个例子:
body {
margin: 0;
}
.t_container::after {
clear: both;
}
.t_iframe {
position: relative;
float: left;
}
.t_iframe iframe {
width: 100%;
height: 100%;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
.t_video {
width: 64%;
padding-top: 36%;
}
.t_image {
width: 36%;
padding-top: 36%;
}
@media (max-width: 768px) {
.t_iframe {
float: none;
width: 100%;
}
.t_video {
width: 100%;
padding-top: 36%;
}
.t_image {
width: 100%;
padding-top: 100%;
}
}
<div class="t_container">
<div class="t_iframe t_video">
<iframe frameborder="0" src="https://www.youtube.com/embed/jNQXAC9IVRw"></iframe>
</div>
<div class="t_iframe t_image">
<iframe frameborder="0" scrolling="no" src="https://cdn.shopify.com/s/files/1/0436/5985/3990/files/ezgif.com-video-to-gif.gif?v=1597626410"></iframe>
</div>
</div>
也在 JSFiddle.