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

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

做者:吴业飞 时间:2018.06.21css


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

导航fix定位下的解决方案

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

<div id="backToTop">
	我要瞬移到顶部!
</div>
复制代码

如今咱们修改html结构布局

<div id="backToTop">
	</br>
	</br>
	</br>
	</br>
</div>
<div>
	我要瞬移到顶部!
</div>
复制代码

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

使用absolute定位布局,从布局角度完全解决遮挡问题

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

<body>
    <div class="page">
      <div class="header"></div>
      <div class="content">
        <div class="footer"></div>	
      </div>
    </div>
 </body>
复制代码

csscode

.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下面,天然不可能实现半透明悬浮了,因此请根据具体需求选择解决方案!htm

参考文献

【1】张鑫旭.CSS 相对|绝对(relative/absolute)定位系列.www.zhangxinxu.com/wordpress/?…get


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

相关文章
相关标签/搜索