div 的定位(1)

转载 2007年10月10日 16:51:00

定位的形象解释
我先来架设一个虚拟的场景:有一个矩形的房间,里面还有一个水桶装了些水,水里还浸泡着一个西瓜,这个房间半空中还有不少的钩子用于挂东西用。现在我把网页元素与上面物件对应上,那么房间就是一个网页,水桶是网页中的一个板块,桶中的水就是文本流,西瓜就是将要被定位的对象。
(1)贡献的绝对定位(absolute)
对照前面解释,如果西瓜被赋予绝对定位,那么就等于把西瓜从水中捞起来挂在半空中的钩子上,水桶中西瓜原来占用的空间水会自动填补它(绝对定位对象会让出自己原先占用位置,所以说它是贡献的)。此时如果之前没有对水桶进行定位设定,那么被拿起的西瓜位置不会再受水桶位置影响,水桶怎么移动,西瓜还是挂在原来位置,至于西瓜要怎放,则以房间左上角(body左上角)为准,用left,right,top,bottom值来定位。但是如果水桶也给出了定位设置(通常是相对定位,下面有讲到这一实用技巧),此时西瓜的摆放就没有那么自由了,尽管此时西瓜被拿起来了不会影响水桶中的水(文本流),但它还是要听桶的话,桶会告诉西瓜“你可以活动,但应该在我的范围内走动,比方说我要你在我左上方1米处,你就要跟死这一点,我走你也要跟着走”,如果桶中有很多个西瓜,可以全部拿出来吊到半空中,它们将被安排在不同高度的空间(层),所以在房顶垂直往下看,有可能看到不同西瓜层叠在一起的情况(这个所谓的高度在网页中是不存在的,就像FLASH动画中的不同层上安排了元素,但它们在看时不会有深度感觉)。可见绝对定位的对象参考目标是它的父级,专业称之为包含块。
(2)自私的相对定位(relative)
相对定位一个最大特点是:自己通过定位跑开了还占用着原来的位置,不会让给他周围的诸如文本流之类的对象。相对定位也比较独立,做什么事它自己说了算,要定位的时候,它是以自己本身所在位置偏移的(相对对象本身偏移)。再拿前边作比如来解,那么此时西瓜似乎是有魔法的,如果西瓜通过相对定位在水桶中偏移了你会看到一个现实生活中不存在的现象:水中有一个地方水凹下去了,周围的水不能填补它,西瓜看起来在旁边,如果搅动一下桶中的水,那个凹的位置会发现改变(文本流对相对定位对象还存在影响),但是凹处到西瓜出现的距离始终保持一致。可见文本流与它之间还会互相影响,因为对象并没有真正脱离文本流,就像有两个人在同一层楼水平移动的过程中会有碰头的机会。
(3)总结两种定位的特征
绝对定位就像是把不同对象安排到了一栋高楼的不同楼层(一般指不是第一层,我们这里理解为文本流就放在首层),它们互不影响,但是它们怎么移动与你楼的地基和面积(父级)有关。相对定位指对象还是在首层楼与文本流一起存放,它们之间肯定存在影响。
(4)对特殊情况的补充
在用相对定位和绝对定位的时候,有一种情况是它们的定位值用到了负值则对象可沿相反方向移动,刚才说到的把对象安排在一栋楼的不同层,如果某个对象一开始就是背靠着最外边墙的,此时再用一个负值定位它,它就会神奇般地跑出墙外去了,当然现实中可没有这种惊险而又神奇的事发生,本人只为了延用上面的比如作形象解释。

 (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>
本文转中国秀未来设计  http://www.showweb.cn ,转载请注明出处。

 

(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>
本文转中国秀未来设计  http://www.showweb.cn ,转载请注明出处。

(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>
本文转中国秀未来设计  http://www.showweb.cn ,转载请注明出处。

 

 

 

CSS定位DIV绝对底部

CSS定位DIV绝对底部   网页制作Webjx文章简介:CSS的简单在于它易学,CSS的困难在于寻找更好的解决方案。在CSS的世界里,似乎没有完美这种说法。所以,现在介绍的C...
  • zzq19860626
  • zzq19860626
  • 2013年08月23日 13:54
  • 6476

div的相对定位与绝对定位

一、CSS中的块模型 在CSS的定义中,有的html标签被浏览器当成一个块来显示,比如div、table、p、ul等等,我们称之为块元素;有的html标签被浏览器显示在文本行之间,如a、span...
  • qq_26386171
  • qq_26386171
  • 2017年02月20日 15:55
  • 311

DIV+CSS中的相对定位和绝对定位

一、概念 绝对定位(absolute):将被赋予此定位方法的对象从文档流中拖出,使用left,right,top,bottom等属性相对于其最接近的一个最有定位设置的父级对象进行绝对定位,如果对象...
  • DevilLittle
  • DevilLittle
  • 2016年05月03日 21:04
  • 1124

div布局:相对定位、绝对定位、固定定位

当用div布局,相对定位时,子div的位置是相对于母div来设置的(从母div左上角开始算),margin可以活动到母div外围而不会把母div撑大,padding则总是在母div内部折腾,会把母di...
  • qq_33448733
  • qq_33448733
  • 2016年07月07日 21:02
  • 1246

利用DIV的浮动与定位进行网页布局

利用DIV的浮动与定位进行网页布局   浮动 CSS允许任何元素浮动float,不论是图像,段落还是列表。无论先前元素是什么状态,浮动后都成为块级元素。浮动元素的宽度缺省为auto。 ...
  • qq_24861509
  • qq_24861509
  • 2015年09月30日 23:56
  • 1571

DIV布局有关属性和定位

1.CSS定位属性CSS定位和浮动,CSS定位的基本实现是,允许以相对于元素本来该出现的位置来显示元素,或者相对于父元素,相对于另外一个元素,以及相对于浏览器窗口本身。在CSS布局中,一切都可以理解为...
  • qq_25201665
  • qq_25201665
  • 2016年10月15日 00:03
  • 350

如何根据父级元素进行相对定位

需求:首先有个父级div,若干子元素如何根据父元素的位置进行相对定位?分析:看到这个需求,我首先想到的是position:relative;然而并不能满足需求。大家可以亲手试试,为啥不能满足呢?因为p...
  • zdavb
  • zdavb
  • 2015年09月17日 22:21
  • 4894

控制div跳转到指定位置的若干方法&控制页面定位到指定位置

方法一:用链接a锚点方法     div1     div2     div3   div1   div2   div3 css样式: div {      height: 800px;   ...
  • u010513603
  • u010513603
  • 2017年11月24日 14:35
  • 148

CSS position 属性:绝对定位与相对定位,以及浮动

可能的值:absolute,fixed,relative,static,static,inherit。 值 描述 absolute 生成绝对定位的元素,相对于 static 定位...
  • xiaozaq
  • xiaozaq
  • 2016年01月17日 17:53
  • 3102

Css如何定位网站的footer在固定位置(用DIV+CSS让footer始终在底部)

平时拿CSS布局都是一些内容比较多的网站,这两天用CSS+DIV弄了个内容少的页面,发现了一个小问题,可能大家都会遇到,那就是网站FOOTER的定位,如果内容比较少的话,页面的FOOTER就会随着内容...
  • cs958903980
  • cs958903980
  • 2016年06月08日 14:44
  • 9609
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:div 的定位(1)
举报原因:
原因补充:

(最多只允许输入30个字)