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

一、实现

主要通过设置导航栏元素的位置属性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. HDU1116 Play on Words(有向图欧拉通路)

    我把单词当作点,然后这样其实是不对的,这样就要判定是否是哈密顿通路.. 这题应该把单词的首尾单词当作点,而单词本身就是边,那样就是判定欧拉通路了. 有向图包含欧拉通路的充要条件是:首先基图连通,然后是 ...

  2. No FileSystem for scheme: 远程访问HDFS找不到shceme

    问题描述: hadoop版本:hadoop-2.0.0-cdh4.3.0 在本地环境下能够找到scheme,但是通过maven打包fatjar 后放到其他机器上就出现找不到scheme. 看了代码,发 ...

  3. 避免常见的6种HTML5错误用法

    一.不要使用section作为div的替代品 人们在标签使用中最常见到的错误之一就是随意将HTML5的<section>等价于<div>——具体地说,就是直接用作替代品(用于样 ...

  4. android sdk 安装排错

    如果你遇到了消息为“Failed to fetch URL…” 的错误提示,那么你需要将HTTPS方式改为HTTP方式,方法如下: 碰到这样错误,请按下边的操作. 1)在菜单选择Tools—Optio ...

  5. 微信公众平台开发:Web App开发入门

    WebApp与Native App有何区别呢?Native App:1.开发成本非常大.一般使用的开发语言为JAVA.C++.Objective-C.2.更新体验较差.同时也比较麻烦.每一次发布新的版 ...

  6. POJ 2891 Strange Way to Express Integers(中国剩余定理)

    题目链接 虽然我不懂... #include <cstdio> #include <cstring> #include <map> #include <cma ...

  7. u盘文件系统故障的修复方法

    比如U盘挂载的文件系统是/dev/sda1,且文件系统有故障(FAT: Filesystem error) 修复U盘文件系统故障 sudo dosfsck -v -a /dev/sda1

  8. Spring Aop实例

    一.XML方式 1. TestAspect:切面类 package com.spring.aop; import org.aspectj.lang.JoinPoint; import org.aspe ...

  9. SVN 中trunk、branches、tags

    SVN 中trunk.branches.tags   我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录.由于SVN固有的特点,目录在SVN中并没有特别 ...

  10. C++ Generate Rand Number Array by "srand()" 生成随机数

    在C++中,我们有时想生成一个由随机数组成的数组,而且随机数的范围也可由我们来设定.那么我们就要用到srand()函数配合rand()来使用,参见如下代码: #include <vector&g ...