所以我有一个包含html
,header
,body
,div
标签等的网页。对于CSS,我有:
* {
margin: 0;
padding: 0;
}
html {
width: 100%;
height: 100%;
}
body {
width: 98%;
height: 98%;
padding: 1%;
}
我的问题是浏览器右侧有一个滚动条。意思是身高太高了?
html
设置为100%
高度和宽度。 body
有一个1%
填充,可以添加1%
顶部,右侧,底部和左侧,因此width - 2 = 98
和height - 2 = 98
。
填充1%
高度98%
和宽度98%
。我如何获得滚动条?
答案 0 :(得分:10)
它没有按预期工作,因为基于百分比的padding
是相对于元素的宽度。如果您调整浏览器的大小以使高度大于宽度,您会注意到滚动条消失(这是因为padding
相对于宽度)。
根据规范:
8 Box model - 8.4 Padding properties:
百分比是根据生成的框的包含块的宽度计算的,即使对于“padding-top”和“padding-bottom”也是如此。如果包含块的宽度取决于此元素,则在CSS 2.1中未定义结果布局。
一种可能的解决方法是使用视口百分比单位(例如vw
)以使百分比相对于宽度:
body {
width: 98%;
height: 98%;
padding: 1vh 1vw;
}
您还可以添加box-sizing: border-box
以在元素的维度中包含padding
:
body {
width: 100%;
height: 100%;
padding: 1%;
box-sizing: border-box;
}
答案 1 :(得分:2)
在CSS中,百分比边距和填充是相对于容器的宽度的,因为Josh Crozier在他的回答中已经解释过了。
我建议在<html>
元素上设置百分比填充,文档的根目录加上box-sizing: border-box;
,它会为您提供相等的空间。
border-box
此元素的宽度和高度(以及相应的最小/最大属性)的长度和百分比值决定了 边框框的元素。也就是说,指定的任何填充或边框 元素在这个指定的宽度内布局和绘制 高度。内容宽度和高度通过减去 边界和指定的相应边的填充宽度 宽度和高度属性。 - W3C
html {
background: silver;
box-sizing: border-box;
height: 100%;
padding: 5%;
}
body {
background: pink;
height: 100%;
margin: 0;
}
&#13;