`
flyinglife
  • 浏览: 132368 次
社区版块
存档分类
最新评论

div+css层属性定位原理

阅读更多

div+css层属性定位原理

“为何我的层不会老老实实地显示在它该在的位置上?”,这个问题算是在学习“用DIV+CSS制作网页”的过程中问得最多的问题之一了,这次我们将学习如何驾驭它。
作者:COOANT
  • 一、概述
  • 二、position属性
  • 三、top,right,bottom,left属性
  • 四、float属性
  • 五、z-index属性

一、概述

    本文以标签“<div></div>”为例进行讲解,部分内容同样适用于部分其它块(block)标签元素。
    本文中的范例通过测试的浏览器为IE6、IE7、Firefox2。

    我们在平时的网页制作中,已经或多或少的接触过CSS样式表中的“position(位置)”属性,其实这基本算是定位根源所在了。当然了,这并不是全部,如果再加上“float”、“z-index”等属性,我们的层定位将会更加完美。下面我们将一一讲解:

 

二、position属性

    position属性有五个取值,分别为:static, relative, absolute, fixed, inherit, 其中“static”为默认值。

·static

    该值为position的默认值,可以省略不写,当position取值为static或者没有设置position属性的时候,div的显示方式为按文本流的顺序从上至下,或者从左到右顺序显示。
例如:
层一
层二
源代码如下:
<div class="style">层一</div>
<div class="style">层二</div>
.style {
    border:1px solid #999900;
    background-color:#CCFF99;
    width:80px;
    height:80px;
    margin-bottom:5px;
}

·relative

    相对定位,相对于什么位置呢?官方手册中是这样说的:“Relative position that is offset from the initial normal position in the flow.”可以简单的如此解释:偏移文本流中最初的位置。最初位置也就是当position取值为static时的位置,也就是说这里的相对定位是相对于它在正常情况下的默认位置的。下图列出了偏移产生前后的位置关系:

完整的代码如下:
偏移前:
<style type="text/css">
.style1 {
    position:relative;
    height:80px;
    width:80px;
    margin-bottom:10px;
    border:1px solid #000;
    background-color:#acd373;
}
.style2 {
    position:relative;
    height:80px;
    width:80px;
    border:1px solid #000;
    background-color:#f26c4f;
}
</style>
<div class="style1">层一</div>
<div class="style2">层二</div>
 

偏移后:
<style type="text/css">
.style1 {
    position:relative;
    left:30px;
    top:30px;
    height:80px;
    width:80px;
    margin-bottom:10px;
    border:1px solid #000;
    background-color:#acd373;
}
.style2 {
    position:relative;
    height:80px;
    width:80px;
    border:1px solid #000;
    background-color:#f26c4f;
}
</style>
<div class="style1">层一</div>
<div class="style2">层二</div>
 

结合以上图示和CSS样式表可以得出以下两个结论:
  • 设置了position:relative而不设置left,top等属性的时候,层显示的位置和不设置position属性或者position值取static时一样。
  • 当一个层设置了position:relative,而且使得层位置产生相对偏移时,并不影响文本流中接下来的其他层的位置。
    另外我们还可以做如下尝试,当层二对应的css样式表“style2”不设置position:relative时,会发现层一偏移后重叠时,层一覆盖了层二。而不是我们图示上层二覆盖了层一。
    原因时这样的,当设置了position:relative,层的层叠级别高于默认的文本流级别。当然了,如果都设置了position:relative,同等级别下将会按照文本流的顺序层叠显示。

·absolute

    绝对定位,回忆一下,当我们设置position的值为static或者relative时,层依然存在于文本流中,也就是不管位置是否偏移,文本流中依然为它保留了该有的位置。但当层设置了position:relative并产生偏移(设置了top,left等值)时,该层将完全从文本流中脱离,进而以该层所在的父容器的坐标原点为参考点进行偏移,可以这理解,该层已经和同级容器中的其它元素脱离了关系,也不会对其它元素产生人和影响(当它不存在!)。
    注意:如果父容器没有设置position属性或position值为static时,将以body的坐标原点为参考。

    下面我们以三个图示来分别说明。

上面三个页面效果的css样式表如下:
页面一:
<style type="text/css">
.style1 {
    height:150px;
    width:150px;
    border:1px solid #000;
    background-color:#a2d39c;
}
.style2 {
    height:50px;
    width:50px;
    border:1px solid #000;
    background-color:#f68e56;
}
.style3 {
    height:50px;
    width:50px;
    border:1px solid #000;
    background-color:#00adef;
}
</style>
<div class="style1">
    <div class="style2"></div>
    <div class="style3"></div>
</div>
 
页面二:
<style type="text/css">
.style1 {
    height:150px;
    width:150px;
    border:1px solid #000;
    background-color:#a2d39c;
}
.style2 {
    position:absolute;
    top:0;
    left:0;
    height:50px;
    width:50px;
    border:1px solid #000;
    background-color:#f68e56;
}
.style3 {
    height:50px;
    width:50px;
    border:1px solid #000;
    background-color:#00adef;
}
</style>
<div class="style1">
    <div class="style2"></div>
    <div class="style3"></div>
</div>
 
页面三:
<style type="text/css">
.style1 {
    position:relative;
    height:150px;
    width:150px;
    border:1px solid #000;
    background-color:#a2d39c;
}
.style2 {
    position:absolute;
    top:10px;
    left:10px;
    height:50px;
    width:50px;
    border:1px solid #000;
    background-color:#f68e56;
}
.style3 {
    height:50px;
    width:50px;
    border:1px solid #000;
    background-color:#00adef;
}
</style>
<div class="style1">
    <div class="style2"></div>
    <div class="style3"></div>
</div>
 
<!--范例源代码结束-->
    通过以上的范例和理论说明,我们应该从原理上理解了absolute定位。这里补上官方对于absolute的解释:
    “Taken out of the flow and offset according to the containing block. ”

    截至这里,希望各位可以稍作休息,尝试修改上面范例中的css属性,做到举一反三,充分理解。

·fixed

    固定定位,它的效果类似常见的浮动广告,无论如何拖动浏览器的滚动条,层始终悬浮在浏览器的某个位置。由于该属性只能被Firefox很好的支持,虽然可以在通过其它设置在IE6.0中得到同样的效果,但由于本文篇幅原因,不继续对本属性继续作解释。下面的经典案例中将会有相关解释。

·inherit

    继承,和其它属性的继承一样。在这里为继承父元素中的position值。

三、top,right,bottom,left属性

    这四个属性中的top和left属性之前有使用过(right和bottom用法也一样),大致功能我们基本已经清楚了,这里再简单介绍一下。

    这四个属性在设置了position属性,并且值不为static时生效。当position取值relative时,偏离文本流初始位置;当position取值absolute时,以父容器对应的初始点为原点偏移,如果父容器没有设置positon或者position取值static时,以body对应的坐标点为参考点偏移。     top,right,bottom,left属性的取值除了具体的数值外,还可以是百分比、继承、或者auto(默认值)。

四、float属性

    取值包括inherit,left,right以及默认值none,该属性用于控制文本流的显示方向。需要注意的是如果设置了该属性并取值为left或right后,会影响到该流后面的其它盒子模型。可以通过设置“clear:both;”清除该属性设置。 例如:
层一
层二
层三
源代码如下:
<div class="style1">层一</div>
<div class="style1">层二</div>
<div class="style2">层三</div>
.style1 {
    border:1px solid #999900;
    background-color:#CCFF99;
    width:80px;
    height:80px;
    float:left;
    margin-bottom:5px;
}
.style2 {
    border:1px solid #999900;
    background-color:#CCFF99;
    width:80px;
    height:80px;
    clear:both;
    margin-bottom:5px;
}

    需要注意的是由于float控制的是文本流方向,当为层设置了“position:absolute;”后,float将不再有效,应为此时层已经脱离该文本流。

五、z-index属性

    该属性在设置了position并取值为“absolute”或“relative”时有效,用于控制层在Z- 轴上的排列顺序,值为整数(由于不同浏览器的兼容性的区别,最好是正整数),取值越大层越在最上面。
分享到:
评论

相关推荐

    简单设计DIV+CSS模板

    本篇将围绕"简单设计Div+CSS模板"这一主题,深入探讨Div+CSS的基础概念、网页布局原理以及实例解析,帮助读者掌握这一技能,提升网页设计水平。 首先,Div+CSS的核心在于将内容(HTML)与样式(CSS)分离。Div,...

    table布局网页转换为div+CSS布局的转换软件

    在网页设计领域,传统的`table`布局曾是构建网页结构的主要方式,但随着Web标准的发展,`div`结合`CSS`布局(层叠样式表)逐渐成为主流。...不过,理解和掌握`div+CSS`布局原理仍然是每个前端开发者的必备技能。

    div+css手册

    1. **定位(Positioning)**:CSS2.0引入了`position`属性,包括`static`、`relative`、`absolute`和`fixed`,让开发者可以精确控制元素在页面上的位置。`relative`使元素相对于其正常位置移动,`absolute`则根据...

    DIV+CSS案列源代码03

    在网页设计中,`DIV`(层)和`CSS`(层叠样式表)是核心元素,它们共同负责网页布局和样式的设定。`DIV`是一个HTML标签,用于组合HTML元素,而`CSS`则用来定义这些元素的样式,如颜色、字体、布局等,实现了内容与...

    div+css菜单

    下面我们将深入探讨div+css菜单的设计原理、优点、常见样式以及实现方法。 一、设计原理 Div+CSS菜单的基本思想是将HTML结构(div元素)与样式(CSS)分离,使网页内容和表现形式独立。通过&lt;div&gt;元素,我们可以定义...

    专业的div+css代码大全

    除了以上介绍的属性,`div+css`还包括许多其他重要概念,如浮动(`float`)、定位(`position`)、盒模型(`box model`)、响应式设计(`responsive design`)等。理解并熟练运用这些概念,可以帮助开发者创建出既...

    10天学会DIV+CSS简明教程

    在网页设计领域,`DIV+CSS`是一种广泛...总的来说,这个教程为想要进入网页设计领域的学习者提供了一个全面且实用的起点,通过10天的学习,可以让他们掌握`DIV+CSS`的基本原理和应用,为今后的网页开发打下坚实的基础。

    Div+CSS布局入门+实例教程

    2. **选择器和属性**:讲解CSS选择器的使用,如元素选择器、类选择器、ID选择器等,以及各种样式属性,如颜色、字体、边距、边框等。 3. **盒模型**:解释CSS盒模型,包括内容、内边距、边框和外边距,以及不同...

    DIV+CSS学习资料(一)

    书中可能涵盖了CSS的基本语法,如选择器、属性和值,以及更高级的主题,如盒模型、浮动布局、定位、Flexbox和Grid布局。此外,它可能还包含了大量的实例和练习,以增强读者的实践能力。 3. **2天轻松驾驭DIV+CSS....

    div+css模板 div+css模板

    3. **学习工具**:对于初学者,通过研究和修改模板,可以深入理解`div+css`布局和样式设计原理。 **四、如何使用div+css模板** 1. **下载与解压**:获取到`div+css`模板压缩包后,将其解压至本地文件夹。 2. **...

    DIV+CSS布局练习

    在网页设计领域,`DIV+CSS`布局是构建网页...这个压缩包中的练习可能包括创建各种布局示例,如两列布局、三列布局、头部导航、页脚布局等,通过这些实例,学习者可以深入理解`DIV+CSS`布局的工作原理,并提高实践能力。

    一个简单的网页布局案例(DIV+CSS)

    在CSS中,我们可以通过设置`div`的样式属性,如宽度(width)、高度(height)、内边距(padding)、外边距(margin)以及定位(positioning),来调整其在页面上的位置和大小,进而实现复杂的布局结构。 在提供的...

    Div+CSS网页样式与布局从入门到精通 实例

    本教程"Div+CSS网页样式与布局从入门到精通"旨在帮助初学者掌握这一核心技术,通过实例深入理解其工作原理和应用技巧。下面将详细介绍Div和CSS的基础概念、它们在网页布局中的作用,以及如何从入门到精通。 Div...

    DIV+CSS所有特效

    标题 "DIV+CSS所有特效" 涵盖了网页布局和设计的核心技术,这是一门针对HTML和CSS的深入学习课程,旨在帮助网页开发者,尤其是初学者,掌握使用DIV和CSS进行网页构建的关键技巧和特效。 HTML(HyperText Markup ...

    div+css布局入门教程PDF

    《div+css布局入门教程》是一本专门为初学者设计的指南,旨在帮助读者掌握网页布局的基本技巧和概念。在这个数字化的时代,网页设计是互联网领域不可或缺的一部分,而div+css布局则是构建网页结构的关键技术。本教程...

    非常漂亮的DIV+CSS全套源码

    总之,这套“非常漂亮的DIV+CSS全套源码”是一份宝贵的教育资源,可以帮助学习者深入理解`Div+CSS`布局原理,提升网页设计技能。通过实际操作和拆解这套源码,你将能够掌握网页设计的核心技巧,进一步提升自己的项目...

    Div+CSS模板.

    3. **浮动与定位**:通过浮动(float)和定位(position)属性调整元素的位置,实现灵活布局。 4. **响应式设计**:使用媒体查询(@media rule)根据屏幕尺寸调整样式,实现跨设备兼容。 5. **优化性能**:合理组织...

    div+css电子书

    3. **定位机制**:`div`元素的定位通常涉及相对定位(relative)、绝对定位(absolute)和固定定位(fixed)。书中可能会详细解释每种定位方式的原理和应用场景。 4. **浮动布局**:`float`属性是早期网页布局中常用的...

    div+css网页标准布局实例教程.doc

    学习div+css布局,你需要掌握HTML和CSS的基本语法,理解盒模型和定位原理,以及如何利用CSS创建响应式设计。通过实例练习,你可以逐步熟悉并掌握这些知识,从而能够创建符合web标准的、功能丰富且视觉美观的网页。...

    CSS基础知识《Div+CSS 布局大全》 (PDF)值得一看!

    通过设置Div的CSS属性,我们可以控制其大小、位置、颜色、边距等,进而实现复杂而有序的页面布局。 CSS布局是网页设计的核心,主要包括以下几种类型: 1. 流动布局(Flow Layout):这是最基本的布局方式,元素...

Global site tag (gtag.js) - Google Analytics