CSS 定位之position全面了解

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

在前端网页布局中,在同一平面上布局,我们大都采用float属性来定位网页元素的位置。但是涉及到弹出层、浮层、页面广告插件等等,都需要CSS中的position属性来定位了,对于初学者来说经常分不清楚是应该用position属性的absolute值、relative值、fixed值等等,下面我们就position属性基本的这三个值的用法做一些简单的介绍,希望对初学者有些帮助。

1、position的absolute(绝对定位)

在这里position的absolute绝对定位我们分两类来讲:

A:给元素定义了position:absolute,其父框架没有定义任何position属性。此时的绝对定位就是相对于页面四周最边缘来进行定位的,位置将依据浏览器左上角的0点开始计算,绝对定位使元素与文档流无关,因此不占据空间。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。其位置不受父框架的影响,只以页面四周边缘开始计算。代码如下:

CSS Code复制内容到剪贴板
  1. <span style="color: #008000;"><!doctype html>   
  2. <html>   
  3. <head>   
  4. <meta charset="utf-8">   
  5. <title>position</title>   
  6. <style type="text/css">   
  7. .demo{position:absoluteleft:100pxtop:200pxbackground:#ff0000color:#ffftext-align:center;width:300pxheight:300px;}   
  8. .all{width:800pxheight:800pxmargin-left:150pxmargin-top:50pxbackground:#000;}   
  9. </style>   
  10. </head>   
  11.     
  12. <body>   
  13. <div class="all">   
  14. <div class="demo">   
  15. position:absolute;<br />   
  16. left:100px;<br />   
  17. top:200px;<br />   
  18. </div>   
  19. </div>   
  20. </body>   
  21. </html>   
  22. </span>    

效果如下图:

B:给元素定义了position:absolute,其父框架定义了position:absolute\position:relative\position:fixed属性。此时的绝对定位就是相对于父框架最边缘最边缘来进行定位的,绝对定位使元素与文档流无关,因此不占据空间。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。其位置只在父框架内做变化,代码如下:

CSS Code复制内容到剪贴板
  1. <span style="color: #008000;"><!doctype html>   
  2. <html>   
  3. <head>   
  4. <meta charset="utf-8">   
  5. <title>position</title>   
  6. <style type="text/css">   
  7. .demo{position:absoluteleft:100pxtop:200pxbackground:#ff0000color:#ffftext-align:center;width:300pxheight:300px;}   
  8. .all{width:800pxheight:800pxmargin-left:150pxmargin-top:50pxbackground:#000position:relative}   
  9. </style>   
  10. </head>   
  11.     
  12. <body>   
  13. <div class="all">   
  14. <div class="demo">   
  15. position:absolute;<br />   
  16. left:100px;<br />   
  17. top:200px;<br />   
  18. </div>   
  19. </div>   
  20. </body>   
  21. </html>   
  22. </span>    

效果如下图

所以,如果页面元素的定位,想要定义在父元素内,而不受显示器分辨率,浏览器窗口大小等限制时,建议采用B种方案。

2、position的relative(相对定位) 

  如果对一个元素进行相对定位,首先它将出现在它所在的位置上。然后通过设置垂直或水平位置,让这个元素“相对于”它的原始起点进行移动。(再一点,相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其他框)。

relative的确是相对于自己来定位的,父DIV设置了position:relative 没有给出值,它自身是没有效果的
但是对于它的子元素起到了参照作用

3、position的fixed   fixed总是以body为定位时的对象,总是根据浏览器的窗口来进行元素的定位,通过"left"、 "top"、 "right"、 "bottom" 属性进行定位。

关于position用法貌似还有很多,小编语言组织能力不是太好,总结一下用法:

当你需要做一个有下拉二级菜单效果时,父元素你需要position:relative,而里面的下拉元素则需要position:absolute。

当你需要做一个页面漂浮的广告,或者做一个返回页面顶端的按钮是,你需要position:fixed。

通常我们使用position:absolute;position:relative进行绝对定位布局,通过CSS进行定义定位,DIV布局HTML,注意什么地方使用position:relative,什么地方使用position:absolute进行定位,同时不要忘记使用left、right、top、bottom的配合定位具体位置。绝对定位如果父级不使用position:relative,而直接使用position:absolute绝对定位,这个时候将会以body标签为父级,使用position:absolute定义对象无论位于DIV多少层结构,都将会被拖出以<body>为父级(参考级)进行绝对定位。绝对定位非常好用,但切记不要滥用,什么地方都用,这样有时会懒得计算距离上、下、左、右间距,同时可能会造成CSS代码臃肿,更加经验适当使用,用于该使用地方。
在绝对定位时候我们可以使用css z-index定义css层重叠顺序。
同时left、right、bottom、top的数值,可以使用(Photoshop)PS切片工具获取准确的数值。

末了,小编在提醒一句,如果你在你的父DIV里面的子DIV使用了position:absolute属性定位,而父DIV没有做任何定义(父DIV里面已经被其他元素填充占据),还想要子DIV定义起到作用,这个时候子DIV你可以不用left、top、right、bottom来定义,可以使用margin-top、margin-left来定义,但是此种方法在ie6/7下和ie8/9/10/11、火狐、谷歌下面的位置是不一样的,针对ie6/7你需要用到css Hack,代码如下:

CSS Code复制内容到剪贴板
  1.  <span ><!doctype html>   
  2. <html>   
  3. <head>   
  4. <meta charset="utf-8">   
  5. <title>position</title>   
  6. <style type="text/css">   
  7. .demo{position:absolutemargin-left:100pxmargin-top:200pxbackground:#ff0000color:#ffftext-align:center;width:300pxheight:300px;}   
  8. .all{width:600pxheight:600pxmargin-left:150pxmargin-top:50pxbackground:#000;}   
  9. </style>   
  10. </head>   
  11.     
  12. <body>   
  13. <div class="all">   
  14. <img src="1.jpg" width="600" height="600" />   
  15. <div class="demo">   
  16. position:absolute;<br />   
  17. margin-left:100px;<br />   
  18. margin-top:200px;<br />   
  19. </div>   
  20. </div>   
  21. </body>   
  22. </html>   
  23. </span>   

效果如下图

使用CSS Hack之后  代码:

CSS Code复制内容到剪贴板
  1.   
  2.   
  3.  <span ><!doctype html>   
  4. <html>   
  5. <head>   
  6. <meta charset="utf-8">   
  7. <title>position</title>   
  8. <style type="text/css">   
  9. .demo{position:absolutemargin-left:100pxmargin-top:-400px;*margin-top:200px;*margin-left:-500pxbackground:#ff0000color:#ffftext-align:center;width:300pxheight:300px;}   
  10. .all{width:600pxheight:600pxmargin-left:150pxmargin-top:50pxbackground:#000;}   
  11. </style>   
  12. </head>   
  13.     
  14. <body>   
  15. <div class="all">   
  16. <img src="1.jpg" width="600" height="600" />   
  17. <div class="demo">   
  18. position:absolute;<br />   
  19. margin-left:100px;<br />   
  20. margin-top:200px;<br />   
  21. </div>   
  22. </div>   
  23. </body>   
  24. </html>   
  25. </span>   

在各个版本的浏览器下的  效果如下

此种方法最好不要使用   在不同版本浏览器下需要来回的用CSS Hack调整!

以上这篇CSS 定位之position全面了解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

原文地址:http://www.cnblogs.com/androidshouce/archive/2016/07/08/5652236.html

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

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 分享
查看更多