首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高度100%的高宽比-欺骗父母

高度100%的高宽比-欺骗父母
EN

Stack Overflow用户
提问于 2018-06-01 13:58:03
回答 1查看 269关注 0票数 0

我有一个父/包装容器,其中的高度依赖于宽度,因此它使用了通常用于iframes和视频的有用的aspect-ratio trick;也就是说,将height: 0padding-top: 53.3%设置为16:9。

我现在的问题是,在这个包装器中有一个子包,它需要有height: 100%。但它没有考虑到填充物,导致一个无身高的孩子溢出。

这个代码片段说明了我的问题:

代码语言:javascript
复制
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);
	}
};
代码语言:javascript
复制
* {
	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;
}
代码语言:javascript
复制
<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>

我想要的是文字出现在盒子里面,红色的背景颜色填充整个盒子的高度。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 14:23:22

我想要的是文字出现在盒子里面,红色的背景颜色填充整个盒子的高度。

这听起来像是你想要里面的盒子绝对定位在填充-戏法盒。如果是这样的话,只需添加position属性就可以做到这一点。

代码语言:javascript
复制
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);
	}
};
代码语言:javascript
复制
* {
	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;
}
代码语言:javascript
复制
<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>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50645085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档