div 中的相对定位与绝对定位中的相对定位与绝对定位
定位标签:position  包含的属性:relative (相对)与(相对)与  absolute (绝对)(绝对)
1.position:relative :如果对一个元素进行相对定位,首先它将出现在它所在的位置上。然后通过设置垂直或水平位置,让这个元素“相对于”它的原始起点进行移动。(再一点,相对定位时,无论是否进行移动,元素仍然占据原来的空间。相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖因此,移动元素会导致它覆盖其他框)例如:#mybox{ 
position:relative;  left:20px; 
top:20px; 
} 
效果就是使这个层向下和向左移动了20px 。
2.position:absolute :表示绝对定位,位置将依据浏览器左上角的0点开始计算,绝对定位使元素与文档流无关,因此不占据空间。普通文档流中其它元素的布局就像绝对定位的元素不存在时一样。素不存在时一样。它相对于最近的已定位的祖先元素。它相对于最近的已定位的祖先元素。它相对于最近的已定
位的祖先元素。如果元素没有已定位的祖先元素,如果元素没有已定位的祖先元素,如果元素没有已定位的祖先元素,那那 么它的位置相对于最初的包含块。根据用户代理的不同,最初的包含块可能是画布是HTML 元素。(因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其他元素并可以通过z-index 来控制这些框的堆放次序。z-index 的值越高,框在堆中的位置就越高。)那么有个问题产生了,现在大家做的网页大部分是居中的,那么我需要这个元素跟着网页中的某个元素位置不论分辨率是多少他的位置始终是针对页内的某个元素的,那么单纯的位置不论分辨率是多少他的位置始终是针对页内的某个元素的,那么单纯的  absolute 是不行的。行的。
正确的解决方法就是在元素的父级元素定义为position:relative;(更正:这里可以是祖父这里可以是祖父  级,也可以是position:absolute;)需要绝对定位的元素设为position:absolute;这样再设定top,right,bottom,left 的值就可以了,这样其定位的参照标准就是父级的左上角padding 的左上侧!上侧!
在网上载了一段文章收藏:在网上载了一段文章收藏:
css固定定位CSS 单元的位置和层次-div 标签标签  我们都知道,在网页上利用HTML 定位文字和图象是一件“令人心痛”的事情。我们必须使用表格标签和隐式GIF 图象,即使这样也不能保证定位的精确,因为浏览器和操作平台的不同会使显示的结果发生变化。定位的精确,因为浏览器和操作平台的不同会使显示的结果发生变化。
而CSS 能使你看到希望的曙光。利用今天我们即将学到的CSS 属性,你可以精确地设定要素的位置,还能将定位的要素叠放在彼此之上。定要素的位置,还能将定位的要素叠放在彼此之上。
Cascading Style Sheets (CSS )是 DHTML 的基础。CSS 用来设定你网页上的元素是如何展示的。Cascading Style Sheets Positioning (CSS-P )是)是  CSS 的一个扩展,它可用来控制任何东西在网页上或是说在窗口中的位置。请你记住这两个名词:CSS 和 CSS -P 。下面四个英文网址提供了详细的关于四个英文网址提供了详细的关于  CSS 和 CSS-P 的文件和解释。的文件和解释。
1.使用.使用  DIV 标签标签  (div )
当我们使用当我们使用  CSS-P 的时候,的时候,  我们主要把它用在我们主要把它用在  DIV (division )tag 上。当你把文字,图象,或其他的放在图象,或其他的放在  DIV 中,它可称作为“DIV block
”,或“DIV element ”或“CSS-layer ” ,或干脆叫“layer ”。而中文我们把它称作“层次”。所以当你以后看到这些名词的时候,你就知道它们是指一段在就知道它们是指一段在  DIV 中的中的  HTML 。
使用使用  DIV 的方法跟使用其他的方法跟使用其他  tag 的方法一样:的方法一样:
<DIV>This is a DIV tag .</DIV> 
如果单独使用如果单独使用  DIV 而不加任何而不加任何  CSS-P , 那么它在网页中的效果和使用那么它在网页中的效果和使用  <P></P> 是一样的。样的。
但当我们把但当我们把  CSS-P 用到用到  DIV 中去以后,我么就可以严格设定它的位置。首先我们需要给这个可以被要给这个可以被  CSS-P 控制的控制的  DIV 一个一个  ID 或说是它的名字。比如说我们给下面这个或说是它的名字。比如说我们给下面这个  DIV 的名字是的名字是
truck 。给名字的目的是我们以后可用给名字的目的是我们以后可用  javascript 来控制它,
比如说移动它或改变它的一些性质等等。质等等。
<DIV ID="truck"> 
This is a truck 
</DIV> 
给层次取什么名字是随意的,名字可以是任何英文字母和数字,但第一个必须是字母。有两种把有两种把  CSS-P 应用到应用到  DIV 的方法。的方法。
Inline CSS :Inline 是最常用的方法。是最常用的方法。
<DIV ID="truck" STYLE="styles go here"> 
This is a truck . 
</DIV> 
External STYLE tag :使用:使用
:使用  External 方法的结果是一样的。我们会在以后的课程里再详细解释这种方法。现在我们主要讨论Inline 方法。请注意在请注意在  External 方法里,
在 STYLE 里的 ID 和 DIV 里的关系。里的关系。
<STYLE TYPE="text/css"> 
<!-- #truck {styles go here} --> 
</STYLE> 
<DIV ID="truck">This is a truck .</DIV> 
Cross-Browser CSS 性质:性质:
我们这个课程的主要目的是让你写出的网页在我们这个课程的主要目的是让你写出的网页在  NS4 和 IE4 上都能工作, 所以我们主要讨论那些对俩者都通用的性质。下面这些性质符合由要讨论那些对俩者都通用的性质。下面这些性质符合由  W3C 给出的标准。给出的标准。
position  决定决定  DIV tag 是如何放置的。“relative ”意思是DIV 的位置是相对于其他的位置是相对于其他  tag 的,而“absolute ”是说”是说  DIV tag 的位置是相对于它所在的窗口。的位置是相对于它所在的窗口。
left  相对于窗口左边的位置相对于窗口左边的位置
top  相对于窗口上边的位置相对于窗口上边的位置
width  DIV tag 的宽度。所有在的宽度。所有在  DIV 里的文字或html 都在里面。都在里面。
height  DIV tag 的高度。这个性质很少用除非你想的高度。这个性质很少用除非你想  Clip 层次。层次。
clip  给出给出  layer 的 clipping (可看的见的)部分。Clip 可使得可使得  DIV 显示为一个可以定义的很准确的方块。你可以用以下的四个值来给出这个方块的在的很准确的方块。你可以用以下的四个值来给出这个方块的在  DIV 位置和大小。位置和大小。  clip:rect(top,right,bottom,left); 
visibility  隐蔽或展现DIV 根据它的值“visible ”,“hidden ”,“inherit ”。
z-index  DIV tag 的立体位置。值越大的立体位置。值越大  DIV 的位置越高。的位置越高。
background-color  DIV 背景的颜。背景的颜。
layer-background-color  Netscape 的 DIV 背景颜。背景颜。
background-image  DIV 的背景图象。的背景图象。
layer-background-image  Netscape 的 DIV 的背景图象。的背景图象。
2.绝对定位和相对定位.绝对定位和相对定位  (position )
绝对定位:绝对定位:
定位属性将是网虫们打开幸福之门的钥匙:定位属性将是网虫们打开幸福之门的钥匙:
H4 { position: absolute; left: 100px; top: 43px }    这项CSS 规则让浏览器将<H4>的起始位置精确地定在距离浏览器左边100象素,距离其顶部43象素的位置。注意这里唯一设置了的是左边和顶部,也就说,文字将从左到右,从上到下载入浏览窗口。从上到下载入浏览窗口。
左边和顶部属性很直观,左边(left )设定要素距浏览器窗口左边的距离,顶部(top )设定距离浏览器窗口顶部的距离。设定这些距离时,你可以使用所学过的各种度单位或比例值。使用比例值时,比例值的是相对于母体要素的尺寸。值。使用比例值时,比例值的是相对于母体要素的尺寸。
你可以定位什么呢?任何东西!段落、单词、GIF 和JPEG 图象、QUICKTIME 电影等等。等。
相对定位:相对定位:
绝对定位使你能精确地定位要素在页面的独立位置,而不考虑页面其它要素的定位设置。相对定位指你所定位的要素的位置相对于在文件中所分配的位置。例:置。相对定位指你所定位的要素的位置相对于在文件中所分配的位置。例:
I { position: relative; left: 40px; top: 10px } 
相对定位的关键在于定位了的要素的位置是相对于它通常应在的位置进行定位。相对定位单元出现在普通的静态定位单元的行间,定位时没有把自己和静态定位单元完全分开。如果你停止使用相对定位,则文字的显示位置将恢复正常。则文字的显示位置将恢复正常。使用相对定位时要小心,使用相对定位时要小心,使用相对定位时要小心,否则容易否则容易将页面弄得非常乱。将页面弄得非常乱。
除了相对定位和绝对定位,你还可以使用static (静止)参数值。Static 是 position 特性的缺省值。它的使用方法同普通HTML 中的定位方法,不能附加特殊的定位设置。也就是说,除了边距特性,或通过使用是说,除了边距特性,或通过使用  float 特性来浮动单元可影响单元的定位外,其它均不可以。以。
3.定位单元的控制.定位单元的控制  (width 、height 、visiblility )
除了控制定位单元的左上角位置,你还可以控制单元的宽度和高度,及单元在页面的可视性。视性。
宽度:定位了的要素在页面上显示时仍然会从左到右一直显示。利用宽度属性就可以设定字符向右流动的限制,即设定要素的宽度。定字符向右流动的限制,即设定要素的宽度。
DIV { position: absolute; left: 200px; top: 40px; width: 150px } 
浏览器接到这项规则时,它将文字按照规则规定的效果显示,还将段落的最大水平尺寸限制在150象素。象素。
宽度属性只适用于绝对定位的要素。你可以使用我们学过的任何一种长度单位,或使用比例值设定宽度,比例值指相对于母体要素的比例。IE 4中,这项属性还可用于图象。你可以通过宽度设置人为地拉宽或压缩图象。以通过宽度设置人为地拉宽或压缩图象。
高度:理论上讲,高度应该和宽度的设置类似,只不过是在垂直方向上:高度:理论上讲,高度应该和宽度的设置类似,只不过是在垂直方向上:
DIV { position: absolute; left: 200px; top: 40px; height: 150px } 
这里我用了“理论上讲”,因为有些浏览器不支持高度属性。,因为有些浏览器不支持高度属性。
可视性:可视性:利用利用CSS ,你可以隐藏要素,你可以隐藏要素,使其在页面上看不见。这条属性对于定位了的和使其在页面上看不见。这条属性对于定位了的和未定位的要素都适用。未定位的要素都适用。
H4 { visibility: hidden } 
选项:选项:
visible 使要素可以被看见使要素可以被看见
hidden 使要素被隐藏使要素被隐藏
inherit 指它将继承母体要素的可视性设置。指它将继承母体要素的可视性设置。
值 inherit 为缺省值。这使单元继承父单元的可见性。所以,如果某一段是隐藏的,则它包含的任何行间单元也都被隐藏。它包含的任何行间单元也都被隐藏。这一继承性可被明确指定的可见性取代。这一继承性可被明确指定的可见性取代。这一继承性可被明确指定的可见性取代。例如,例如,段内的EM 单元被指定为可见,这时如果该段被隐藏,则段内的所有其它内容都将消失,而唯有而唯有  EM 单元中的文本是可见的。单元中的文本是可见的。
当一个要素被隐藏后,当一个要素被隐藏后,它仍然要占据浏览器窗口中的原有空间。它仍然要占据浏览器窗口中的原有空间。它仍然要占据浏览器窗口中的原有空间。所以,所以,如果你将文字包围在一幅被隐藏的图象周围,那么,其显示效果将是文字包围着一块空白区域。围在一幅被隐藏的图象周围,那么,其显示效果将是文字包围着一块空白区域。
这条属性在编写语言和使用动态HTML 时很有用,比如你可以使某段落或图象只在鼠标滑过时才显示。标滑过时才显示。
4.单元层次.单元层次  (z-index )
特性特性  z-index 用于堆叠屏幕上的单元。缺省情况下,单元堆叠的顺序为它们出现在HTML 标记的顺序——也就是说,后出现单元堆叠在早出现单元的上面。Z-index 特性实际上定义同属(sibling )单元的堆叠顺序以及单元相对父单元的堆叠。按照规范草案,具有正)单元的堆叠顺序以及单元相对
父单元的堆叠。按照规范草案,具有正  z-index 值的单元都堆叠在父单元之上,它们自己的堆叠顺序则按其取值的大小来决定(值大的单元在上层)。同样,具有负。同样,具有负  z-index 值的单元都堆叠在父单元之下,它们自己的堆叠顺序也按取值的大小来定(值大的单元在上层,例如值为叠顺序也按取值的大小来定(值大的单元在上层,例如值为  -1 的单元在值为的单元在值为  -2 的单元的上面)。该参数值使用纯整数。z-index 用于绝对定位或相对定位了的要素。你也可以给图象设定z-index 。(对于Communicator ,最好将,最好将  <IMG>标签包在<SPAN>或 <DIV>标签内,然后将z-index 应用到<SPAN>或 <DIV>。)
5.剪辑绝对定位单元.剪辑绝对定位单元  (clip )
绝对定位单元可以被剪辑——也即剪辑显示给用户的区域,只显示单元的一部分而把其余部分作透明处理。对于传统的基于文本和图像的网络页面,这并不是一个很有用的特征。但若要求多媒体页面,这是很有用的。如 Netscape Communivator 4 和 Internet Explorer 4 都支持多媒体页面,它们通过文档的脚本接口动态地调整单元周围的剪辑区,从而实线文本“划入”和图像渐显等显示特征。入”和图像渐显等显示特征。
在CSS 中,剪辑通过中,剪辑通过  clip 特性来控制,这一特性只能用于绝对定位单元,其缺省值为特性来控制,这一特性只能用于绝对定位单元,其缺省值为  auto ,按单元的外边缘来剪辑单元(实际上等于没有剪辑)。另外,可通过如下表达式设置剪辑框:剪辑框:
clip : rect(top,right.bottom,left) ; 
其中其中  top 、right 、bottom 和 left 分别是矩形剪辑框的上边、右边、下边和左边相对于被剪辑单元左上角的位置。Top 、right 、bottom 和 left 的值可以为任意绝对或相对长度值(但不能为百分比值),或者是关键字或者是关键字  auto 。取值为取值为  auto 意味着剪辑区域的各边放好以后,被剪辑单元中的任何内容都不会超出这个区域。被剪辑单元中的任何内容都不会超出这个区域。
6.控制单元溢出.控制单元溢出  (overflow )
固定绝对或相对定位单元的固定绝对或相对定位单元的  width 和 height ,很可能会因为指定的区域不能满足单元实际内容的需要,而造成单元内容溢出。这时可使用这时可使用  overflow 来指定浏览器如何处理溢出:值 none (缺省值)允许浏览器显示溢出的内容,因此单元可溢出指定的区域。而值 clip 要求浏览器在单元底部和右边剪辑单元内容,这样,超出指定区域的单元内容将不显示。值scroll 也同样要求浏览器在单元底部和右边剪辑单元内容也同样要求浏览器在单元底部和右边剪辑单元内容(同(同(同  clip )
,不过,浏览器应该(如果可能的话)为单元提供滚动条以使用户能通过滚动来浏览被剪辑的内容。果可能的话)为单元提供滚动条以使用户能通过滚动来浏览被剪辑的内容。
如何使DIV 层水平居中问题的一点解释
之前解决层居中的方法是先用div 套一层,将text-align 设为center ,然后里面层的margin-left 和margin-right 设为auto ,即可居中。,即可居中。
body {text-align: center;} 
div {margin-right: auto; margin-left: auto;} 
无意中发现text-align 的设置在这里是没有作用的,text-align 只对inline inline element
element (内联元素的解释请参阅前一篇)起作用,在这里只需要将margin-left 和margin-right 设置成auto ,并且给要居中的层的width 赋一个确定的值就可以达到居中的效果。赋一个确定的值就可以达到居中的效果。
div {margin-right: auto; margin-left: auto;width:200px;} 
下面分情况分析:下面分情况分析:
(1)全部都设为具体值,则margin-right 被自动设为auto 以满足条件方式以满足条件方式
(2)当它们之中只有一个被设为auto 时:比如{margin-left:auto; margin-right:100px; width:100px;} ,这时margin-left 会被拉伸至满足条件,会被拉伸至满足条件,
(3)其它类似当有两个被设为auto 时:如果是两个margin 被设为auto ,则margin-left 与margin-right 长度相同,这就产生了居中的效果;长度相同,这就产生了居中的效果;
(4)如果width 和某一个margin 设为auto ,则这个margin 等于0 
(5)当三个值都设为auto 时,等价于将margin 设为0,width 设为auto 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。