iframe 溢出其容器

问题描述 投票:0回答:1

我正在尝试创建一个与 Wistia 类似的布局 https://home.wistia.com/live/events/pnd98h7ffa?utm_campaign=2023%20Webinar%20Series&utm_medium=email&_hsmi=265945727&_hsenc=p2ANqtz--pQsHAbm-wIrzjy0fS LCgy63Z71DSHLtAlykHKCOOrVLGZQBflaCGBpRg2kCj9P55DoC0YrSAsCMIkc_7qJ0XAVNkLhA&utm_content =265945727&utm_source=hs_email 您所要做的就是使用任何凭证进行订阅:

我为此使用了 React 和 Tailwind,但我遇到了一个问题,即 iframe 溢出了大屏幕的容器。 这是重现相同错误的伪代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<style>
    *,
    *::after,
    *::before {
        padding: 0;
        margin: 0;
        box-sizing: border-box;
    }

    main {
        height: 100vh;
    }

    header {
        height: 10vh;
        background: crimson;
    }

    .content {
        display: flex;
        gap: 10px;
        justify-content: center;
        align-items: center;
        height: 90vh;
        width: 100%;
        padding: 10px;

    }

    .content iframe {

        width: 100%;
        aspect-ratio: 16/9;
        border: 0;
    }

    .content div {

        width: 500px;
        height: 100%;
        background: dodgerblue;
    }
</style>

<body>
    <main>
        <header></header>
        <div class="content">
            <iframe title="test" src="https://www.youtube.com/embed/7PIji8OubXU?si=XmbTvMWI5rlwS1ix"></iframe>
            <div></div>
        </div>
    </main>

</body>

</html>

这是错误的图片:

我尝试为 iframe 设置 max-height: 100% ,它不再溢出高度,但宽度不断增加,即使我尝试设置 max-width:100%;例如,当我尝试设置固定的 max-width:500px 时,宽度停止增加,但 iframe 不再响应,并且黑色块/线条开始出现在其两侧。我不知道导致这种行为的问题是什么,这令人沮丧。如有任何帮助,我们将不胜感激。

reactjs iframe responsive-design tailwind-css overflow
1个回答
0
投票

问题是因为您设置了

width
,然后
aspect-ratio
扰乱了这一点。如果您设置
height: 100%;
(而不是
width
)那么我相信应该可以工作;请参阅下面的片段:

*,
*::after,
*::before {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

main {
  height: 100vh;
}

header {
  height: 10vh;
  background: crimson;
}

.content {
  display: flex;
  gap: 10px;
  justify-content: center;
  align-items: center;
  height: 90vh;
  width: 100%;
  padding: 10px;
}

.content iframe {
  height: 100%;
  aspect-ratio: 16/9;
  border: 0;
}

.content div {
  width: 500px;
  height: 100%;
  background: dodgerblue;
}
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <main>
    <header></header>
    <div class="content">
      <iframe title="test" src="https://www.youtube.com/embed/7PIji8OubXU?si=XmbTvMWI5rlwS1ix"></iframe>
      <div></div>
    </div>
  </main>

</body>

© www.soinside.com 2019 - 2024. All rights reserved.