我正在一个现有框架中工作,因此我可以编辑的CSS / HTML受到限制。我在父母中有两个孩子DIV,我希望分别是父母身高的80%和20%。但是,由于父母有'margin:auto;',我无法正常工作。
有人可以帮忙吗?我知道我可以使用JS来解决此问题,但强烈希望不要这样做。如果可能,希望使用CSS修复程序。
请注意,由于我在第三方产品框架内工作,因此无法更改标记区域以外的HTML或CSS。
有关问题的示例,请参见jsFiddle:https://jsfiddle.net/6vb5910m/
谢谢
<html>
<body>
<div class="flexer">
<div class="template-container">
<div class="template-contents">
<!-- Cannot change anything above this line -->
<div class="ztop" style="background: rgb(200,0,0,0.3);">
I am 80% of Parent Height
</div>
<div class="zbottom" style="background: rgb(0,200,0,0.3);">
I am 20% of Parent Height
</div>
<!-- Cannot change anything below this line -->
</div>
</div>
</div>
</body>
答案 0 :(得分:1)
如果您父母的身高为auto
,恐怕这是不可能的。
父级将始终扩展以包含所有子级,因此其高度取决于子级的高度。
如果您的孩子也取决于父母的身高,那么您将陷入无限循环。
我认为唯一的解决方案是使用一些Javascript,通过它您可以动态获取父级的身高并将正确的身高应用于孩子。
或者如果您不需要此页面上的auto
高度,可以直接在源代码中覆盖template-contents
的高度,这样它就不会应用于其他页面吗?
<html>
<body>
<div class="flexer">
<div class="template-container">
<div class="template-contents">
<!-- Cannot change anything above this line -->
<style>
.template-contents {
height: 100%;
}
</style>
<div class="ztop" style="background: rgb(200,0,0,0.3);">
I am 80% of Parent Height
</div>
<div class="zbottom" style="background: rgb(0,200,0,0.3);">
I am 20% of Parent Height
</div>
<!-- Cannot change anything below this line -->
</div>
</div>
</div>
</body>
</html>
答案 1 :(得分:0)
您的身高百分比不起作用,因为您的父母没有身高:)
只需将height: 100%;
添加到.template-contents
即可使用:
.template-container {
display: flex;
width: 100%;
padding: 10px;
text-align: center;
height: 100%;
box-sizing: border-box;
list-style: none;
line-height: 1.42857;
}
.template-contents {
display: block;
margin: auto;
text-align: center;
width: 100%;
height: 100%;
box-sizing: border-box;
}
.flexer {
width: 200px;
height: 200px;
border: 1px solid;
}
.ztop {
height: 80%;
}
.zbottom {
height: 20%;
}
<html>
<body>
<div class="flexer">
<div class="template-container">
<div class="template-contents">
<!-- Cannot change anything above this line -->
<div class="ztop" style="background: rgb(200,0,0,0.3);">
I am 80% of Parent Height
</div>
<div class="zbottom" style="background: rgb(0,200,0,0.3);">
I am 20% of Parent Height
</div>
<!-- Cannot change anything below this line -->
</div>
</div>
</div>
</body>
</html>
答案 2 :(得分:0)
在父元素中使用高度100%。
.template-contents {
display: block;
margin: auto;
text-align: center;
width: 100%;
height: 100%;
box-sizing: border-box;
}
或将页边距自动更改为0
.template-contents {
display: block;
margin: 0 auto;
text-align: center;
width: 100%;
box-sizing: border-box;
}
答案 3 :(得分:0)
即使您无法更改HTML,也可以始终覆盖CSS。所以只需添加
.template-contents {
margin: 0 auto;
}
这将使水平边距保持自动,但删除垂直边距。