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

div的相对定位与绝对定位

    博客分类:
  • HTML
 
阅读更多

一、CSS中的块模型

 

 

 

二、CSS中的文档流模型

  所有的块元素在html文档中是按照它们出现在文档中的先后顺序排列的(当然,嵌套不在此列),每一个块都会另起一行。如下图


他们对应的html如下: 
<div id="div1">div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>


为了定义他们的宽度、高度还有边框,我们定义如下的CSS: 
#div1 {
  border: 1px solid #000099;
  height: 60px;
  width: 200px;
  margin:2px;
}

#div2 {
  border: 1px solid #000099;
  height: 60px;
  width: 200px;
  margin:2px;
}

#div3 {
  border: 1px solid #000099;
  height: 60px;
  width: 200px;
  margin:2px;


三、CSS中的相对定位和绝对定位模型

   在文档流中,每个块元素都会被安排到流中的一个位置,我们可以通过CSS中的定位属性来重新安排它的位置。定位分为相对定位和绝对定位, 相对定位是相对于该块元素在文档流中的位置的,比如,我们可以使用相对定位把div2放到div1的右侧,CSS代码如下: 
#div1 {
  border: 1px solid #000099;
  height: 60px;
  width: 200px;
  margin:2px;
}

#div2 {
  border: 1px solid #000099;
  height: 60px;
  width: 200px;
  margin:2px;
  position: relative;
  top: -64px;
  left: 204px;
}

#div3 {
  border: 1px solid #000099;
  height: 60px;
  width: 200px;
  margin:2px;
}

下面是效果:


  可以看到一个有趣的现象,那就是虽然我们把div2移走了,但是div1和div3中间还是有一个空间,说明相对定位的元素是会占据文档流空间的,这里的div2就是典型的“站着茅坑不拉屎”。

使用绝对定位也是可以把div2摆到div1的右边的,而且绝对定位是不会占据文档流空间的,如下图,div1和div3之间没有空白:


div2的CSS代码: 
#div2 {
  border: 1px solid #000099;
  height: 60px;
  width: 200px;
  margin:2px;
  position: absolute;
  top: 15px;
  left: 214px;
}

绝对定位是个好东西,可以把内容显示到页面上的任何位置,但是对于我们程序员来说,却不能使用太多的绝对定位,因为使用程序动态向div中添加内容,div的大小是不可知的,无法将每一个div的位置都定死。

四、CSS中的浮动和清除模型
   在CSS中,最让人不好理解的应该算是float和clear意义了。float可以达到这样一个效果,就是本来应该一行一个的块元素,如果定义了float属性,则只要行的空间足够,它会跑别的float元素的屁股后面,而不再会单独占用一行,如下图:



这里把div2和div3都定义了为浮动,代码如下:
#div2 {
  border: 1px solid #000099;
  height: 60px;
  width: 200px;
  margin:2px;
  float:left;
}

#div3 {
  border: 1px solid #000099;
  height: 60px;
  width: 200px;
  margin:2px;
  float:left;
}

   那什么情况下需要clear呢?这是因为float的元素和绝对定位的元素一样,也是不占用文档空间的,因此,如果我们把div2和div3都嵌套在div1中,并且把div2和div3都定义为浮动,那么由于它们不占用文档空间,设置为浮动后div2和div3都不属于div1的内容了,所以作为父元素的div1没有内容填充,不知道自动扩展大小,以至于显示出来div2和div3会跑到div1的外面,如下图



下面是它们的html代码: 
<div id="div1">div1
<div id="div2">div2</div>
<div id="div3">div3</div>
</div>

下面是它们的css代码: 
#div1 {
  border: 1px solid #000099;
  height: 60px;
  width: 450px;
  margin:2px;
}

#div2 {
  border: 1px solid #000099;
  height: 60px;
  width: 200px;
  margin:2px;
  float:left;
}

#div3 {
  border: 1px solid #000099;
  height: 60px;
  width: 200px;
  margin:2px;
  float:left;
}


因为float的元素不占用文档流空间,有时候元素还会重叠到float元素上,这里我就不举例了。

为了解决上面的问题,就需要在float之后的元素上面使用clear,在此例中,我们在div3后面加入一个空段落,并设置其为clear,如下: 
<div id="div1">div1
<div id="div2">div2</div>
<div id="div3">div3</div>
<p class="clear"></p>
</div>

clear 属性定义了元素的哪边上不允许出现浮动元素。下面是新增加的空段落的CSS代码:

.clear{
  clear:left;
}
这时div1有了p这块内容(尽管p里面是空的),并且clear:为left, 使得p的上外边框边界刚好在其上浮动元素的下外边距边界之下
效果图;

分享到:
评论

相关推荐

    div中的相对定位与绝对定位.pdf

    本文主要讨论的是CSS中的两种定位方式:相对定位和绝对定位,特别是在`div`元素中的应用。 1. 相对定位(relative) 相对定位允许元素相对于其原本在正常文档流中的位置进行偏移。当对一个元素设置`position: ...

    div中的相对定位与绝对定位.docx

    本篇文章主要探讨了`div`中的相对定位(`relative`)与绝对定位(`absolute`)的区别及其应用。 1. 相对定位(`position: relative;`) 相对定位保留了元素在正常文档流中的位置,元素的原始位置不会被改变,但它...

    divcss盒子之绝对定位和相对定位.docx

    定位主要包括静态定位、绝对定位和相对定位三种方式。 1. 静态定位(static):这是元素的默认定位方式,元素按照正常的文档流排列,不受left, right, top, bottom等属性的影响。 2. 绝对定位(absolute):绝对...

    详解学习DIV+CSS之四-绝对定位和相对定位

    详解学习DIV+CSS之四-绝对定位和相对定位

    div+css相对定位和绝对定位用法实例详解

    本教程将深入探讨两种主要的定位方式:相对定位和绝对定位,这两种方法在DIV+CSS布局中尤其常用。 1. 相对定位(relative) 相对定位是CSS定位的基础,它保持元素在正常文档流中的位置,但允许通过`top`、`right`、...

    网页制作中层相对定位的实现方法

    绝对定位是指层相对于其最初位置或浏览器窗口的位置进行固定,而相对定位则是指层相对于其最近的非静态定位祖先元素的位置进行定位。 #### 实现方法 ### 1. 通过修改代码实现层相对定位的设置 在HTML文档中,层...

    css定位绝对相对定位

    ### CSS定位详解:绝对定位与相对定位 #### 相对定位(Relative Positioning) 相对定位是一种常见的CSS定位方式,它允许元素相对于其正常位置进行偏移。这种定位不会影响其他元素的位置。 - **定义**: 当元素...

    CSS和Js演示网页绝对定位与相对定位,这些是我们从事前端编程的基础技能,应该学会的东西,这个小示例会告诉你绝对与相对的区别,以及如何去实现他们

    ### 绝对定位与相对定位的概念 1. **绝对定位(Absolute Positioning)**:当一个元素的`position`属性设置为`absolute`时,该元素将脱离正常文档流,相对于其最近的非`static`定位的祖先元素进行定位。如果不存在...

    两个DIV的相对位置(右上角)

    在这个例子中,`div1`被相对定位,而`div2`被绝对定位到`div1`的右上角。`top: 0`和`right: 0`确保了`div2`与`div1`的顶部和右边缘对齐。如果需要`div2`相对于浏览器窗口定位,可以将`div2`的定位改为`fixed`。 ...

    绝对定位+相对定位的妙用——一秒搞清子父级关系

    "绝对定位+相对定位的妙用"是CSS布局技术中的核心概念,它可以帮助我们精确控制网页元素的位置,实现复杂而精致的设计效果。下面将详细讲解这两种定位方式及其相互作用。 1. **相对定位(Relative Positioning)**...

    css 相对定位 绝对定位 浮动 分析

    本篇文章将深入探讨相对定位、绝对定位以及浮动的概念,这些都是网页设计中不可或缺的技能。 **相对定位(Relative Positioning)** 相对定位是CSS定位的基础,它允许元素在不改变其在正常文档流中的位置的情况下...

    div绝对定位布局页面(上中(包括左中右)下).zip

    总之,div绝对定位布局是网页设计中一种强大的工具,它可以让我们创建出灵活且精确的页面结构。但使用时需谨慎,以避免布局问题和可访问性问题。通过不断实践和学习,开发者可以掌握这一技能,为用户提供更好的视觉...

    div+css定位代码示例

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

    CSS+DIV定位浅析

    图3和图4进一步说明了relative和absolute的区别,前者总是相对于最近的静态定位父元素,后者则是相对于最近的绝对或相对定位的父元素。 `fixed`定位与absolute类似,但它不是相对于父元素,而是始终相对于浏览器...

    绝对定位元素被遮挡的解决方法

    绝对定位元素即使z-index值很高,如果其设置相对定位的父元素没有设置z-index值的话,其可能(这种可能性当然是布局存在遮盖的时候)会被后面设置了相对定位的元素遮挡(即使后面的相对定位的元素没有设置z-index值...

    JavaScript获取鼠标位置和鼠标与div的相对位置

    在JavaScript中,获取鼠标位置和计算鼠标与特定div元素的相对位置是常见的需求,这在交互式网页开发中尤其重要。下面将详细讲解如何实现这些功能。 首先,我们需要理解两个基本概念:`event.clientX` 和 `event....

    CSS基础学习之定位—流定位 浮动定位 相对定位 绝对定位 固定定位 粘性定位

    CSS基础声明定位定位简介流定位浮动定位相对定位绝对定位固定定位粘性定位堆叠顺序定位属性总结 定位 定位简介 定位:定义元素框相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的...

Global site tag (gtag.js) - Google Analytics