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

DIV的Position属性和嵌套显示

    博客分类:
  • web
阅读更多

1.前言
我们在利用div+css进行布局时,常常被div的位置弄的焦头烂额,很多人甚至放弃了div而直接用table。这里一如既往的推荐使用div布局,其实我们只要掌握了div的position属性和div的float属性,布局是非常灵活的,这里详细说一下div的position,没想象中那么简单,也没想象中那么复杂。

2.position的四种取值
static:static定位就是不定位,出现在哪里就显示在哪里,这是默认取值,只有在你想覆盖以前的定义时才需要显示指定
relative:relative 就是相对元素static定位时的位置进行偏移,如果指定static时top是50象素,那么指定relative并指定top是10象素时,元素实际top就是60象素了。
absolute:absolute绝对定位,直接指定top、left、right、bottom。有意思的是绝对定位也是“相对”的。它的坐标是相对其容器来说的。容器又是什么呢,容器就是离元素最近的一个定位好的“祖先”,定位好的意思就是其Position是absolute或fixed或relative。如果没有这个容器,那就使用浏览器初始的,也就是body或者html元素。标准是说只需要指定left和right,width可以自动根据容器宽度计算出来,可惜ie不支持。
fixed:fixed才是真正的绝对定位,其位置永远相对浏览器位置来计算。而且就算用户滚动页面,元素位置也能相对浏览器保持不变,也就是说永远可以看到,这个做一些彩单的时候可以用。可惜的是ie还不支持

3.relative,absolute,fixed需要指定具体位置
relative,absolute,fixed如果不指定它的top,left等属性,那么它的position实际上依然是static。使用了relative,absolute,fixed就必须指定具体的位置。

4.关于DIV的嵌套
我们设定外层div的名字为div1,内层div的名字为div2

4.1如果div1的position是static,说明div2位置是出现在哪里就显示在哪里。如下图:

div1的position是static,div2的position是absolute,这样div2就不受外层div的约束了。如果div2的position是relative,top:20px;但实际上,div2距离顶端是36px(大于20px),不知道是不是浏览器的bug,ie和Firefox都如此。
代码如下

Java代码 复制代码
  1. <div style="position:static;width:600px;height:400px;background:#FFE4C4;">   
  2. position:static;width:600px;height:400px;background:#FFE4C4   
  3.     <div style="position:relative;top:20px;left:10px;width:500px;height:350px;background:#D2691E">position:absolute;top:20px;left:10px;width:500px;height:350px;background:#D2691E   
  4.     </div>   
  5. </div>  
<div style="position:static;width:600px;height:400px;background:#FFE4C4;">
position:static;width:600px;height:400px;background:#FFE4C4
	<div style="position:relative;top:20px;left:10px;width:500px;height:350px;background:#D2691E">position:absolute;top:20px;left:10px;width:500px;height:350px;background:#D2691E
	</div>
</div>



4.2如果div1的position是relative,这样div2的position不管是relative还是absolute,显示的效果基本是一样的,都是内层div针对外层div的位置。如下图:



不过这两者还有有区别的,如两张图片。如果div2的position是relative,top:20px;但实际上,div2距离顶端是36px(大于20px),但如果div2的position是absolute,top:20px;div2距离顶端的高度就精确的是20px。
代码如下

Java代码 复制代码
  1. <div style="position:relative;width:600px;height:400px;background:#FFE4C4;">   
  2. position:relative;width:600px;height:400px;background:#FFE4C4   
  3.     <div style="position:absolute;top:20px;left:10px;width:500px;height:350px;background:#D2691E">position:absolute;top:20px;left:10px;width:500px;height:350px;background:#D2691E   
  4.     </div>   
  5. </div>  
<div style="position:relative;width:600px;height:400px;background:#FFE4C4;">
position:relative;width:600px;height:400px;background:#FFE4C4
	<div style="position:absolute;top:20px;left:10px;width:500px;height:350px;background:#D2691E">position:absolute;top:20px;left:10px;width:500px;height:350px;background:#D2691E
	</div>
</div>



4.3如果div1的position是absolute,这样div2的position也是absolute,那么div2的位置实际上是一个相对位置。如下图:


5.如果div的position是fixed,就不用说了,其位置永远相对浏览器位置来计算。

6.问题
从div的嵌套可以看出:position:relative,top:20px;无论是上级div的position是什么属性,实际上距离顶端总是大于20px。解决方案也很简单,不用top而用margin来代替。或者根据实际情况微调下。

分享到:
评论

相关推荐

    CSS 嵌套DIV布局(position属性)

    嵌套DIV布局,会牵扯到CSS的position属性 如果内层DIV将position属性设置为absolute,并设置left,和top等属性,还需要考虑外层DIV的position属性设置。 absolute:absolute绝对定位,直接指定top、left、right、...

    多个iframe,其中一个的div能够处于最上层显示

    若要使某个 `iframe` 中的 `div` 显示在其他 `iframe` 之上,我们必须同时调整 `iframe` 和其内的 `div` 的 `z-index`。 步骤如下: 1. 首先,为包含需要置于最上层的 `div` 的 `iframe` 添加一个唯一的 ID,例如 ...

    css+div控制表格 标签代码

    `div`元素常作为容器,通过CSS的`position`属性(如`relative`、`absolute`、`fixed`)配合`top`、`right`、`bottom`、`left`属性,可以实现表格的绝对定位,从而实现浮动表格或其他特殊布局效果。 最后,我们还...

    iframe中页面显示不全1

    首先,我们需要了解`&lt;iframe&gt;`的基本结构和属性。`&lt;iframe&gt;`标签在HTML中是这样定义的: ```html &lt;iframe src="https://example.com" width="500" height="300"&gt;&lt;/iframe&gt; ``` `src`属性指定要加载的URL,`width`...

    div+css整体布局

    这样,两个`div`会并排显示,形成一个整体布局。 四、清除浮动 由于`float`会使元素脱离正常文档流,可能会导致父元素无法正确包裹其内部浮动元素,此时需要使用`clear`属性来解决。常见的做法是在最后添加一个清...

    div style常用属性介绍及使用示例

    一、常用属性: 1、Height:设置DIV的高度。 2、Width:设置DIV的宽度。 例: 复制代码代码如下: &lt;div xss=removed&gt; &lt;/div&gt; 3、margin:用于设置DIV的外延边距,也就是到父容器的距离。 例: 复制代码代码如下: &lt;div...

    DIV布局十大技巧以及DIV盒子模型

    10. **CSS预处理器**:如Sass、Less等,它们扩展了CSS语法,允许变量、嵌套规则和混合等功能,简化`DIV`布局的样式编写和维护。 配合提供的图片资源,`盒子模型.jpg`可能展示了一个典型的`DIV`元素的盒子模型,包括...

    网页Object标签遮盖DIV标签解决方法

    在网页开发过程中,我们经常会遇到各种布局...通过这些方法,你可以有效地解决`&lt;Object&gt;`标签遮盖`&lt;div&gt;`标签的问题,保持网页的正常显示和用户体验。在实际应用中,可能需要结合具体情况和需求,灵活运用上述技巧。

    div分块和css

    `div`标签本身不具有任何特殊的格式或显示特性,其外观完全取决于所应用的CSS。 **1. `div`的基本用法** ```html &lt;div id="container"&gt; &lt;!-- 内容 --&gt; &lt;/div&gt; ``` 在上述示例中,`div`被赋予了一个唯一的ID `...

    DIV+CSS下拉菜单

    通过`position`(定位)、`display`(显示模式)和`z-index`(层叠顺序)属性实现菜单的显示和隐藏。 二、`DIV+CSS`下拉菜单的关键技术 1. 鼠标悬停效果:利用`:hover`伪类,当鼠标悬停在菜单项上时,触发下拉菜单...

    网页CSS_DIV教程

    通过CSS,我们可以对每个DIV进行定位(例如使用position属性)、设置大小(width和height属性)、调整边距和填充(margin和padding属性),以及实现浮动(float属性)和清除(clear属性)等布局技巧。 在"网页CSS_...

    精通css+div

    同时,还会涉及Div的嵌套和组合,以实现复杂页面结构。 **第8章:高级CSS布局技巧** 这章涵盖了更高级的CSS布局技术,可能包括响应式设计、Flexbox(弹性盒模型)和Grid(CSS网格布局)。响应式设计使网页能够适应...

    UI的一些页面div+css

    例如,一个网页可能由头部、主体和底部等多个Div组成,每个Div内部又可以嵌套其他Div,形成多层嵌套的结构。 CSS(Cascading Style Sheets)则负责定义这些Div的样式,包括颜色、字体、边距、布局等。CSS的优势在于...

    div+css源码

    4. 定位:使用`position`属性(如static、relative、absolute和fixed),可以精确控制元素在页面上的位置。 5. 盒阴影、文本阴影、渐变、过渡和动画:这些CSS3特性增加了网页的视觉效果和交互性。 6. 弹性盒模型...

    DIV模仿下拉菜单

    实现二级菜单,可以嵌套`&lt;div&gt;`,或者利用CSS的`position`属性来调整子菜单的位置,使其相对于父菜单呈现。同样,使用jQuery,我们可以监听一级菜单选项的点击事件,动态地显示或隐藏对应的二级菜单。 在提供的文件...

    DIV+CSS多级下拉菜单示例

    1. **嵌套结构**:为了实现多级,我们需要在HTML中使用嵌套的`&lt;div&gt;`,每个层级对应一个菜单级别。 2. **宽度和高度**:根据需要设置菜单项的宽高,以及下拉菜单的宽度和展开高度。 3. **过渡效果**:通过CSS的`...

    DivCss代码

    3. 嵌套和继承:CSS允许将样式应用于嵌套元素,子元素会继承父元素的某些样式,但也可以覆盖它们。 4. 浮动与清除:`float`属性常用于创建多列布局,`clear`属性用于清除浮动,防止父元素高度塌陷。 5. 盒模型:CSS...

    css+div网页模板整站

    在本资料中,每个页面可能都由多个Div元素构成,这些元素通过嵌套和并列,形成页面的层次结构,从而实现动态和静态内容的排列。 在文件名称列表中,我们看到诸如“item_1739980815”等命名的文件,这些可能是每个...

    DIV+CSS网页设计视频

    在本教程中,你将学习到如何定义选择器(如类选择器、ID选择器),以及如何使用属性和值来指定样式规则,比如`display`属性用于设置元素的显示方式,`position`属性用于定位元素,以及`float`和`clear`属性在布局中...

Global site tag (gtag.js) - Google Analytics