使用CSS的position属性控制页面布局的入门教程

所属分类: 网页制作 / CSS 阅读数: 224
收藏 0 赞 0 分享

postion 属性定义了一个元素在页面布局中的位置以及对周围元素的影响。该属性共有5个值:

position: absolute
position: relative
position: fixed
position: static
position: inherit
本文主要详细讨论 position 属性的前三个值,首先大概讲解下后两个值:

static

static 为 position 属性的默认值,static 元素会遵循正常的文档流,且会忽略 top,bottom,left,right 等属性。

inherit

inherit 值如同其他 css 属性的 inherit 值,即继承父元素的 position 值。

absolute

absolute 元素将会脱离正常的文档流,所以 其周围的元素将会忽略它的存在。如同 absolute 元素的 display 属性被设为了 none 一样。此时,我们可以使用 top,bottom,left,right 等属性对 absolute 元素进行绝对定位。一般情况下定义两个属性,top 或 bottom,left 或 right。
这个绝对定位需要稍微理解下,因为这里容易与 relative 产生混淆。
例如,当对 absolute 元素添加 left:10px 定位后,这个 left 究竟是对哪个元素而言呢?其实,此时将会往上查找 absolute 元素的第一个父元素,如果该父元素的 position 值存在(且不为 static),那么这个 left:10px 就是根据该父元素进行的定位,否则将会继续查找该父元素的父元素,一直追溯到某个父元素具备不为 static 的 position 值为止,如果不存在满足条件的父元素,则会根据最外层的 window 进行定位。

CSS Code复制内容到剪贴板
  1. <div style="position: absolute">Im an absolute element</div>   
  2. <div>Im a default element</div>  

2016428112744860.jpg (213×33)//直接忽略 absolute 元素的存在

relative

relative 元素遵循正常的文档流,所以周围元素不会忽略它的存在,relative 元素同样支持 top,bottom,left,right 等属性。当我们使用 top,bottom,left,right等属性对 relative 元素进行相对定位时的效果有点类似于 margin 属性达到的效果,但是区别在于, relative 元素周围的元素将会忽略 relative 元素的移动。我们注意,当 relative 元素未使用定位属性进行相对定位时,它不会被周围的元素忽略,但利用定位属性进行定位后,周围的元素会忽略 relative 元素的移动,它们会认为 relative 元素仍然在原来的位置,并未进行移动,我们用个例子来说明:

CSS Code复制内容到剪贴板
  1. <div style="position: relative">Im a relative element</div>   
  2. <div>Im a default element</div>  

2016428112813677.jpg (214×50)//并未忽略 relative 元素的存在

全选复制放进笔记

CSS Code复制内容到剪贴板
  1. <div style="position: relative;top:10px">Im a relative element</div>   
  2. <div>Im a default element</div>  

2016428112844259.jpg (213×43)//忽略了 relative 元素的移动

fixed

fixed 元素将会脱离正常的文档流,所以它与 absolute 元素很相似,同样会被周围元素忽略,支持 top,bottom,left,right 属性,但两者仍有很大不同。
首先,fixed 元素定位与它的父元素无任何关系,它永远是相对最外层的 window 进行定位的。
第二,fixed 元素正如它的名字一样,它是固定在屏幕的某个位置,它不会因为屏幕的滚动而消失。

全选复制放进笔记

CSS Code复制内容到剪贴板
  1. <div style="height:1000px">   
  2.   <div style="position: absolute;">Im an absolute element</div>   
  3.   <div style="position: fixed;">Im a fixed element</div>   
  4.   <div>Im a default element</div>   
  5. </div>  

2016428112918323.jpg (220×41)//如同 absolute,fixed元素也被周围元素忽略

因为外层 div 高度超过一屏,所以现在我们往下滚动屏幕。
2016428112941913.jpg (212×30)//只有 fixed 元素未因为屏幕滚动而消失,因为它是“固定”的

z-index

为什么要在这里提到 z-index 属性呢?那是因为 z-index 属性只对定位元素有效,即 position 值为 absolute,relative,fixed 时才有效。我们首先了解下什么叫 z-index。
2016428113000734.png (465×419)

从上图我们不难发现 z-index 值代表的是元素的堆叠顺序,值越高则显示顺序越优先。

CSS Code复制内容到剪贴板
  1. <div style="position: absolute;z-index:1">Im an absolute element</div>   
  2. <div style="position: fixed;z-index:2">Im a fixed element</div>  

2016428113035154.jpg (211×32)//fixed 元素 z-index 比 absoulute 元素高,所以显示在前面

(我把背景色调为非透明,这样可以看得更清楚),假如 z-index 值相同会出现什么情况呢?

CSS Code复制内容到剪贴板
  1. <div style="position: absolute;z-index:1">Im an absolute element</div>   
  2. <div style="position: fixed;z-index:1">Im a fixed element</div>  

2016428113104360.jpg (211×32)//z-index 值相同,仍然显示为 fixed 元素

所以我们知道,当 z-index 值相同时,后加载的元素显示优先。

综合例子
HTML 

XML/HTML Code复制内容到剪贴板
  1. <div id="example">  
  2.     <div id="div-before">  
  3.      <p>id = div-before</p>  
  4.     </div>  
  5.     <div id="div-1">  
  6.      <div id="div-1-padding">  
  7.       <p>id = div-1</p>  
  8.       <div id="div-1a">  
  9.        <p>id = div-1a</p>  
  10.        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit.</p>  
  11.       </div>  
  12.       <div id="div-1b">  
  13.        <p>id = div-1b</p>  
  14.        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Integer pretium dui sit amet felis. Integer sit amet diam. Phasellus ultrices viverra velit. Nam mattis, arcu ut bibendum commodo, magna nisi tincidunt tortor, quis accumsan augue ipsum id lorem.</p>  
  15.       </div>  
  16.       <div id="div-1c">  
  17.        <p>id = div-1c</p>  
  18.       </div>  
  19.      </div>  
  20.     </div>  
  21.     <div id="div-after">  
  22.      <p>id = div-after</p>  
  23.     </div>  

   </div>

简单的运用一点样式:
CSS

CSS Code复制内容到剪贴板
  1. #example {   
  2.     floatrightright;   
  3.    }   
  4.     
  5.    #example p {   
  6.     margin: 0 0.25em;   
  7.     padding: 0.25em 0;   
  8.    }   
  9.    #div-before,   
  10.    #div-after {   
  11.     background-color#88d;   
  12.     color#000;   
  13.    }   
  14.     
  15.    #div-1 {   
  16.     width400px;   
  17.     background-color#000;   
  18.     color#fff;   
  19.    }   
  20.     
  21.    #div-1-padding {   
  22.     padding10px;   
  23.    }   
  24.     
  25.    #div-1a {   
  26.     background-color#d33;   
  27.     color#fff;   
  28.    }   
  29.     
  30.    #div-1b {   
  31.     background-color#3d3;   
  32.     color#fff;   
  33.    }   
  34.     
  35.    #div-1c {   
  36.     background-color#33d;   
  37.     color#fff;   
  38.    }  

效果:
2016428113150019.png (401×351)

更多精彩内容其他人还在看

CSS入门教程:计算CSS盒模型宽和高

 出处:当我们布局一个网页的时候,经常会遇到这样的一种情况,那就是最终网页成型的宽度或是高度会超出我们预先的计算,其实就就是所谓的CSS的盒模型造成的。 #test{margin:10px;padding:10px;width:100px;height:100px;}
收藏 0 赞 0 分享

在IE流览器中正确显示PNG透明图片

  png图片有很好的品质。阴影效果也不会有杂边,很流畅。如果插入网页的话可以给网站内容增色不少!更重要的是在不增加图片容量大小的情况下提高了页面的图片的质量。对于有复杂背景,如:在有颜色过度背景上插入不规则边框的图片带来极大很便利!   但目前IE中对于插入
收藏 0 赞 0 分享

CSS教程:DIV底部放置文字

  css对文字的布局上没有靠容器底部对齐的参数,目前使用的一个不错的方法也比较好.就是用position属性来解决,看下面的代码,用position的相对和绝对定位功能也轻松的实现了,文字靠近div低部对齐,并且靠近的距离还可以精确到像素,自己可以调节,是不是很不错呢?
收藏 0 赞 0 分享

如何用CSS让文字居于div的底部

  这个问题是别人提出的,因为css对文字的布局上没有靠容器底部对齐的参数,(或许有但是我没有发现)不过目前我使用的一个不错的方法也比较好.就是用position属性来解决,看下面的代码,我用position的相对和绝对定位功能也轻松的实现了,文字靠近div低部对齐,并且靠近
收藏 0 赞 0 分享

从A页面连接到B页面后并直接把B页面的隐藏层显示

  这个效果实现的是,在B页面里有两个层,一个显示层,我们暂定名c层,一个是隐藏层,我们暂定名d层,单独进B页面的时候,c层显示,d层隐藏,然而从A页面连接到B页面的时候,则是让d层显示,c层隐藏,我觉得这个效果对网页设计者以后会有很大帮助,现在把代码发出来,
收藏 0 赞 0 分享

CSS样式表定义标签li前面样式

定义LI前面的小点样式 view plaincopy to clipboardprint? 语法: list-style-type : disc | circle | square | decimal | lower-roman | upper-roman | lowe
收藏 0 赞 0 分享

符合标准的div css制作的弹出菜单

本文介绍了五款符合标准的div css制作的弹出菜单,而且不含有js的. NO.1最基本的:二级dropdown弹出菜单 <!DOCTYPE html PUB
收藏 0 赞 0 分享

CSS实现在文章每段后面加入带连接的隐藏文字

代码主要理解3个参数:createElement、createTextNode、appendChild。这3个js参数分别是创建元素、创建字符、追加节点。代码原理:循环页面段落标签<p>,创建连接元素<a>,创建要显示的连接字符,用SetAttribute
收藏 0 赞 0 分享

CSS:浏览器特定选择器介绍

当你想在一个浏览器里改变样式而不像在其他浏览器中改变时,这些选择器很有用。 IE6以下 *html{} IE 7 以下 *:first-child html {} * html {} 只对IE 7 *:first-child html {} 只对IE 7
收藏 0 赞 0 分享

WEB标准学习,认识两种网页声明的含义

即网页标准推出来以后,我们时常会看到两种不同的网页的声明,一个是Dhtml,一个是Xhtml。如下所示: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "ht
收藏 0 赞 0 分享
查看更多