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

一、实现

主要通过设置导航栏元素的位置属性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 .

通过定位position="fixed"实现网页内容的固定层效果的更多相关文章

  1. 层模型--固定定位(position:fixed)

    fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗口)本身. 由于视图本身是固定的,它不会随浏览器窗口的滚动条滚动而变化,除非你在屏幕中移动浏览器窗口 ...

  2. position:sticky 定位 position:fixed

    它的表现类似position:relative和position:fixed的合体,当目标区域在屏幕中可见时,它的行为就像position:relative; 而当页面滚动超出目标区域时,它的表现就像 ...

  3. [转]position:fixed; 在IE9下无效果的问题

    本文转自:http://www.cnblogs.com/xinwang/archive/2013/04/06/3002384.html 平常DIV+CSS布局时,position属性一般用absoul ...

  4. css定位position认识

    1.绝对定位(position: absolute) 2.相对定位(position: relative) 3.固定定位(position: fixed) 绝对定位 设置position:absolu ...

  5. 定位 position 透明度 opacity

    1.position 定位 position:fixed 固定定位 position:relative 相对定位(不指定父级元素的话相对于document) position:absolute 绝对定 ...

  6. 盒子布局、标签特性display、浮动、定位position

    盒子模型布局: 盒子模型:每个标签都是一个盒子 盒子在页面显示在大小是:自身宽度+边框+边距(内边框+外边距) 如果一个盒子设置了边框,则边框需要被加两遍.若果设置了边距则内外边距根据设置情况要被加两 ...

  7. 当锚点定位遇上position: fixed

    <!DOCTYPE html><html> <head> <title>当锚点定位遇上position: fixed</title> < ...

  8. position fixed 相对于父级定位

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 关于苹果手机微信端 position: fixed定位top导航栏问题

    在移动端,position: fixed定位一般不被识别,或者在ios系统中,获取input焦点时,会导致position: fixed的top失效,下面是我验证过的方法,大家可以试试.<!do ...

随机推荐

  1. (转)Linq学习笔记

    写在前面 最近在看Linq,在博客园看到这篇文章,写的通俗易懂,转来和大家一起做个分享.原文地址http://www.cnblogs.com/goscan/archive/2011/05/05/Lin ...

  2. C#开发MySQL数据库程序时需要注意的几点

    一:引用MySQL使用基于Parameter方式代码,总是提示:“Column '列名'cannot be null”解决 MySQL使用基于Parameter方式代码,总是提示:“Column '列 ...

  3. Centos GPG key retrieval failed: [Errno 14] Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL

    warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEYRetrieving key fro ...

  4. CSS3选择器(三)之伪类选择器

    伪类选择器对于大家来说最熟悉的莫过于:link,:focus,:hover之类的了,因为这些在平时中是常用到的伪类选择器,那么先和大家一起简单总 结一下CSS中常用的伪类选择器的使用方法,最后把重心放 ...

  5. mac 下的 top 命令

    mac 下的 top 命令 文章目录 以前只是在 linux 机器上使用 top 命令.常用的快键键是: p 键 - 按 cpu 使用率排序 m 键 - 按内存使用量排序 这 2 个快捷键在 mac ...

  6. Pointcut is not well-formed: expecting 'identifier' at character position 0

    异常如下: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDa ...

  7. Swift UICollectionView 简单使用

    最近要研究下排布的游戏关卡界面的实现,简单做了个UICollectionView的demo. 先看最后的效果: 下面来看实现的方法把,在Storyboard对应的ViewController中增加一个 ...

  8. 应用服务器上部署自己的 blog 和 wiki 组件。

    协作性应用程序 这就是 Web 2.0 的全部,尽管该术语出现才几乎一年的时间,但现在好像只有烹饪杂志还没有加入到讨论 Web 2.0 未来出路的行列中.自从出现了里程碑式的文章 "What ...

  9. diff和patch配合使用(转载备用)

    Linux下diff与patch命令的配合使用 在Linux下,diff与patch命令配合使用可以进行简单的代码维护工作. [A] diffdiff命令用于比较文件的差异,可以用于制作patch文件 ...

  10. Office 2010 KMS激活原理和案例分享 - Your Office Solution Here - Site Home - TechNet Blogs

    [作者:葛伟华.张玉工程师 ,  Office/Project支持团队, 微软亚太区全球技术支持中心 ] 为了减低部署盗版(可能包含恶意软件.病毒和其他安全风险)的可能性,Office 2010面向企 ...