第85天 怎么让body高度自适应屏幕?为什么?
html,body{height:100%}
同楼上,html,body同时设置成100%才有效,html百分比是相对于浏览器而言的,其他元素相对于父元素。
注意:这样设置会使
-webkit-overflow-scrolling: touch;不起作用,之前遇到过这种问题,不对的请指正。
body{
height: 100vh;
}
body{height:100%}
@nowherebutup @dondonZh 只写body应该不行吧?
@nowherebutup @dondonZh 只写body应该不行吧?
100vh是可以的,在任何地方,100%的话需要从HTML开始。
不知道我理解对不对
为何只设置body{height:100%}不行?
height:100%是相对于父元素来说的,如果只设置body的高度属性,由于其父元素是html高度未设置,且并非浏览器窗口高度,所以只设置body为100%是不能达到效果的,必须html,body都设置100%。而body{height: 100vh}直接把高度设置成了视口高度,与html大小无关,所以只在body设置vh是可行的。
不知道我理解对不对
为何只设置body{height:100%}不行?
height:100%是相对于父元素来说的,如果只设置body的高度属性,由于其父元素是html高度未设置,且并非浏览器窗口高度,所以只设置body为100%是不能达到效果的,必须html,body都设置100%。而body{height: 100vh}直接把高度设置成了视口高度,与html大小无关,所以只在body设置vh是可行的。
贤弟理解很到位。
DOM 元素的 height 当设为百分比时,只有当父元素有一个定高的值时才会生效,否则不起作用。
因此要让 body 高度自适应就必须要在 html 上设置定高。而 html 的父级就是浏览器,html 的宽高由浏览器决定。浏览器的宽高是定值,因此需要给 html 和 body 同时设置 100%。
另外也可以给 body 设置一个 min-height: 100vh; 让 body在高度不够时可以撑满整个屏幕。(做验证可以使用 border,background 即便是高度不足时,浏览器也会天,填满颜色。
Most helpful comment
不知道我理解对不对
为何只设置body{height:100%}不行?
height:100%是相对于父元素来说的,如果只设置body的高度属性,由于其父元素是html高度未设置,且并非浏览器窗口高度,所以只设置body为100%是不能达到效果的,必须html,body都设置100%。而body{height: 100vh}直接把高度设置成了视口高度,与html大小无关,所以只在body设置vh是可行的。