通过绝对定位absolute="fixed"实现网页内容的固定层效果

在网页的顶部或者底部导航栏中经常需要使用到固定层的效果,即紧挨浏览器窗口的顶部或底部而网页其他内容的影响。

一、实现

主要通过设置导航栏元素的位置属性position="fixed"来实现导航栏的固定效果。

学习过bootstrap框架都知道,在为网页设置顶部或底部导航栏时,需要为div或者ul列表设置

class="navbar navbar-fixed-top"或class="navbar navbar-fixed-bottom"的类名,

在这里可以发现都用到了fixed的属性,查看相关的css代码可以发现:

二、定位

定位position有五个属性:relative、absolute、fixed、static、inherit,其中fixed和absolute都为固定定位,

顶部导航或者底部导航的元素都被定位成fixed绝对定位,那么fixed的绝对定位和absolute的绝对定位有何不同呢?

*position:fixed;  position:absolute;的异同:

【相同点】

1.完全脱离标准文档流;

2.未设置偏移量时,都定位于父元素的左上角(元素设置定位后,就具有偏移属性和堆叠属性z-index);

2.在没有设置定位形式的时候,它会在页面垂直排列的,在左上角显示;
3.在游览器中显示会有一个默认的margin 和padding值(故在添加导航时需设置body的padding和margin为0)。

【不同点】

1.absolute定位的元素会随滚动条变化而改变位置(其定位相对于页面元素);

2.fixed定位的元素位置固定,不随滚动条变化而改变位置,并且滚动条变化时被其遮盖的元素会从其下方穿过。

三、实现固定层效果要注意的问题

若页面结构如下:

需要设置#top元素为顶部导航,则需要设置对应的样式如下:

【解析】

1.由于body存在默认页面间距,所以首先要设置页面间距为0,否则元素无法撑满整个可视窗口;

2.为顶部元素#top设置fixed定位。

3.由于给top选择器设置fixed固定定位时,(top层已经脱离了标准文档流),其父包裹层body的margin与mainbody的

上margin值发生了重叠,(此时的body与mainbody属于标准文档流)mainbody的上margin值大于body的margin,

选择了mainbody的上margin值20px(标准文档流中上下margin发生重叠时选择margin值大的那个)所以body下移

20px;top层又以body层定位,从而导致了top层与浏览器可视窗口产生了20px的距离。

为了保持top层与浏览器窗口紧挨着,则需对top层的固定定位设置偏移量top:0;

同时为了保证主体内容和导航之间存在一定的间距,为#mainbody设置margin-top:60px .

时间: 2024-10-05 12:18:46

通过绝对定位absolute="fixed"实现网页内容的固定层效果的相关文章

绝对定位( Absolute positioning )

绝对定位( Absolute positioning ) 之前在介绍定位体系的时候,已经简单的介绍了绝对定位和固定定位.一般情况下,这两种定位的元素, 在 3D 的可视化模型中,处于浮动元素的上方,或者说比浮动元素更靠前1. 参照元素 绝对定位(Absolute positioning)元素定位的参照物是其包含块,既相对于其包含块2进行定位,不一定是其父元素. 示例代码: <div style="position:relative; width:300px; height:300px; b

【CSS】 布局之浮动float和绝对定位absolute的选择

浮动float: 浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止. 由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样.(W3C) 绝对定位absolute: 设置为绝对定位的元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块.元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样.元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框.(W3C) 以上是W3C里对浮动和绝

【随笔】关于绝对定位absolute相对于父元素定位的问题

绝对定位absolute的官方定义: 设置为绝对定位的元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块.元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样.元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框. 在官方定义中,并没有提到在什么情况下绝对定位相对于父元素定位,又在什么情况下相对于初始包含快也就是body定位? 其实很简单,当该元素设置为绝对定位absolute时,如果父元素为相对定位relative,则该元素相

解决absolute fixed元素在安卓唤起虚拟键盘时,元素被挤上来。

//由于安卓虚拟键盘也会占位置,致使页面高度变小,所以absolute fixed元素跟着移动 //防止唤起键盘,导致absolute元素被挤上来 var isAndroid = navigator.userAgent.indexOf('Android') > -1 || navigator.userAgent.indexOf('Adr') > -1; if (isAndroid){//如果是安卓手机的浏览器 var win_h = $(window).height();//关键代码 $(&q

css 实现固定层效果

1.固定层效果 固定层效果在网站的页面中非常常见,如下图实例: 在拖动滚动条时,页面的“top”层始终显示在页面最顶方,而“content”层则会穿过“top”层上下移动,这种效果即为固定层效果. 2.关于css的position position属性有四个值,分别为: absolute:绝对定位.相对于 static 定位以外的第一个父元素进行定位. fixed:     绝对定位.相对于浏览器窗口进行定位. relative: 相对定位.按照元素的原始位置进行定位. static:    默

CSS定位:相对定位、绝对定位和固定定位(relative absolute fixed)

相对定位:position:relative; 不脱离文档流,参考自身静态位置通过top,bottom,left,right定位,并且可通过z-index进行层次分级. 绝对定位:position:absolute; 脱离文档流,通过top,bottom,left,right定位,选取其最近的父级元素进行定位,当父级元素position为static时,absolute元素将以body坐标原点进行定位,可通过x-index层次分级. 固定定位:position:fixed; 这里他所固定的对象是

CSS position relative absolute fixed

position属性absolute与relative 详解 最近一直在研究javascript脚本,熟悉DOM中CSS样式的各种定位属性,以前对这个属性不太了解,从网上找到两篇文章感觉讲得很透彻,收藏下来,唯恐忘记. 一.解读absolute与relative 很多朋友问过我absolute与relative怎么区分,怎么用?我们都知道absolute是绝对定位,relative是相对定位,但是这个绝对与相对是什么意思呢?绝对是什么地方的绝对,相对又是相对于什么地方而言的呢?那他们又有什么样的

position absolute fixed relative static inherit

1 object.style.position="absolute" 2 3 absolute 4 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位. 5 6 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定. 7 8 fixed 9 生成绝对定位的元素,相对于浏览器窗口进行定位. 10 11 元素的位置通过 "left&q

CSS position绝对定位absolute relative

常常使用position用于层的绝对定位,比如我们让一个层位于一个层内具体什么位置,为即可使用position:absolute和position:relative实现. 一.position语法与结构   -   TOP position语法: position : static absolute relative position参数:static : 无特殊定位,对象遵循HTML定位规则absolute : 将对象从文档流中拖出,使用left,right,top,bottom等属性进行绝对