当前位置: 首页 > 知识库问答 >
问题:

仅在CSS中维护div的纵横比[重复]

韩博简
2023-03-14

如果我有一个元素(如div#frame),我想尽可能多地填充屏幕,同时仍然保持指定的宽高比(如16:9),我必须应用什么样式?我确信在Javascript中有一些不同的解决方案,但是我想尝试一种只使用CSS的方法。

我四处搜索过,虽然CSS中已经有一些解决方案,但它们使用百分比填充,这是由宽度值计算的,这意味着只有在浏览器水平调整大小而不是垂直调整大小时,纵横比才会保持不变。

#frame
{
    /* centered */
    top: 0px;
    left: 0px;
    right: 0px;
    bottom: 0px;
    margin: auto;
    position: fixed; 

    /* aspect ratio */
    width: 100%;
    height: 0px;
    padding-bottom: 56.25%;
}

这已经足够好了,但是我想要一个解决方案,当水平和垂直调整大小时,它仍然能够保持元素的纵横比,如我在下面嵌入的图像所示。

共有1个答案

祝宾白
2023-03-14

我认为不可能根据高度设置元素的宽度,使用css属性,因为它们本来就是要使用的。所以你最好开始考虑JS;)虽然有一个涉及图像的黑客攻击,但它并不伟大。也许你可以扩展这个想法(我还是更喜欢JS)。

您将需要一个最大尺寸的图像,您希望您的框架。一个透明的gif就可以了。然后使用包装上的inline block,让图像的本机行为设置包装的大小。然后在包装器中使用绝对定位的元素来保存内容:

<div class="wrapper">
    <img src="https://cdn.boldernet.net/0/0/856/856567-450.jpg">
    <div class="content">
        content
    </div>  
</div>

CSS:

body {
    text-align: center;
}

.wrapper > img {
    display:block;
    max-width: 100%;
    max-height: 100%;
}
.wrapper {
    display: inline-block;
    position: relative;
    top: 50%;
}
.content {
    position: absolute;
    background: blue;
    left: 0;
    top: -50%;
    width:100%;
    height:100%;
}
 类似资料:
  • 我正在使用HTML的img标记来显示我们应用程序中的一张照片。我已经将它的高度和宽度属性都设置为64。我需要显示任何图像分辨率(例如256x256、1024x768、500x400、205x246等)为64x64。但是通过将img标记的高度和宽度属性设置为64,它不能保持纵横比,所以图像看起来失真了。 我的确切代码是:

  • 问题内容: 我正在尝试从 遍及海底500m x 40m的声纳数据绘制海底3D图像。我将Matplotlib / mplot3d与 Axes3D配合使用,并且希望能够更改轴的纵横比,以便 按比例缩放x和y轴。具有生成的数据而非 实际数据的示例脚本是: 以及此脚本的输出图像: matplotlib输出图像 现在,我想对其进行更改,以使沿轨迹(x)轴 的1米与范围(y)轴的1米相同(或 取决于所涉及的相

  • 问题内容: 我有一个48x48的div,里面有一个img元素,我想将它放到div中而不丢失任何部分,同时保持比例,是否可以使用html和css实现? 问题答案: 如果您在编写CSS时不知道图像的尺寸,则需要一些JavaScript来防止裁剪。 HTML和JavaScript 的CSS 如果您使用JavaScript库,则可能要利用它。

  • 我在较小的设备宽度上遇到问题,其中div变得更加方形,景观也更少。div的背景图像设置为,因此它只占用div顶部60%的高度和100%的宽度。 如何将背景图像设置为覆盖div高度的100%,但保持其纵横比,以便部分背景图像被切断。 如何对齐背景图像,使其右侧位于div的右侧(因此背景图像的左侧将被div的左侧截断)。

  • 我使用引导创建旋转木马,我有大的图像,所以当屏幕小于图像时,比例不会保持不变。 我怎么能改变呢? 这是我的代码: http://jsfiddle.net/DRQkQ/ 我需要图像适合100%的宽度,但保持其高度为500px(我认为是500px),这应该意味着在较小的屏幕上,我们看不到图像的最左边和最右边。 我尝试将图像包含在div中并添加 但这不管用 非常感谢。

  • 问题内容: 设置纵横比适用于2d图: 但不适用于3d: 3d情况是否有其他语法,或者未实现? 问题答案: 我的理解基本上是尚未实现(请参阅GitHub中的此错误)。我也希望能尽快实施。请参阅此链接以获取可能的解决方案(我自己尚未对其进行测试)。