ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

布局解决悬浮固定导航栏遮挡页面主体内容问题(主要考虑遮挡锚点问题)

2021-09-04 10:02:17  阅读:152  来源: 互联网

标签:悬浮 遮挡 content 锚点 导航 页面


# 布局解决悬浮固定导航栏遮挡页面主体内容问题(主要考虑遮挡锚点问题)

作者:吴业飞

时间:2018.06.21


 

---

在工作中经常遇到使用`position: fixed;`固定在页面顶部的导航栏会遮挡页面主体内容,特别是在使用锚点跳转的时候,锚点默认跳转到视窗顶部,正好被导航遮挡。我使用过两种方式解决这个问题,各有优劣,视具体需求而定。

## 导航fix定位下的解决方案

思路是将锚点安在真正要使用锚点定位的元素的上一个兄弟元素上,文字表述有点绕,show the code!

假设我们要安锚点的元素是

<div id="backToTop">

我要瞬移到顶部!

</div>

现在我们修改`html`结构

<div id="backToTop">

</br>

</br>

</br>

</br>

</div>

<div>

我要瞬移到顶部!

</div>

原理很简单,我用`</br>`换行粗暴地撑开了一定的高度实现不被导航栏遮挡。这样的缺点是破坏了布局,撑开的间距可能会比较难看,如果导航的高度不是太大这点间距可以接受,如果导航的高度过高页面就会有较大留白,所以我不倾向使用这种方式,毕竟设计师要求100%还原设计稿。

## 使用absolute定位布局,从布局角度彻底解决遮挡问题

思路:不使用fix定位导航栏,直接将导航栏独立出来,不参与页面滚动,模拟悬浮固定效果。

`html`

<body>

<div class="page">

<div class="header"></div>

<div class="content">

<div class="footer"></div>

</div>

</div>

</body>

`css`

.page {

position: absolute;

top: 0;

left: 0;

width: 100%;

height: 100%;

}

.header,

.content {

position: absolute;

left: 0;

right: 0;

}

.content {

top: 90px;//这里的90px是留出头部导航栏的高度,头部多高这里就多高

bottom: 1px;//这里之所以设置1px是因为如果不设置将不会有头部‘悬浮固定’效果,头部将会随页面一起滚动,设置了1px以后滚动条只出现在content区域,从而模拟悬浮固定效果

overflow: auto;//关键代码!可以让content区域出现滚动条而不是整个page区域滚动,配合bottom:1px使用!

}

这个解决方案看起来完美地解决了遮挡问题,因为锚点确实只会跳到content区域的顶部,因为BFC了(不了解BFC的请自行Google,非本文重点在此不加阐述),但是在一个场景下是不适用的!就是头部半透明效果下的悬浮固定!因为我们布局的原因,content根本不会滚动到header下面,自然不可能实现半透明悬浮了,所以请根据具体需求选择解决方案!

### 参考文献

【1】张鑫旭.CSS 相对|绝对(relative/absolute)定位系列.http://www.zhangxinxu.com/wordpress/?p=1287

---

版权声明:自由转载-非商用-非衍生-保持署名





 

标签:悬浮,遮挡,content,锚点,导航,页面
来源: https://blog.csdn.net/qq_39684484/article/details/120095440

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有