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都如此。
代码如下
<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。
代码如下
<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来代替。或者根据实际情况微调下。
文章url:
http://javapub.iteye.com/blog/733471
分享到:
相关推荐
嵌套DIV布局,会牵扯到CSS的position属性 如果内层DIV将position属性设置为absolute,并设置left,和top等属性,还需要考虑外层DIV的position属性设置。 absolute:absolute绝对定位,直接指定top、left、right、...
综上所述,`div+css`整体布局涉及到HTML结构的构建、CSS样式的控制,特别是`float`属性的灵活应用和`div`的居中处理,这些知识点构成了网页布局的基础。通过深入理解和实践,可以创建出适应各种需求的高效、美观的...
`div`元素常作为容器,通过CSS的`position`属性(如`relative`、`absolute`、`fixed`)配合`top`、`right`、`bottom`、`left`属性,可以实现表格的绝对定位,从而实现浮动表格或其他特殊布局效果。 最后,我们还...
10. **CSS预处理器**:如Sass、Less等,它们扩展了CSS语法,允许变量、嵌套规则和混合等功能,简化`DIV`布局的样式编写和维护。 配合提供的图片资源,`盒子模型.jpg`可能展示了一个典型的`DIV`元素的盒子模型,包括...
一、常用属性: 1、Height:设置DIV的高度。 2、Width:设置DIV的宽度。 例: 复制代码代码如下: <div xss=removed> </div> 3、margin:用于设置DIV的外延边距,也就是到父容器的距离。 例: 复制代码代码如下: <div...
4. 确保这个 `div` 的 `position` 属性不是默认的 `static`,而是 `absolute` 或 `fixed`,这样才能应用 `z-index`。 请注意,尽管这样可以解决大部分情况,但在某些情况下,浏览器的同源策略可能限制了跨 `iframe`...
这一章将深入讲解Div的使用,包括如何创建和定位Div,以及如何通过CSS属性(如display、position、float等)实现流式布局、网格布局和相对/绝对定位。同时,还会涉及Div的嵌套和组合,以实现复杂页面结构。 **第8章...
在本资料中,每个页面可能都由多个Div元素构成,这些元素通过嵌套和并列,形成页面的层次结构,从而实现动态和静态内容的排列。 在文件名称列表中,我们看到诸如“item_1739980815”等命名的文件,这些可能是每个...
检查`<Object>`和`<div>`的尺寸和相对位置,确保它们没有重叠。可以使用`margin`、`padding`、`width`和`height`等属性来调整它们的位置。 3. **使用绝对定位**: 如果需要更精确地控制元素的位置,可以使用`...
- **嵌套**: 可以在一个`div`内嵌套多个`div`。 - **定位**: 使用CSS的定位属性(`position`, `top`, `left`等)可以实现复杂的布局效果。 - **浮动**: 利用`float`属性可以使`div`水平排列。 #### 三、CSS样式...
通过`position`属性,我们可以将`<div>`设置为静态(默认)、相对、绝对或固定定位,从而实现元素在页面上的精确控制。 总结来说,`<div>`作为HTML中的基本容器元素,配合CSS的样式控制,可以实现丰富的网页布局和...
同时,为了便于定位,将`position`属性设置为`relative`。 ```css .cell { width: 100px; height: 100px; border: 1px solid #ccc; /* 边框用来模拟表格的边框 */ position: relative; } ``` 3. **添加对角...
通过研究这些例子,你可以深入理解DivCSS的工作原理,掌握如何结合Div和CSS创建美观且功能齐全的网页。 学习DivCSS不仅可以提升你的网页设计能力,还能帮助你更好地理解和应用前端技术栈中的其他部分,如JavaScript...
- 分割内容:通过设置div的width、height、margin和padding属性,可以控制其在页面上的大小和位置。 - 布局:div可以通过display属性转换为行内元素或行内块元素,实现灵活的布局模式。 - 类与ID:为div添加类或...
// 替换 第 i 个 SELECT 中所有Option 为Ul嵌套LI元素 replaceOptions(i,selects[i].name); mouseSelects(selects[i].name); if (isIE){ selects[i].onclick = new Function("clickLabels3('"+selects...
1. **嵌套div**:要构建二级目录,我们通常会使用嵌套的div元素。一级目录是一个div,其中包含多个二级目录的div。每个二级目录div都可以独立设置样式,以形成不同的视觉效果。 2. **CSS选择器**:使用类(class)...
在本教程中,你将学习到如何定义选择器(如类选择器、ID选择器),以及如何使用属性和值来指定样式规则,比如`display`属性用于设置元素的显示方式,`position`属性用于定位元素,以及`float`和`clear`属性在布局中...
4. 定位:使用`position`属性(如static、relative、absolute和fixed),可以精确控制元素在页面上的位置。 5. 盒阴影、文本阴影、渐变、过渡和动画:这些CSS3特性增加了网页的视觉效果和交互性。 6. 弹性盒模型...
2. 层叠和定位:通过`position`属性设置元素的位置,如`relative`(相对定位)、`absolute`(绝对定位)或`fixed`(固定定位),配合`top`、`right`、`bottom`、`left`属性调整位置。 3. 显示和隐藏:使用`display`...