CSS教程:position属性

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

position属性可以让你让你随意控制一个特定元素在浏览器何处以及如何显示。比方说我们用position:fixed 让一个图片显示在浏览器的左上角.即使出现滚动条他依然可以在浏览器的左上角.posotion属性有4个取值.由于static为默认的方式。
position属性可以让你让你随意控制一个特定元素在浏览器何处以及如何显示。比方说我们用position:fixed 让一个图片显示在浏览器的左上角.即使出现滚动条他依然可以在浏览器的左上角.posotion属性有4个取值.由于static为默认的方式。所以实际上可用的值只有3个 为了方便阅读~
以下统称为:固定(fixed)、相对(relative)、 绝对(absolute).
第1:固定定位(fixed)
固定定位可以让某一元素固定在屏幕的某个位置.其效果和背景的background-attachment:fixed属性相似!但是IE6以及更早的版本不支持.所以以下例子请在非IE6以下浏览器下浏览
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
第2:相对定位(relative)
相对定位是依据设置定位属性的4个方向上的任意值来实现相对与其本来在文档中正常显示的位置的偏移;
当相对定位的元素偏移出其本来的文档流的位置:其他元素仍然认为那个位置为其的逻辑文档流区域.而不会去补上去,虽然我们感官上认为那里是没有东西的~
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
其中第2个色块就是相对于其本来的文档流中的位置依据left:10px;top:20px;的定位属性值进行偏移.
其后面的第3个色块依然认为前面的空白(就是第3的原本的文档流的位置)为第3个色块的文档流区域 则不会自动填充上去.
当相对定位的父元素出现滚动条时,IE浏览器的特殊情况
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
当相对定位的父元素有滚动条的时候,该相对定位元素再IE的表现很诡异(其后面的元素依然认为那个位置为该元素的默认位置,而表现出相对定位的特性,但是拉动滚动条时,在FF下正常即相对定位的元素和文档一起滚动,但是在IE系列里面,相对定位的色块依然在原地不动,此时元素的特性有点像绝对定位)
当相对定位同时拥有定位属性的4个方向的值和margin属性。相对定位的定位属性 top right bottom left和margin-top margin-right margin-bottom margin-left;各个方向上一至的时候其值会产生叠加效果,而按照方向执行叠加后的数值的偏移
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
#p#
position属性可以让你让你随意控制一个特定元素在浏览器何处以及如何显示。比方说我们用position:fixed 让一个图片显示在浏览器的左上角.即使出现滚动条他依然可以在浏览器的左上角.posotion属性有4个取值.由于static为默认的方式。
第3:绝对定位(absolute)
当元素设置绝对定位后.则会从正常的文档流中脱离.其后面的元素会完全忽视这个绝对定位的元素.就好像正常文档流中不存在这个元素一样.然后根据离其最近的一个具有position属性的父对象的边缘为定位基点(如果没有没有这样一个父对象 那么默认依据窗口元素定位),根据设置定位属性的4个方向的值来实现绝对的定位布局.
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
我们可以看到.当色块2设置绝对定位之后.后面的第3色块忽视其存在,自动填补到正常的文档流中(这个是根据窗口元素定位)
我们再来看一下IE中依据窗口元素定位的一个特殊情况
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
此DEMO与position:absolute的定位工作方式无关~只是作为IE中特殊的情况列出来
除了上面的基本的position:absolute特点,其还有下面几点
1.如果我们只设置了position:absolute而没有设置定位属性的4个方向值的话.那么该绝对定位的元素依然遵循其在文档流中的正常位置,它仍然受前一元素的文档流位置影响,按照正常文档流进行布局。只不过现在是从正常的文档流中抽出.其后面的元素会忽视其存在.而自动补上去.因为绝对定位的元素是不占文档流的布局空间的。
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
例子中第2个红色的色块就是一个只具有position:absolute属性的元素,它仍然在正常的布局位置呈现,只不过后面的元素会忽视其存在
2.绝对定位会自动把一个元素转化为块元素
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
按照标准的渲染方式.行间元素设置的宽度和高度是被忽略的,但是当给元素绝对定位之后,该元素会具有块元素的特性,而可以设置宽度和高度(虽然绝对定位的元素不占布局空间)
#p#
position属性可以让你让你随意控制一个特定元素在浏览器何处以及如何显示。比方说我们用position:fixed 让一个图片显示在浏览器的左上角.即使出现滚动条他依然可以在浏览器的左上角.posotion属性有4个取值.由于static为默认的方式。
3.在IE下没有设置定位属性4个方向的值的绝对定位的块元素的表现是inline-block 再FF下其是block
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
这个其实是浏览器的差异,在FF下在块元素拥有position:absolute属性后,其依然作为一个块元素,而相对于前面的文档流而换行,所以为了统一,在这种使用情况下,可以加上display:inline即可保证各个浏览器统一
4.绝对定位元素依据其定位基点进行绝对定位时会忽视其定位基点的padding空间
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
图中的红色区域是一个高度和宽度为500px且padding:100px;因为绝对定位元素忽视其定位基点的padding属性,所以在顶部呈现
5.设置任何一个方向的定位属性.该绝对元素除该方向按照定位属性的值依据其具有position属性最近的父元素为基点进行定位.其另外方向上的逻辑位置依然受前一文档流中的元素影响.按照正常的位置进行布局:
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
我们可以看到图中的红色区域,除按照left:40这个属性偏移40像素后,其垂直方向的位置依然为正常文档流中的位置
#p#
position属性可以让你让你随意控制一个特定元素在浏览器何处以及如何显示。比方说我们用position:fixed 让一个图片显示在浏览器的左上角.即使出现滚动条他依然可以在浏览器的左上角.posotion属性有4个取值.由于static为默认的方式。
6.当元素设置为绝对定位后改元素内的浮动会自动清除
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
7.当绝对定位同时拥有定位属性和margin属性、绝对定位的的定位属性 top right bottom left和margin-top margin-right margin-bottom margin-left;各个方向上一至的时候其值会产生叠加效果,而按照方向执行叠加后的数值的偏移
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
我们会发现这个红色的色块距离左边200PX.left margin-left
小结
当元素同时拥有浮动和绝对定位时.绝对定位的优先权大于浮动.因为浮动受文档的逻辑结构位置限制。而绝对定位不会。
所以当绝对定位脱离文档流,绝对定位的元素不受浮动影响.即float:left会失效,
数学上我们知道.X轴上一个数值 Y轴上的一个数值即可确定一个点,感官上left right属于x轴bottom top属于Y轴。
我们完全可以设置一个无宽度和高度绝对定位的元素同时拥有top right bottom left来实现其根据其参考的定位基点的父元素的的大小来自适应大小.
但是IE6不支持.IE6只能识别left的值而忽视right.所以下面例子请在非IE6以及一下浏览器浏览
例子:
运行代码框

[Ctrl A 全部选择 提示:你可先修改部分代码,再按运行]
实际应用:(个人的习惯)
    标题(“标题文字”和“更多”)(相对 绝对) 需要让一些具有vertical-align:middle属性的元素抽出文档流(这个看具体情况,因为vertical-align:middle会影响文档中的文字对齐)(绝对) 固定元素的浮动块(该浮动块内的元素布局固定 可以用绝对定位,并设置该浮动块为相对)(相对 绝对)
更多精彩内容其他人还在看

css实现的让图片垂直居中的方法

图片的宽度和高度是未知的,没有一个固定的尺寸,在这个前提下要使图片在一个固定了宽度和高度的容器中垂直居中,想想感觉还是挺麻烦的,由于最近的项目可能会用到这个方案,所以把一些常用的方法都收集整理了一下。
收藏 0 赞 0 分享

3个比较有用的网页制作技巧

我们在进行DivCSS布局的时候,非常关注CSS技巧的学习,今天向大家推荐3个所谓的 “顶级”CSS技巧!虽然没有什么新意,但对新手而言却非常重要!
收藏 0 赞 0 分享

让你写出更轻巧、更快并且更不会让你头疼的CSS的方法

为什么我们的CSS变得一团糟——我们真的很容易陷入这样的困惑中。有时这是一开始就马虎编程的结果,有时是由于后期多重的附加代码(hacks)和修改造成的。
收藏 0 赞 0 分享

利用CSS3的checked伪类实现OL的隐藏显示的方法

随着CSS3的发布,国外研究正如火如荼,但在国内还有很多人抱着IE不支持CSS3的想法,始终无动于衷不肯去学习。
收藏 0 赞 0 分享

CSS多浏览器兼容性(IE和Firefox)技巧大全推荐

CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理技巧并整理了一下。
收藏 0 赞 0 分享

固定位置显示弹出层(兼容IE6,IE8,FF)

兼容IE6,IE8,FF弹出层固定位置显示,主要是通过css的控制
收藏 0 赞 0 分享

div完美自适应动态上下左右居中

div完美自适应动态上下左右居中,多用于信息提示框效果。
收藏 0 赞 0 分享

display:inline的用法

和 display:inline 对应的是 display:block,block 会让应用了该 CSS 属性的 HTML 标记变成块级别元素,例如 SPAN 是行内显示的,但是你加了 display:block 属性就不一样了
收藏 0 赞 0 分享

css样式实现整个页面背景使用一张图片

最近一直被css背景困扰,因为是仿站,别人网站背景图片无论怎样另存,都是相同文件名,打开一看,整个网站的各个角落背景图片都在一个文件中分布,于是上网搜集资料,发现使用这种方法的网站很多,源自于雅虎最早。
收藏 0 赞 0 分享

关于CSS样式表文件组织形式的整理

以下引用网络上的一篇文章,不知道作者是谁了,总体上概括的不错,但是在实际应用当中还是要根据项目情况来具体实施比较好。
收藏 0 赞 0 分享
查看更多