在开发过程中出现了一个问题,就是容器里用栅栏布局格式,顶满了容器,然后顶部还有一个容器,这样的话,由于内容宽高超过了容器宽高,页面的宽度会被强行扩展,解决这个问题的记录如下:
方法1:overflow允许滚动
因为我一开始想的是栅栏布局的容器和顶部容器共享父容器的高度,栅栏容器的高度适配剩余的高度,但是发现好像不管用,于是我想到了强行控制栅栏布局的容器大小。
默认情况下,CSS 设置 overflow
的值为 visible
,这意味着即使内容超出了其容器的边界,它仍然会被显示出来。这可以导致看起来容器尺寸没有正确限制其内部元素,特别是在使用 Flexbox 布局时,这种效果会更加明显。
不过当设置 overflow: auto;
时,浏览器会检查容器内的内容是否超出了其边界。如果超出,浏览器会自动添加滚动条以允许用户滚动查看隐藏的内容。这不仅保持了页面的整洁,还确保了布局不会因为内容溢出而破坏。
.layer.main {
display: flex;
flex-direction: column;
align-items: center;
flex: 1; /* 使得这个元素填满所有可用的剩余空间 */
width: 100%; /* 确保宽度只是占满容器宽度,不超出 */
overflow: auto; /* 如果内容过多,允许滚动 */
}
方法2:控制容器的整体所占比例
因为我写的样式是顶宽的,容器里一行会有3张卡片,会占满父容器的宽度,高度自适应,这样会避免让图片变形;当然也可以设置容器宽度,然后高度自适应,在宽度百分比合适的情况下,也能空出顶部容器的高度,从而避免页面被强行扩展。
我直接取消了固定的栅栏布局,让宽度自适应,这样子也是可行的:
参考资料:
参与讨论
(Participate in the discussion)
参与讨论