解决flex动态高度问题

Demo预览:

https://sunzsh.github.io/html-demos/sticky.html

代码 / 文件:

https://github.com/sunzsh/st-html-demo/blob/master/sticky.html

大家好

今天这个小伙伴的问题也挺好玩

他给了我一些灵感我们来模拟一下哈

他的意思是上面有一个容器

下面是主体

然后呢他想让

上面这个容器在滚动的时候

固定在浏览器顶端

所以呢他给它加了一个

position: fixed

然后呢 top

0

这样就固定住了

但是呢

滚动在最上面的时候呢

他会盖住第一句话

我们给他加一个透明度就能看出来

大家看第一句话是被盖住了

所以他为了不被遮盖住

他不得不在这个body上加一个paddding-top

比如说60

大家看这样第一句话就露出来了

但是他(说):不能用padding-top!为什么呢?

因为(他的项目里)上面这个容器的内容是动态的

也就说他高度也是动态的

不一定是60

比如说他内容多了点

加1行

那这时候这块60就不行了

所以呢他不能用padding-top

那他就问有没有什么比较好的方法

我看到这个问题的时候

第一个想法其实就是简单一点

用 JS 来解决一下

比如说我们这不写死了

等浏览器加载完以后

我们用javascript代码来

动态设置这个 padding-top

我们来试一下啊

document.querySelector

然后这里边叫 top-bar

缺个点

好这样能拿到

然后点

应该有个 clientHeight

现在是84 (大家看)

好相当于用这句代码

就可以动态的获取到

顶部这个容器的高度

所以呢我们在下边加一段 script

我把这块先收起来

我们在这块加一个 script

然后

这个是这个高度

我们把它赋值给谁呢!很简单

document.body.style.paddingTop

等于这个

我们还要拼接个单位

px

好我们把它先关上哈

哎可以了

(大家看)我这个给它加高一点

哎也没问题好

这是我第一个想到的思路

那其实我们还有一个更简单的方法

我先把这注释掉

就是我们不用这个

position:fixed

直接把它改成 sticky

粘性布局

打卡

也是没问题的

而且这样更简单

我们直接把这块

删掉

打开

或者我再多一点

大家看!就很完美的解决了

好!今天就到这里谢谢大家

最后更新于