css - 高宽比技巧父级的 100%
问题描述
我有一个父/包装容器,其中高度取决于宽度,因此它使用了通常用于 iframe 和视频的有用纵横比技巧;也就是说,设置 ieheight: 0
为padding-top: 53.3%
16:9。
我现在的问题是我在那个需要有height: 100%
. 但它没有考虑填充,导致一个身高不高的孩子溢出。
此代码段说明了我的问题:
let
box = document.querySelector('.aspect-ratio')
;
document.querySelector('[name="toggle"]').onclick = function(){
let
padding_trick = 'height-0'
;
if (box.classList.contains(padding_trick)) {
box.classList.remove(padding_trick);
} else {
box.classList.add(padding_trick);
}
};
* {
box-sizing: border-box;
}
.controller {
margin-bottom: 15px;
}
.wrapper {
position: relative;
width: 400px;
}
.aspect-ratio {
background-color: beige;
}
.aspect-ratio.height-0 {
height: 0;
padding-top: 53.3%;
}
.inner {
background-color: tomato;
height: 100%;
border: 1px solid #222;
}
<div class="root">
<div class="controller">
<button name="toggle">Toggle padding-trick</button>
</div>
<div class="wrapper">
<div class="aspect-ratio height-0">
<div class="inner">
<p>Bordered content height is not 1oo%.</p>
</div>
</div>
</div>
</div>
我想要的是文本出现在框内,并且红色背景色填充了框的整个高度。
解决方案
我想要的是文本出现在框内,并且红色背景色填充了框的整个高度。
这听起来像是您希望内盒绝对位于填充技巧盒上方。如果是这样的话,这应该可以通过添加position
属性来实现。
let
box = document.querySelector('.aspect-ratio')
;
document.querySelector('[name="toggle"]').onclick = function(){
let
padding_trick = 'height-0'
;
if (box.classList.contains(padding_trick)) {
box.classList.remove(padding_trick);
} else {
box.classList.add(padding_trick);
}
};
* {
box-sizing: border-box;
}
.controller {
margin-bottom: 15px;
}
.wrapper {
position: relative;
width: 400px;
}
.aspect-ratio {
background-color: beige;
}
.aspect-ratio.height-0 {
height: 0;
padding-top: 53.3%;
position: relative;
}
.inner {
background-color: tomato;
height: 100%;
border: 1px solid #222;
}
.height-0 .inner {
position: absolute;
top: 0;
}
<div class="root">
<div class="controller">
<button name="toggle">Toggle padding-trick</button>
</div>
<div class="wrapper">
<div class="aspect-ratio height-0">
<div class="inner">
<p>Bordered content height is not 1oo%.</p>
</div>
</div>
</div>
</div>
推荐阅读
- swift - 如何使用 SwiftUI 应用设置超过 30 秒的警报/通知?
- java - Junit:如何检查 2 个集合是否与不同顺序的元素相等?
- python - 如何在 Swift 中计算 iSTFT?
- c# - 解决此问题的最佳方法是什么
- python - Python应用程序框架在应用程序内创建webview
- javascript - 在获取用户之前对路由器的问题做出反应
- mysql - 如何解决复杂的 MySQL 查询以显示两个用户的名称
- c++ - 如何获取从方法模板创建的方法数量
- angular - 谷歌社交登录无法 100% 工作 - 认知/放大
- powershell - 如何将 PowerShell 变量插入字符串块