如何使一个div隐藏/滚动溢出并按比例缩放到视口,同时保持一致的边距?
如何使一个div隐藏/滚动溢出并按比例缩放到视口,同时保持一致的边距?
我需要为div的高度设置一个值,以便它可以正确隐藏/滚动溢出,但我不想要一个特定像素高度的div。我可以通过使用%或vh单位来解决这个问题,但我实际上不想使用这些单位。我的意思是,我不希望我的div始终是页面的2/3,因为这意味着div的底部与浏览器窗口的底部的距离不同,就像这样-
我希望它与浏览器窗口的底部始终保持一致的距离,就像这样-
基本上,我希望我的div的高度是可变的,并且可以隐藏/滚动溢出,但始终与底部保持距离为10px。
这些链接描述了我遇到的相同问题:
这些答案是使用表格或flexbox-这些是唯一的选择(不使用javascript)吗?
我的代码:
问题的出现原因是使用calc()函数时没有正确实现所需效果。解决方法是在calc()函数中减去上方的
的高度,并将overflow属性设置为auto。
解决方法的代码如下:
/* 这些样式只是为了更清楚地展示,并稍微规范化显示。 */ * { box-sizing: border-box; margin: 0; padding: 0; } .page { width: 100px; border: 2px solid; } /* 这是锁定在距离底部一定距离的盒子,这里假设距离底部30像素 */ .outer { height: calc(100vh - 30px); position: relative; border: 1px solid blue; } /* 这是其中的可滚动容器 */ .inner { height: 100%; overflow: auto; }
内容 内容 内容 内容 内容 内容 内容 内容 内容 内容 内容 内容
需要注意的是,如果
的高度为30像素,并且底部需要留出10像素的间隙,那么calc()函数应为calc(100vh - 40px)。此外,滚动不起作用的原因是将overflow属性设置为hidden,而应该设置为auto。