`
huiqinbo
  • 浏览: 336420 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

玩转div定位

阅读更多

玩转div定位

(2010-01-18 14:00:10)
<script></script>标签:

div

color

body

w3c

dfd

it

分类:DIV+CSS

题外话:

三军统帅,征战沙场。运筹帷幄之中,决胜千里之外。好不痛快淋漓!

吾等不列行伍之中,无法感于此等尽兴与酣畅。而每日面对程序,能够畅快的游弋于各种对象与元素之间,使之誓死听命于自己,这岂不是与战场上的酣畅有着异曲同工之妙呢?

既然我们注定成为不了将军,那就努力让我们在自己的地盘上“称王称霸”吧!再借用一句广告语:我的地盘我做主!这也就是这篇文章我这样命名的用意。

进入正文:

div+css用于网页布局似乎已经流行了很久很久了,可固执的我从骨子里似乎对它就有抵触情节,一方面对之轻视,一方面每每遇到它又被其折磨的痛苦不堪。痛定思痛,决定对它潜心研究一下,将其玩弄于股掌之间!

网上搜了搜div定位相关的内容,大多是从表面上介绍一些使用上的规律,很少有描述为什么如此的文章。于是,便引发了我想写这样一篇文章的冲动。

说到页面元素的定位,就不得不首先提起文档流的概念。

关于文档流,我并没有在网络或书籍上找到一个确切的定义。在此,我只能说说我个人对其的认识。

所谓文档流,即为页面元素自上而下、从左到右的排列次序,如同线性的流一般。我们在编写页面时,也基本上是按照这样的一个顺序来安置各种元素。如果我们没有对div指定定位方式的话,浏览器就会按照其在文档流中的次序进行显示。如:

 

以下为引用的内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>div定位测试</title>
</head>
<body>
    <div id ="divFirst" style ="width:400px; height:50px;background-color:#FF00FF;">这里是divFirst</div>
    <div id ="divSecond" style ="width:400px; height:50px;background-color:#01DFD7;">这里是divSecond</div>
    <p><font color="#FF0000">*</font>&nbsp;在普通的文档流中,div块级元素是自上而下依次排列的</p>
</body>
</html>

 

上述代码中,两div并未采取任何的定位方式,浏览器按普通文档流的方式对其显示,以下是显示效果:

玩转div定位

下面我们就来详细的说说div定位的关键的两个步骤。

首先,我们要判断被定位元素是否脱离普通文档流。是否脱离文档流将会影响文档流中其余元素的定位。

对于脱离了文档流的元素,其显示已经不再受普通文档流的束缚,而文档流中的其余元素的定位就如同该元素已经不在页面上一样。

而对于未脱离文档流的元素,其无论偏移到了页面的何处,实际上占据的仍然是其原来的位置。文档流中的其余元素定位时,也就会相应的留出该元素的位置。

在几种定位方式中,position:absolute和float是脱离文档流的,而position:relative不会使被定位的对象脱离普通的文档流。下面我们来举例说明:

 

 

以下为引用的内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
   <title>div定位测试2</title>
</head>
<body>
    <div id ="divFirst" style ="width:400px; height:50px;background-color:#FF00FF;">这里是divFirst</div>
    <div id ="divSecond" style ="width:400px; height:50px;background-color:#01DFD7; position:absolute; top:20px; left:50px;">这里是divSecond</div>
    <div id ="divThird" style ="width:400px; height:50px;background-color:#FFFF00;">这里是divThird</div>
</body>
</html>

 

 

 

 

以下为引用的内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>div定位测试3</title>
</head>
<body>
    <div id ="divFirst" style ="width:400px; height:50px;background-color:#FF00FF;">这里是divFirst</div>
    <div id ="divSecond" style ="width:400px; height:50px;background-color:#01DFD7; position:relative; top:20px; left:50px;">这里是divSecond</div>
    <div id ="divThird" style ="width:400px; height:50px;background-color:#FFFF00;">这里是divThird</div>
</body>
</html>

 

 

以上两示例代码中,唯一一处区别就是divSecond一个采用absolute定位,另一个采用relative定位。这就会导致很大的不同,见下图:

玩转div定位

divSecond采用absolute定位的效果

玩转div定位

divSecond采用relative定位的效果

divSecond采用absolute定位的页面中,原来位于divSecond下的divThird上移将其的位置占据;而采用relative定位的页面中没有出现这样的情况。

其次,确定被定位元素偏移的参照物。找准参照物,被定位元素的位置也就明晰了。

由position:absolute定位的元素参照的对象是其最近的已定位(包括position:absolute和position:relative两种方式)的祖先元素(祖先元素即位于外层,嵌套其的元素),若该祖先元素不存在,则其参照最初的包含块,如页面画布。float和position:relative两种定位方式参照的是被定位元素在普通文档流中的原本的位置。

被position:absolute和position:relative定位的元素,其偏移量由top、left、bottom和right确定。float定位指示了其是向右(right)、向左(left),还是同时向左右(both)漂移。以下为示例:

 

 

以下为引用的内容:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>div定位测试2</title>
</head>
<body>
    <div id ="divFirst" style ="width:400px; height:100px;background-color:#FF00FF;">这里是divFirst</div>
    <div id ="divSecond" style ="width:400px; height:100px;background-color:#01DFD7;">这里是divSecond</div>
    <div id ="divThird" style ="width:400px; height:100px;background-color:#FFFF00;">这里是divThird</div>
    <div id ="divFourth" style ="width:400px; height:100px;background-color:#01DF01;">
        <div id ="divFifth" style ="width:100px; height:20px;background-color:#FF8000; top:20px; left:60px; position:absolute;">这里是divFifth</div>
    </div>
</body>
14</html>

 

 

以上代码中divFifth采用了absolute定位,其运行效果图为:

玩转div定位

很明显,因divFifth无已定位的祖先元素,其参考物为页面画布。如果divFifth采用relative定位,其显示效果又是什么样呢?见下图:

玩转div定位

如此,divFifth的定位参照物便是其原来在普通文档流中的位置。

好了,就写到这吧!至于采用float定位时参照物的选择,请读者自己去尝试吧!

此篇文章中介绍的对div的定位分析,同样适用于 p 、ul 等块状元素。相信你看了这篇文章后,一定会对元素定位有一个全新的认识,进而将其玩弄于股掌之间。 最后附上一张关于定位的总结表格:

玩转div定位

更多了解、更多交流:回钦波[转]

QQ:444084929

1
0
分享到:
评论

相关推荐

    div弹出层 定位问题的 处理

    div弹出层 定位问题的 处理

    table转div工具

    table转div工具,很棒的工具,直接把table转为div+css

    Table转div+css工具

    这个工具可以将原来table的html转换为div+css

    table转div、table转css

    ps切出来的table,直接转div,转css超级方便的一款工具。

    DIV弹出层+定位

    这个例子是,div弹出层并且固定位置,弹出层的弹出方式为滑动方式。

    Html Table 转 Div 工具

    Html Table 转 Div 工具Html Table 转 Div 工具Html Table 转 Div 工具Html Table 转 Div 工具 带汉化的,不用安装

    CSS+DIV定位浅析

    CSS+DIV定位浅析:relative,absolute,static,fixed。

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

    table布局网页转换为div+CSS布局的转换软件. 非常快捷方便,一转眼一个老式样table布局网页的网页就转换成div+CSS布局的了,支持绝对定位和流定位.

    表格转换为DIV

    介绍:Table2CSS是一款可以将...成DIV+CSS方式的软件。支持外部CSS,支持网页及目录 批量转换。 更新说明: 3.0.0 +增加DOM(文档对象模型)查看器,允许调整转换设置. +通用CSS前缀配置默认值"gen". +增加视频转换教学帮助

    DIVCSS定位方法

    简洁的介绍了DIV+CSS网页编程定位方法,适合初学者参考。

    菜单 表情 div 定位 判断鼠标

    主要提供一个网页全局定位函数,根据OBJ来定位,让DIV定位到OBJ上或者下或者右或者右或者增加偏移量(不规则图形背景) 支持左对齐定位,右对齐定位 另外还有个鼠标判断函数,判断在或者不在OBJ内

    table转换div

    table转换div+css 开发是table+css的话可以用此工具转换成div+css

    表格转换为div(Table2CSS)

    有好多做网站和喜欢SEO的朋友都青睐把网站用DIV+CSS构建,但对于DIV+CSS技术不是很熟练的网友来说,因为考虑到网站CSS在不同兼容性等问题,重新构建一次的确很麻烦。 Table2CSS3.0的出现,让这一切工作都变得简单化...

    将table转换成div+css

    能快速的将table标签转换成div+css,在网页运行时减少带宽,更迅速的出现网页。增强客户体验!

    可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV

    可移动的DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV可移动DIV...

    div内容转成图片格式

    可以将div里面的内容转换为图片,并且保存下载到本地

    div+css定位代码示例

    div+css定位代码示例 说明了绝对和相对

    表格转换DIV+CSS工具Table2CSS破解版

    Table2CSS3.0.0完美汉化破解...成DIV+CSS方式的软件。支持外部CSS,支持网页及目录 批量转换。 更新说明: 3.0.0 +增加DOM(文档对象模型)查看器,允许调整转换设置. +通用CSS前缀配置默认值"gen". +增加视频转换教学帮助

    div 旋转 html

    div 旋转显示

Global site tag (gtag.js) - Google Analytics