CSS 定位之position

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

1、position的absolute(绝对定位)

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

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<span style="color: #008000;"><!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>position</title>

<style type="text/css">

.demo{position:absolute; left:100px; top:200px; background:#ff0000; color:#fff; text-align:center;width:300px; height:300px;}

.all{width:800px; height:800px; margin-left:150px; margin-top:50px; background:#000;}

</style>

</head>

<body>

<div class="all">

<div class="demo">

position:absolute;<br />

left:100px;<br />

top:200px;<br />

</div>

</div>

</body>

</html>

</span>

  

效果如下图:

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


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

<span style="color: #008000;"><!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>position</title>

<style type="text/css">

.demo{position:absolute; left:100px; top:200px; background:#ff0000; color:#fff; text-align:center;width:300px; height:300px;}

.all{width:800px; height:800px; margin-left:150px; margin-top:50px; background:#000; position:relative}

</style>

</head>

<body>

<div class="all">

<div class="demo">

position:absolute;<br />

left:100px;<br />

top:200px;<br />

</div>

</div>

</body>

</html>

</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,代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<span style="color: #008000;"><!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>position</title>

<style type="text/css">

.demo{position:absolute; margin-left:100px; margin-top:200px; background:#ff0000; color:#fff; text-align:center;width:300px; height:300px;}

.all{width:600px; height:600px; margin-left:150px; margin-top:50px; background:#000;}

</style>

</head>

<body>

<div class="all">

<img src="1.jpg" width="600" height="600" />

<div class="demo">

position:absolute;<br />

margin-left:100px;<br />

margin-top:200px;<br />

</div>

</div>

</body>

</html>

</span>

  

效果如下图

使用CSS Hack之后  代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<span style="color: #008000;"><!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>position</title>

<style type="text/css">

.demo{position:absolute; margin-left:100px; margin-top:-400px;*margin-top:200px;*margin-left:-500px; background:#ff0000; color:#fff; text-align:center;width:300px; height:300px;}

.all{width:600px; height:600px; margin-left:150px; margin-top:50px; background:#000;}

</style>

</head>

<body>

<div class="all">

<img src="1.jpg" width="600" height="600" />

<div class="demo">

position:absolute;<br />

margin-left:100px;<br />

margin-top:200px;<br />

</div>

</div>

</body>

</html>

</span>

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

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

时间: 2024-10-10 10:17:32

CSS 定位之position的相关文章

CSS学习------CSS定位(position)与浮动(float)

position属性:用来对元素进行定位 定位的意义: 定位允许你定义元素框相对于其正常位置应该出现的位置. 相对于父元素. 相对于另一个元素. 相对于浏览器窗口本身的位置. 定位分为:绝对定位和相对定位. 相对定位: 如果对一个元素进行相对定位,它将出现在它所在的位置上.然后,可以通过设置垂直或水平位置,让这个元素"相对于"它的起点进行移动. 在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间.因此,移动元素会导致它覆盖其它框. 示例: <html>   <

CSS定位属性position

CSS定位元素有3种方式 :普通流.相对位置.绝对位置.通过设置position属性来实现. position属性取值的含义 inherit 继承父元素position 属性的值. static 默认值.没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明). relative 生成相对定位的元素,相对于元素本身正常位置进行定位.因此,"left:20" 会向元素的 LEFT 位置添加 20 像素. absolute 生成绝

css定位、position与float同时使用的情况

一.css定位 CSS 有三种基本的定位机制:普通流.浮动和绝对定位. 1.普通流:未专门指定的元素都在普通流中定位,position:static/relative;和float:none;也在普通流中定位. 2.绝对定位:position:absolute/fixed;元素框脱离普通文档流. 3.浮动:float:left/right;元素脱离普通文档流. 二.对元素同时使用position和float的情况 经过实践发现,无论position和float谁写在前面或后面,都是positio

css 定位属性position的使用方法实例-----一个层叠窗口

运行结果: <!DOCTYPE html> <html> <head> <title>重叠样式窗口</title> <style type="text/css"> div.window{ /*指定窗口的尺寸和边框*/ position:absolute; /*position在其他地方指定*/ width: 300px; /*窗口尺寸,不含边框*/ height: 200px; border: 3px outset

css定位 与position

本文同时发表于本人个人网站 www.yaoxiaowen.com 在正式讨论position之前,我们需要知道几个概念. 块元素:独占一行的元素.比如div,h1~h6,p等,它是自带换行的. 内联元素:就是和相邻的内联元素同在一行的元素,比如span,a,img,small,em之类的. 以上内容是从是否独占一行的角度来说的,从另一个角度来说,也分为两种. 替换元素:就是浏览器根据标签的属性和内容来判断具体显示的内容.input,img,textarea等属于此类,以input为例.<inpu

CSS 定位机制 position

position属性W3School有详细介绍 1.(position:relative;)相对定位会按照元素的原始位置对该元素进行移动.relative 2.(position:absolute;)通过绝对定位,元素可以放置到页面上的任何位置.absolute 3.(position:fixed;)固定定位.fixed dome:垂直排列图象(vertical-align:text-top).vertical

CSS定位属性-position

一.可能的属性值 1.static:默认值.没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明). 2.absolute:绝对定位.对象脱离常规流,是基于整个屏幕,生成绝对定位的元素,此时偏移属性参照的是离自身最近的定位祖先元素,如果没有定位的祖先元素,则一直回溯到body元素.它的父级元素如果设置 relative ,那就就是基于它的父元素的左上角计算. 3.fixed:固定定位.与absolute一致,生成绝对定位的元素,但偏移

css 定位功能position

Static 定位 HTML元素的默认值,即没有定位,元素出现在正常的流中.静态定位的元素不会受到top, bottom, left, right影响. 相对定位Relative相对定位元素的定位是相对其正常位置.相对定位三要素:占位:保留参考坐标轴原点:以自身为准,横向/纵向偏移z值:非0整数 如:-1, -2 ,-3 , 1 ,2 ,3等[注意]位置移动以自己原先的位置为准 绝对定位Absolute绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<

web前端css定位position和浮动float

最近做了几个项目:配资公司,ecmal商城等,客户对前台要求都很高.所以,今天来谈谈css的基础,以及核心,定位问题. div.h1或p元素常常被称为块级元素.这意味着这些元素显示为一块内容,即“块框”.与之相反,span和h3等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”. 在这种情况下,这个框称为无名块框,因为它不与专门定义的元素相关联. 块级元素的文本行也会发生类似的情况.假设有一个包含三行文本的段落.每行文本形成一个无名框.无法直接对无名块或行框应用样式,因为没有可以