我们知道当对一个元素设置了 position: fixed; 后,该元素会脱离文档流,下面的内容会顶上来,导致被内容被遮盖。常见的一个做法是设置下面内容的 padding 或 margin,虽然能达到效果,但是总归不完美,特别是当我们想封装一个组件给别人用的时候,还得让别人设置一下样式,这样岂不麻烦,所以就有了下面这个方法,以我封装的这个 vue header 组件为例
示例代码
template
HTML
script
JS
style(scss)
SCSS
总结
外面套一个父元素,height 假设为 50px,然后我们对里面这个元素设置 position: fixed;,它的 height 也设置 50px,这样的话虽然里面脱离了文档流,但是父元素依然占据着空间,所以下面的元素也就不会顶上来,当别人使用你的组件时再也不用费力设置 padding 或 margin 了。
一些效果截图
图中头部是上面示例代码的效果图,tabbar 是我封装的另一个组件,这里为了演示效果,我把他们放到一起
