.盒子模型以及定位的不错文章出处忘记感谢作者:
www.blueidea.com 网页设计
http://down.chinavisual.com/ 网页素材
http://down.chinavisual.com/stuff/c1/?ref=stuff_list_sidebar 视觉中国下吧
www.webjx.com/ 网页教学网
.定位的专业解释
(1)语法
position : static | absolute | fixed | relative
(2) 说明
从上面语法可以看出,定位的方法有很多种,它们分别是静态(static),绝对定位(absolute),固定(fixed),相对定位(relative)。
绝对定位(absolute):将被赋予此定位方法的对象从文档流中拖出,使用left,right,top, bottom等属性相对于其
最接近的一个最有定位设置的父级对象进行绝对定位
,
最有定位设置的对象是指:position不是默认值 一般设置为relative
position为relative时:相对元素在文档流中的位置定位,如果left right top bottom没有设定值表示没有偏移量位置和static一样,这个属性可以设置偏移量static不能。如果设置值相对他原来在文档流中位置偏移,偏移后原来占得位置不释放。
position为absolute时一定要设置left right top bottom 中的一个或者全部。这点区别于relative。
【
static
:
默认值
。无特殊定位,对象遵循HTML定位规则
absolute
:
将对象从文档流中拖出,使用
left
,
right
,
top
,
bottom
等属性相对于其最接近的一个最有定位设置的父对象进行绝对定位。如果不存在这样的父对象,则依据 body
对象。而其层叠通过
z-index
属性定义
fixed
:
未支持
。对象定位遵从绝对(absolute
)方式。但是要遵守一些规范
relative
:
对象不可层叠,但将依据
left
,
right
,
top
,
bottom
等属性在正常文档流中偏移位置
left : auto | length
auto | : | 默认值 。无特殊定位,根据HTML定位规则在文档流中分配 |
length | : | 由浮点数字和单位标识符组成的长度值 | 百分数。必须定义 position 属性值为 absolute 或者 relative 此取值方可生效。请参阅 长度单位 |
】
如果对象的父级没有设置定位属性,即还是遵循HTML定位规则的,则依据 body 对象左上角作为参考进行定位。
绝对定位对象可层叠,层叠顺序可通过 z-index 属性控制,z-index值为无单位的整数,大的在最上面,可以有负值(目前负值FF不支持)。
相对定位(relative):对象不可层叠 ,依据left,right,top,bottom等属性在正常文档流中偏移自身位置。同样可以用z-index分层设计 。
2.定位的形象解释
我先来架设一个虚拟的场景:有一个矩形的房间,里面还有一个水桶装了些水,水里还浸泡着一个西瓜,这个房间半空中还有不少的钩子用于挂东西用。现在我把网页元素与上面物件对应上,那么房间就是一个网页,水桶是网页中的一个板块,桶中的水就是文本流,西瓜就是将要被定位的对象。
(1)贡献的绝对定位(absolute)
对照前面解释,如果西瓜被赋予绝对定位,那么就等于把西瓜从水中捞起来挂在半空中的钩子上,水桶中西瓜原来占用的空间水会自动填补它(绝对定位对象会让出自己原先占用位置,所以说它是贡献的
)。此时如果之前没有对水桶进行定位设定,那么被拿起的西瓜位置不会再受水桶位置影响,水桶怎么移动,西瓜还是挂在原来位置,至于西瓜要怎放,则以房间左上角(body左上角)为准,用left,right,top,bottom值来定位。但是如果水桶也给出了定位设置(通常是相对定位,
下面有讲到这一实用技巧),此时西瓜的摆放就没有那么自由了,尽管此时西瓜被拿起来了不会影响水桶中的水(文本流),但它还是要听桶的话,桶会告诉西瓜“你可以活动,但应该在我的范围内走动,比方说我要你在我左上方1米处,你就要跟死这一点,我走你也要跟着走”,如果桶中有很多个西瓜,可以全部拿出来吊到半空中,它们将被安排在不同高度的空间(层),所以在房顶垂直往下看,有可能看到不同西瓜层叠在一起的情况(这个所谓的高度在网页中是不存在的,就像FLASH动画中的不同层上安排了元素,但它们在看时不会有深度感觉)。可见绝对定位的对象参考目标是它的父级
,专业称之为包含块。
(2)自私的相对定位(relative)
相对定位一个最大特点是:自己通过定位跑开了还占用着原来的位置,不会让给他周围的诸如文本流之类的对象。相对定位也比较独立,做什么事它自己说了算,要定位的时候,它是以自己本身所在位置偏移的(相对对象本身偏移)。
再拿前边作比如来解,那么此时西瓜似乎是有魔法的,如果西瓜通过相对定位在水桶中偏移了你会看到一个现实生活中不存在的现象:水中有一个地方水凹下去了,周围的水不能填补它,西瓜看起来在旁边,如果搅动一下桶中的水,那个凹的位置会发现改变(文本流对相对定位对象还存在影响),但是凹处到西瓜出现的距离始终保持一致。可见文本流与它之间还会互相影响,因为对象并没有真正脱离文本流,就像有两个人在同一层楼水平移动的过程中会有碰头的机会。
(3)总结两种定位的特征
绝对定位就像是把不同对象安排到了一栋高楼的不同楼层(一般指不是第一层,我们这里理解为文本流就放在首层),它们互不影响,但是它们怎么移动与你楼的地基和面积(父级)有关。相对定位指对象还是在首层楼与文本流一起存放,它们之间肯定存在影响。
(4)对特殊情况的补充
在用相对定位和绝对定位的时候,有一种情况是它们的定位值用到了负值则对象可沿相反方向移动,刚才说到的把对象安排在一栋楼的不同层,如果某个对象一开始就是背靠着最外边墙的,此时再用一个负值定位它,它就会神奇般地跑出墙外去了,当然现实中可没有这种惊险而又神奇的事发生,本人只为了延用上面的比如作形象解释。
3.实例强化对定位属性的理解
(1)无定位设置,对象遵循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> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无定位设定,对象遵循HTML定位规则</title> <style type="text/css"> <!-- body { margin:0px; font-size: 9pt; margin-top: 150px; margin-left: 150px; } .box1 { background-color: #33CCFF; height: 200px; width: 200px; } .box2 { background-color: #66CC66; height: 100px; width: 100px; } --> </style> </head> <body> <div class="box1"> <div class="box2"></div> </div> </body> </html>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
(2)给设定了 定位属性的对象指定left,right,top,bottom属性中的至少一个,不然定位不起作用。 下面实例中虽然给box2设定了定位属性position: absolute,但是如果没有指定其中一个方位定位值top: 0px,定位是不发生作用的,你可以删除我注释的样式再测试效果进行前后对比。
运行代码框
<!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> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>给定位对象指定一个方位数值</title> <style type="text/css"> <!-- body { margin:0px; font-size: 9pt; margin-top: 150px; margin-left: 150px; } .box1 { background-color: #33CCFF; height: 200px; width: 200px; } .box2 { background-color: #66CC66; height: 100px; width: 100px; position: absolute; top: 0px;/*如果没有指定一个方位定位属性和值,绝对定位不起作用,你可以删除这一项看一下效果*/ } --> </style> </head> <body> <div class="box1"> <div class="box2"></div> </div> </body> </html>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
(3)绝对定位对象可以层叠,层叠顺序用z-index控制,如果没有指定则遵循其父对象的定位方法,就目前来说要做到不同浏览器正常浏览,最好不要给z-index指定负值,因为像FF这样标准的浏览器不支持负值,为了解释这一现象,下面实例中的最底层图片我用到了负值,所以会出现在IE中可以看到3幅图层叠,而转到FF中你就只能看到两幅图层叠了。
运行代码框
<!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> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>绝对定位对象可以层叠,层叠顺序可用z-index控制,但最好不要用负值,因为FF不支持</title> <style type="text/css"> <!-- body { margin:0px; font-size: 9pt; margin-top: 150px; margin-left: 150px; } .box1 { background-color: #33CCFF; height: 200px; width: 270px; background-image: url(http://farm1.static.flickr.com/80/251133988_e0b8174060_m.jpg
); background-repeat: no-repeat; background-position: center center; position: absolute; left: 10px; top: 10px; z-index:-1;/*这里用了负值,在标准浏览器,如FF中是不能正常显示的*/ } .box2 { background-color: #66CC33; height: 200px; width: 270px; background-image: url(http://farm1.static.flickr.com/6/76318014_e50414fe42_m.jpg
); background-repeat: no-repeat; background-position: center center; position: absolute; left: 50px; top: 50px; } .box3 { background-color: #996699; height: 200px; width: 270px; background-image: url(http://farm1.static.flickr.com/48/172522117_410a1e87c1_m.jpg
); background-repeat: no-repeat; background-position: center center; position: absolute; left: 100px; top: 100px; } --> </style> </head> <body> <div class="box1"></div> <div class="box2"></div> <div class="box3"></div> </body> </html>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
(4)相对定位对象会占据它原来位置,在下面实例中,没有设定相对定位前,绿色小盒子是在蓝色盒子左上角的,之前也设定了绿色小盒子的浮动方式为左浮动,可以看到文本环绕在它右边,但是后来用相对定位方法把绿色小盒子重定位到外面去了,它还占着自己原来位置,因为你还可以看到文本流没有发生自动填补流动。因此这种直接的相对定位方法较少用,因为重定位对象后原来位置空了一块。相对定位常与绝对定位结合用,一般是给父级设定相对定位方式,子级元素就可以相对它进行方便的绝对定位了(请注意看后面的实例) 。
运行代码框
<!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> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>相对定位对象会占据原有位置</title> <style type="text/css"> <!-- body { margin:0px; font-size: 9pt; line-height:12pt; margin-top: 150px; margin-left: 150px; } .box1 { background-color: #3CF; height: 200px; width: 200px; } .box2 { background-color: #6C6; height: 100px; width: 100px; position: relative; float: left; top:-120px; } --> </style> </head> <body> <div class="box1"> <div class="box2"></div> [相对定位对象会占据原有位置]现在绿色小盒子是以子盒子形式存在蓝色大盒子中,并设定了浮动方式为左浮动,所以这些文字能环绕在它右边,当绿色小盒子用相对定位方法重定位到外边去了,文字还是不能流入它的区域,即左上角空白区域,那是因为绿色盒子还占用着它原来位置。</div> </body> </html>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
(5)相对定位的对象不可以重叠。这一点也许比较难理解,先来这样理解吧,因为相对定位的对像没有脱离文本流,就像两个还是住在同一层楼的人,任何时候,他们脚下踩的地方不可能被另一个人踩着的,如果可以就意味着两个人共享一块地方了。在下面的实例中,两个小盒子都刚好排在大盒子上方,所以在大盒子中输入的文字被挤到了下面。上面两个盒子我再用相对定位的方法对调了它们的位置,当前它们下方的空间其实不是自己的,也正因为它们没有重叠,所以盒子上方还是有两个盒子占用的空间,下面文字无法向上流动(我已对盒子设定了浮动属性的了,如果不设定,即使有空间文本也不会往上流,上面盒子是块级元素,会独立占据一行)。
运行代码框
<!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> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>相对定位对象不可层叠</title> <style type="text/css"> <!-- body { margin:0px; font-size: 9pt; line-height:12pt; margin-top: 150px; margin-left: 150px; } .box1 { background-color: #33CCFF; height: 200px; width: 210px; padding:5px; } .box2 { background-color: #66CC66; height: 100px; width: 100px; position: relative; float: left; left:100px; } .box3 { background-color: #CC99FF; height: 100px; width: 100px; position: relative; float: left; right:100px; } --> </style> </head> <body> <div class="box1"> <div class="box2">我家在左边</div> <div class="box3">我家在右边</div> 相对定位对象是在正常文本流中移动的,所以它的存在还是会影响文本流的布局, 如果是绝对定位,这些文本应向上流入上方两个盒子的底部了。 </div> </body> </html>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
(6)高度自适应的妙用。在下面实例中,右边的紫色小盒子高度是没有设定的,它的高度是随着里面内容的增加而增高的,但我们又可以通过绝对定位方法把它始终定位在父盒子的右上角。同理,我们也可以只设定高度而让宽度自动随内容增加而变宽。
运行代码框
<!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> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>高度自适应的妙用</title> <style type="text/css"> <!-- body { margin:5px; font-size: 9pt; } .box1 { background-color: #33CCFF; height: 500px; width: 500px; position: relative; } .box2 { background-color: #CC99FF; width: 100px; position: absolute; right:3px; top:3px; text-align: center; line-height:15pt; } .box3 { width: 390px; height:500px; position: absolute; left:0px; top:0px; line-height:15pt; border-right: thin dashed #999; } --> </style> </head> <body> <div class="box1"> <div class="box3">右边的小盒子高度是没有设定的,它的高度是随着里面内容的增加而增高的,但我们又可以通过绝对定位把它始终定在父盒子的右上角。</div> <div class="box2"> <p>蓝色理想<br /> 经典论坛<br /> 业界动态<br /> 技术文档 </p> </div> </div> </body> </html>
//-----------------------------------------------------------------------------------------------------------------------
http://hi.baidu.com/%CB%BC%B8%A6/blog/item/82eb591cbd1b518387d6b607.html
发表评论
-
JS面向对象编程
2012-02-06 10:51 644http://hi.baidu.com/ruan083de/b ... -
JS正则 备忘
2012-01-10 16:21 675http://www.iteye.com/topic/3072 ... -
JS事件冒泡浏览器兼容
2011-06-16 11:06 1241Event keyCode: http://unixpap ... -
CSS样式
2011-06-08 13:47 799自动换行设定宽度:word-wrap\word-break\w ... -
Javascript5-jquery
2011-01-27 15:34 718jquery api: http://visu ... -
JSON
2011-01-21 15:53 746java开源的东西.多。 51cto: //------- ... -
CSS 层定位FLOATDISPLAYVISIBILITY
2011-01-01 15:11 883//图片滚动http://www.kxbd.com/mylab ... -
CSS定位
2011-01-01 12:23 682另一篇: http://blog.csdn. ... -
原理性知识总结
2010-11-04 22:18 8141.spring框架bean be ... -
JavaScript4
2010-10-14 18:50 752http://www.w3school.com.cn/js/j ... -
Spring-JdbcTemplate
2010-04-30 14:06 982JdbcTemplate事务操作: <bean ... -
CSS-右键菜单DIV TABLE
2010-04-20 10:53 2929DIV: 动态增减DIV: 总有bug.不停的右键 就只会增 ... -
JSP分页
2010-04-17 13:29 923分页 用rownum较多 Oracle数据库的rownum ... -
JavaScript3
2010-04-15 13:44 737右键弹出菜单: //-------------------- ... -
JavaScript2
2010-04-13 16:12 9081.单选按钮 <input type="rad ... -
JavaScript1
2010-03-22 17:10 542from:http://www.tsolong.com/pos ... -
webwork框架
2009-07-02 20:41 7661.webwork标签 教材:http://dev.csdn. ... -
关于框架开发
2009-06-18 00:05 746纪念: JAR Library Installation(ja ... -
页面常用部分
2009-05-25 22:39 686HTML+XHTML+CSS+JavaScript+DOM+A ...
相关推荐
**CSS+DIV 盒子模型详解** 在网页设计与开发中,CSS(层叠样式表)和DIV元素是构建布局的基础。"CSS+DIV-盒子模型示例.zip"中的内容显然是为了帮助理解CSS中的盒子模型及其应用。盒子模型是CSS布局的核心概念,它将...
在网页设计中,DIV CSS是构建页面布局的重要工具,而盒子模型(Box Model)则是理解CSS布局的关键概念。这个PPT演讲将深入探讨这一核心知识点,帮助初学者掌握网页设计的基础。 首先,我们要了解什么是盒子模型。在...
在网页设计领域,`DIV`布局是构建网页结构的基础,...掌握这些`DIV`布局技巧和`DIV`盒子模型,将有助于创建整洁、高效且富有弹性的网页设计。在实际开发中,结合具体需求和场景灵活运用,可以使页面布局更加得心应手。
CSS盒子模型是网页设计的基础,它为我们提供了一种通过样式化元素来构建网页布局的方式。盒子模型由几个部分组成,包括内容(content)、填充(padding)、边框(border)和边界(margin),每一部分都有其特定的...
而要深入掌握DIV+CSS,了解盒子模型则是构建网页布局的基石。 盒子模型是网页布局的核心概念,它将每一个HTML元素形象化为一个矩形盒子,包括四个主要部分:内容区域、内边距、边框和外边距。每个部分都有其独特的...
CSS盒子模式是网页布局的基础,尤其对于使用CSS(层叠样式表)进行页面设计和开发而言,至关重要。在传统表格布局中,网页内容是通过表格和嵌套表格来定位的,而CSS布局则是通过定义不同大小和嵌套的“盒子”(即...
CSS 盒子模型结构是 div+css 技术的基础组成部分,它主要解决了传统的 table 表格嵌套问题。盒子模型可以看成是网页的一个区块,也可以看成是大区块中的一个“区块元素”。既然是区块,“盒子模型”自然就会占据...
"div盒子模型.pdf" 本文主要讲解了 CSS 盒子模型的概念和应用。CSS 盒子模型是指在网页设计中,对 div 元素的布局和样式的控制。它具有四个主要属性:内容(content)、填充(padding)、边框(border)和边界...
随着技术的不断发展,盒子模型和`<div>`标记仍然是网页制作中不可或缺的部分,它们是构建现代化、响应式网站的基石。通过不断实践和探索,开发者可以利用这些基本工具创造出无限可能的网页设计方案。
在Web开发中,盒子模型是CSS布局的基础概念之一,它定义了元素框处理元素内容(content)、内边距(padding)、边框(border)和外边距(margin)的方式。了解盒子模型对于设计出适应不同屏幕尺寸和设备的响应式网页...
需引入必要文件box2.js和box2.css; jquery版本在1.4以上 2、添加方法 在html中添加class为.box2的div即可; 3、属性介绍 <div class="box2" panerTitle="控制面板" panelHeight="" panelWidth="300" showStatus=...
3. **盒模型**:理解CSS布局的基础是盒模型,每个HTML元素都可视为一个矩形的盒子,包含边距(margin)、边框(border)、填充(padding)和内容区域。盒模型决定了元素占据的空间及其与其他元素的关系。 4. **定位...
在网页设计领域,CSS(Cascading Style Sheets)盒子模型是理解页面布局的关键。这个模型定义了元素如何占据空间并与其他元素相互作用。本篇文章将深入解析CSS盒子模型,并通过实例探讨如何使用div布局,帮助你彻底...
- **弹性盒子(Flexbox)和网格(Grid)布局**:利用这些现代CSS布局模型,可以轻松实现复杂的响应式设计。 ### 4. Login页面设计的实现 - **从设计到开发**:设计完成后,需要将PSD文件转换为HTML和CSS代码。这...
其中,CSS盒子模型作为DIV排版的核心组成部分,扮演着至关重要的角色。本文将深入探讨CSS盒子模型的基本概念、工作原理及其实际应用技巧,帮助读者更好地理解和掌握这一关键技术。 #### 二、CSS盒子模型概述 **1. ...
CSS 盒子模型 CSS 盒子模型,也称为框模型,是一种将 HTML 元素表示为一个矩形区域的模型。这个模型由多个部分组成,包括元素内容、内边距、边框、外边距等。 一、什么是盒子模型? CSS 盒子模型是将 HTML 元素...
- **Flex布局**:现代浏览器支持的弹性盒子模型,简化了多列或多行布局的实现。 - **Grid布局**:CSS Grid提供二维网格系统,用于创建复杂的布局结构。 5. **CSS样式** - **颜色和背景**:颜色可以通过名称、...
实验过程中,理解了CSS的选择器(如标签选择器、类选择器和ID选择器),掌握了盒子模型、元素定位和常见的布局模式。 4. **CSS基础知识** - **概念和特点**:CSS是层叠样式表,用于控制网页样式,提供了诸如字体、...