开发遇到的一些坑

锚点

常见的锚点实现方式有好几种,采用h5提供的API scrollIntoView()来实现,实现的主要代码如下:

let anchorElement = document.getElementById(id);

if (anchorElement) {

anchorElement.scrollIntoView({ block: "start", behavior: "smooth" });

}

这种方式实现锚点是没有问题的。

遇到的坑:

场景:页面中间部分会有锚点导航,点击定位到锚点部分,当锚点内容部分超过一屏时会在屏幕上方fixed一个锚点导航。

之前的实现方式:fixed出现的导航和页面中间的导航共用一套dom,fixed时改变这套dom的样式就行。

问题:锚点定位不准确(fixed出现和不出现时锚点定位都不准确,没有fixed时,锚点内容位置会少2倍的导航高度)

解决方案

 fixed后锚点内容定位不准确的一般解决方式就是:给锚点内容加个paddingTop:fixed的导航高度。再加一个marginTop:负的fixed的导航高度。

再次遇到的问题:这么解决之后,fixed后的导航锚点定位没有问题了,但是没有fixed的导航定位还存在问题,显示还缺少一个导航的高度。那怎么解决呢?

出现这样的问题:由于两者共用一套dom,当fixed导航出现时,之前文档流中导航部分没有了,所以导致锚点还缺少了一个导航的高度。

解决方案:两者分开,写两套dom,用display来控制显示哪个。让文档流中的导航一直处于占位的状态。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值