自适应垂直居中:不满一屏垂直居中,超过一屏滚动
垂直居中与全屏滚动不可得兼?有更好的方法。
需求
在内容不多,不够一屏的时候,垂直居中在屏幕正中。
当内容足够多,超过一屏时,像正常网页一样滚动浏览。
实现
使用 js 计算过于复杂了,想到了一个使用 css 解决这个问题的方式。
使用 flex 进行布局,但是要注意的是不能直接使用:
1 | flex-direction: column |
进行垂直居中,这种方式在内容过多时,不能够完全撑起外层容器,造成内容顶部和底部显示不完整。
那么如何进行垂直居中?答案是利用伪元素:
1 | .wrapper { |
利用伪元素来填充顶部和底部,来实现垂直居中对齐。
此时页面的内容其实是从上到下来进行排列的,当内容变多时,伪元素填充会自动被压缩变为0,页面正常滚动。