CSS vw 和 vh 但相对于父级而不是视口

2024-01-02

我正在尝试创建一个固定纵横比的框,调整大小以不溢出其父级。

经典填充底部技巧 https://stackoverflow.com/questions/1495407/maintain-the-aspect-ratio-of-a-div-with-css只能根据父宽度定义高度,并且可测试here http://jsfiddle.net/a4ofmryp/允许元素随着宽度的增加而变得比父元素更高。不好。

然而,使用 vh 和 vw,我们可以完成我们想要的任务,但限制父项是视口的尺寸。可测试here http://jsfiddle.net/7wk0aay8/.

<style>
  div {
    max-width: 90vw;
    max-height: 90vh;
    height: 50.625vw; /* height defined in terms of parent width (90*9/16) */
    width: 160vh; /* width defined in terms of parent height, which is missing from the padding-bottom trick (90*16/9) */
    background: linear-gradient(to right, gray, black, gray);
  }
</style>

<div></div>

有没有办法让 vh 和 vw 等效引用父级而不是视口?或者是否有一个补充的技巧可以解决 padding-bottom 技巧的问题? css的ratio属性在哪里?

Also, 图像具有某种内在的比例 https://jsfiddle.net/p7qk5fvw/,但我不确定如何利用这一点。


你可以使用类似于我所做的事情保持纵横比和固定高度 https://stackoverflow.com/a/32425539/1529630,它利用了固有的纵横比<canvas>元素。

但这里我们需要带有两个画布的嵌套容器。

#resize {
  resize: both;
  overflow: auto;
  width: 100px;
  height: 140px;
  padding: 20px;
  border: 1px solid black;
}
.ratio {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.ratio.vertical, .ratio.vertical > canvas {
  height: 100%;
  max-width: 100%;
}
.ratio.horizontal, .ratio.horizontal > canvas {
  width: 100%;
  max-height: 100%;
}
.ratio > div {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
}
#contents {
  background: linear-gradient(to right, gray, black, gray);
}
<div id="resize">
  <div class="ratio vertical">
    <canvas width="16" height="9"></canvas>
    <div>
      <div class="ratio horizontal">
        <canvas width="16" height="9"></canvas>
        <div id="contents">
          Hello
        </div>
      </div>
    </div>
  </div>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS vw 和 vh 但相对于父级而不是视口 的相关文章

  • 如何实现弧形顶部指针

    有人可以帮忙解决这个问题吗 如何仅用CSS实现附加按钮 无图像 到目前为止 这是我的代码 triangle up width 0 height 0 border left 25px solid transparent border righ
  • 带条纹的自定义字体 src

    以此作为参考https stripe com docs elements reference stripe elements https stripe com docs elements reference stripe elements
  • 仅在 Safari 中位于 div 外部的文本

    我有这个错误 让一些文本出现在右侧 div 之外的几个像素处 奇怪的是 这种情况只发生在 Safari 中 我以前从未见过它 它只是我使用过的常规 HTML CSS 我在互联网上环顾四周 但找不到完全相同的问题 由于高度固定 只有一些内容在
  • 使用 PHP 和 MySQL 的服务器端事件

    我正在使用 PHP 和 MySQL 构建一个 非常基本的 应用程序 该应用程序的目的是在网页上显示 实时 数据交易 这些交易来自于transactionsMySQL 数据库中的表 到目前为止 我可以在网页上检索并显示数据 不过我期待看到数据
  • 在 Safari 中提交表单后无法对 DOM 进行样式更改

    在 Safari 中提交表单后 我在对 DOM 进行样式更改时遇到问题 有谁知道它是否可能 这是 Safari 预期的浏览器行为吗 我设置了一个非常简单的示例 以便您可以看到实际问题 http jamesmichaelking com st
  • 重置 div 内容的 css 样式

    有一个用 css 样式定制的 html 页面 我无法更改此 css 该页面的一个标签被设计为动态 html 数据的容器 我怎样才能 重置 这个div的css设置 页面中定义的css样式对此div的内容没有影响 我只能访问动态 html 并且
  • 通过 Javascript 更改 Webkit 属性?

    请帮助我 可能是因为我对 CSS 动画和 Javascript 相当陌生 但我使用的代码应该更改它的属性 当我运行代码时 它会执行代码中的所有其他操作 除了更改所需 div 的 CSS 属性 我已经尝试了所有这四种方法 但似乎都不起作用 它
  • 为什么该消息没有出现在 Chrome 中的手风琴上方?

    我正在尝试新的 HTML5 验证 当我尝试使用required里面的属性
  • Opera 中 margin-bottom 的计算方式不同

    我有一个具有相对位置的 div 和一个具有绝对位置的子 div div class out div div div CSS container width 100px height 100px position relative insid
  • 光标:IE 8 和 9 中的自动行为

    我想要的是为整个正文标记指定cursor pointer 这样页面的背景是可点击的 但我也希望页面的其余部分像以前一样工作 所以我尝试为div设置cursor auto 其中包含这一页 在 FF Chrome 和 safari 中 它工作得
  • 使绝对定位的div扩展父div高度

    正如你在下面的 CSS 中看到的 我想要child2将自己定位在之前child1 这是因为我目前正在开发的网站也应该在移动设备上运行 在移动设备上child2应该位于底部 因为它包含我想要在移动设备上的内容下方的导航 为什么不是 2 个母版
  • 预加载 javascript 和 css 文件

    我目前正在开发一个移动网站 该网站大量使用图像 CSS 和 JavaScript 例如 它使用未压缩的 150KB 的库 我为图像构建了一个预加载器 效果相当好 function loadImages images var sum 0 fo
  • 获取输入图像类型选择的图片并加载到图像标签中

    所以 我有一个用于上传 img 文件的输入框 我想要做的是从该数据 或选定的源 中获取数据并将其路由到图像标签的 src 属性中 像这样的东西 http jsfiddle net QC2c4 http jsfiddle net QC2c4
  • 为什么在缩放的 html5 画布中可以看到伪像?

    我见过this https stackoverflow com questions 7615009 disable interpolation when scaling a canvas and this https stackoverfl
  • 将可点击的锚标记转换为 html 文档中的纯文本

    我正在尝试匹配 a 我的内容中的标签 并将其替换为链接文本 后跟打印版本的方括号中的 url 如果只有 href 则以下示例有效 如果 a 包含另一个属性 它匹配太多并且不会返回所需的结果 我怎样才能匹配 URL 和链接文本 就是这样 这是
  • 构建两列 html 表单的最佳方法?

    对齐以下内容的最佳方法是什么 我想要 inputTitle左边和右边inputInput在右边 两者之间有错误 CSS crud form width 430px margin 10px solid font family Verdana
  • HTML/CSS:页面左侧的导航栏

    我发现创建这样具有良好语义的布局很尴尬 左侧是大约 150 像素宽的列 其中包含导航元素 我想将网站这部分的 HTML 放在 HTML 代码的开头 然后有一个简单的方法来强制页面的其余部分不侵占左侧的区域 150 像素列 我考虑过一些选择
  • 电子邮件模板中的剪贴板功能

    我想在电子邮件模板中发送优惠券代码 一个小按钮 用于复制剪贴板上输入元素的内容 通过电子邮件模板 我的意思是我想发送一封电子邮件 其中包含优惠券代码 并且电子邮件模板中会有一个按钮 允许我将其复制到剪贴板 这可以做到吗 任何帮助将不胜感激
  • 在选择 tr 来覆盖父 div 上的第 n 个子类时,如何使用 jquery addClass ?

    我用它来选择一个 tr 当单击它来更改 tr 的颜色时 tr click function this addClass selected siblings removeClass selected 参见小提琴http jsfiddle ne
  • 使用 FormData 上传 JavaScript Blob

    我在将 javascript 创建的 blob 上传到我的服务器时遇到问题 基本思想是用户上传图像 在 javascript 中我对图像进行居中裁剪并在传输之前对其进行下采样 图像处理工作正常 但上传本身无法正常工作 这是执行从 canva

随机推荐

  • Powershell 中的 vimdiff E97

    我无法获取vimdiff在 Windows 10 计算机上工作 我正在从 Powershell 运行 vim Powershell 还声明于 myvimrc作为我选择的外壳 set shell C WINDOWS system32 Wind
  • CodeIgniter 和 Javascript/Jquery 库

    正如标题所说 我试图弄清楚如何在 CI 上使用 javascript 和 jquery 库 遵循以下指令the docs http codeigniter com user guide libraries javascript html 我
  • Cassandra 非柜台系列

    我尝试执行以下 CQL 3 语句 CREATE TABLE summary id uuid client bigint campaign text unit bigint view counter PRIMARY KEY client ca
  • 调试 ASPNET WebAPI 项目时出现“线程被中止”错误

    我最近在我的开发机器上调试 VS 2012 更新 2 中的 WEBAPI 项目 C 时开始收到此错误 该应用程序托管在 IIS Express 中 在我的开发盒上本地运行 威胁已经被清除了 奇怪的是 这个错误只有在调试时才会发生 当调试器分
  • HTTP 状态 404 Eclipse Tomcat 7

    我在尝试运行我的应用程序时收到错误 404 Tomcat服务器 启动并同步 动态模块版本为2 5 以前我使用动态模块版本3 o 但它不起作用 我读到 更好的帖子之一是使用 2 5 所以我创建了新项目并且 仍然收到此 4044 错误 我认为这
  • Excel 互操作:使用 Task.Run 创建实例会导致异常 System.EntryPointNotFoundException

    这是我产生问题的最小示例 using System Runtime InteropServices using System Threading Tasks using Excel Microsoft Office Interop Exce
  • 无法在 iPhone 上使用阿拉伯语键盘搜索波斯语文本

    我最近为iPhone开发了一本书 并在这个应用程序中实现了搜索功能 但在真正的 iPhone 上测试该应用程序后 我想知道它无法找到所有搜索词 在我的 Mac 上使用波斯语键盘 例如 它无法找到包含 字符的单词 因为搜索词包含从 iPhon
  • 在react-native-video中播放youtube视频

    我如何在react native video上播放youtube视频 我不想在react native youtube或webview中播放视频 我检查并使用的另一个选项是 WebView 要使用它 请确保将组件放入带有 Flex 的视图中
  • 编码 UTF8 C# 过程

    我有一个处理 vbscript 并生成输出的应用程序 private static string processVB string command string arguments Process Proc new Process Proc
  • 神经网络的显着图(使用 Keras)

    我有一个在 Keras 中训练的完全连接的多层感知器 我向它提供一个 N 维特征向量 它会预测输入向量的 M 个类别中的一个 训练和预测运行良好 现在我想分析输入特征向量的哪一部分实际上负责特定的类 例如 假设有两个类A and B 和一个
  • 按字母顺序对内容进行排序

    因此 我在 AJAX 调用之后附加以下内容 并且此 AJAX 调用可能会发生多次 并返回多个数据项 我正在尝试使用 Tinysort http plugins jquery com project TinySort http plugins
  • 如何在 Angular 4 中禁用 ngbDatepicker 中的前一个日期?

    我想禁用所有先前 过去的日期ngbDatepicker 我用过ngbDatepicker 我的 HTML 是
  • 如何在 INPUT 标签上不使用 ID 属性的情况下使用 LABEL 标签的 FOR 属性

    下面代码中所示的问题有解决方案吗 首先在浏览器中打开代码 直入主题 无需在了解您要查找的内容之前查看所有代码 h1 Input ID creates a bug h1 p In this example I make a list of c
  • Facebook 应用程序中不允许使用 HTTP 动词 POST 来访问路径“/”

    我正在尝试使用 4 2 1 C SDK 构建简单的 facebook 应用程序 但我有一个错误 The HTTP verb POST used to access path is not allowed Description An unh
  • C++初始化[重复]

    这个问题在这里已经有答案了 可能的重复 具有初始值的类构造 https stackoverflow com questions 7207884 class construction with initial values 当我在看 c 示例
  • WIA 2.0 复式房产

    我正在使用 C 开发一个应用程序以使用 WIA 2 0 库 目前我可以使用大部分功能 例如 ADF 自动文档进纸器 过滤器等等 现在 我需要使用扫描仪 富士通 的双面打印器 我正在尝试将 WIA DPS DOCUMENT HANDLING
  • Visual Studio 2019 测试资源管理器将所有测试置于“未运行测试”下

    我有一个ASP NET 核心 3项目与Visual Studio 专业版 19 4 1 with xUnit 2 4 0 我在那里写了几个测试 我的问题是 Visual Studio 始终在 未运行测试 下显示该项目中的所有测试 相同的测试
  • 如何在java中弯曲图像

    有什么办法可以弯曲BufferedImage在Java中 我认为如果我将图像裁剪成更小的部分并旋转它们 那么我基本上会弯曲图像 但它似乎不起作用 这是我创建的方法 This is a recursive method that will a
  • sqlite递归祖先查询

    我试图弄清楚如何对分层表使用递归查询 我需要获取给定记录的祖先 并且记录应按其在层次结构中的级别顺序排序 也就是说 第一条记录应该是顶级节点 下一条记录应该是子节点 然后是它的子节点 一直到正在查询的记录 考虑一个名为 食物 的表 其中包含
  • CSS vw 和 vh 但相对于父级而不是视口

    我正在尝试创建一个固定纵横比的框 调整大小以不溢出其父级 经典填充底部技巧 https stackoverflow com questions 1495407 maintain the aspect ratio of a div with