#outer
和#inner
必须都是position:absolute
或fixed
。
我怎样才能使100%
中的#inner
值相对于#outer
的宽度减去其填充(例如,像一个帧)而没有{{1}溢出?
#inner
html, body {
height: 100%;
margin: 0;
width: 100%;
}
#outer {
background: red;
height: 50%;
padding: 20px;
position: absolute;
width: 50%;
}
#inner {
background: yellow;
height: 100%;
position: absolute;
width: 100%;
}
答案 0 :(得分:3)
html, body {
height: 100%;
margin: 0;
}
#outer {
background: red;
height: 50%;
width: 50%;
/* padding: 20px; */ /* 1 */
position: absolute;
}
#inner {
background: yellow;
position: absolute;
height: calc(100% - 20px); /* 2 */
width: calc(100% - 20px); /* 2 */
top: 50%; /* 3 */
left: 50%; /* 4 */
transform: translate(-50%, -50%); /* 5 */
}
<div id="outer">
<div id="inner"></div>
</div>
注意:
答案 1 :(得分:1)
代码稍微复杂一点,虽然它使用的是flex-box,但在旧版浏览器中并没有。
html, body {
height: 100%;
margin: 0;
}
#outer {
background: red;
height: 50%;
width: 50%;
position: absolute;
display: flex;
}
#inner {
box-sizing: border-box;
background: yellow;
height: calc(100% - 20px);
width: calc(100% - 20px);
margin: auto;
flex: 0 1 1;
}
&#13;
<div id="outer">
<div id="inner"></div>
</div>
&#13;