正如其他答案所指出的,css3 转换只会改变元素的视觉呈现。但是正如您所意识到的,您可以调整包装器的大小以使其他元素很好地放置在适当的位置。
如果您希望它更易于管理,您可能想尝试使用 Zurb Responsive-YouTube-iframe 方法。他们是这样做的:
调整 iframe 大小的最简单方法
.flex-video {
position: relative;
padding-top: 25px;
padding-bottom: 67.5%;
height: 0;
margin-bottom: 16px;
overflow: hidden;
}
.flex-video.widescreen { padding-bottom: 57.25%; }
.flex-video.vimeo { padding-top: 0; }
.flex-video iframe,
.flex-video object,
.flex-video embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
@media only screen and (max-device-width: 800px), only screen and (device-width: 1024px) and (device-height: 600px), only screen and (width: 1280px) and (orientation: landscape), only screen and (device-width: 800px), only screen and (max-width: 767px) {
.flex-video { padding-top: 0; }
}
因为他们知道 youtube 视频的纵横比,他们可以给 'flex-video' 包装器高度:0;填充底部:67.5%。内部 iframe/youtube 视频被赋予绝对定位宽度:100%;height:100%,这自然允许它响应。从这里,您可以通过设置包装器大小来控制 iframe 的宽度。您也可以为包装器设置其他比率,例如 width:100%; 高度:0;padding-bottom:100%;,它基本上给你一个方框来适应你的 iframe。
如果您需要使用 CSS3 缩放...
如果这不起作用,那么就剩下 CSS3 缩放方法,这有点混乱并且需要 JS。我最近在尝试在响应式网站上使用 Google 广告时遇到了这个问题。为了解决这个问题,我编写了一个轻量级(并且未经测试)的jQuery 插件,它通过将元素包装在相对定位的 div 中来使 iframe 具有响应性。
它使用 iframe 的原始宽度和其相对定位的包装器的宽度来查找使用 CSS3 缩小它需要多少。除了应用 CSS3 缩放,它使用相同的比率设置相对定位的包装器的高度。这确保了写在 iframe 下方的 DOM 中的元素按预期向上移动。这一切都基于 iframe 的原始宽度/高度比,因此这些属性必须可用。它仍然需要一些重构,但如果您需要,也许您可以修改它以更好地满足您的需求。
如果您需要使用或修改它,这里是:
Rad.js - 响应式广告插件