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>
<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>
<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来代替。或者根据实际情况微调下。
分享到:
相关推荐
嵌套DIV布局,会牵扯到CSS的position属性 如果内层DIV将position属性设置为absolute,并设置left,和top等属性,还需要考虑外层DIV的position属性设置。 absolute:absolute绝对定位,直接指定top、left、right、...
若要使某个 `iframe` 中的 `div` 显示在其他 `iframe` 之上,我们必须同时调整 `iframe` 和其内的 `div` 的 `z-index`。 步骤如下: 1. 首先,为包含需要置于最上层的 `div` 的 `iframe` 添加一个唯一的 ID,例如 ...
`div`元素常作为容器,通过CSS的`position`属性(如`relative`、`absolute`、`fixed`)配合`top`、`right`、`bottom`、`left`属性,可以实现表格的绝对定位,从而实现浮动表格或其他特殊布局效果。 最后,我们还...
首先,我们需要了解`<iframe>`的基本结构和属性。`<iframe>`标签在HTML中是这样定义的: ```html <iframe src="https://example.com" width="500" height="300"></iframe> ``` `src`属性指定要加载的URL,`width`...
这样,两个`div`会并排显示,形成一个整体布局。 四、清除浮动 由于`float`会使元素脱离正常文档流,可能会导致父元素无法正确包裹其内部浮动元素,此时需要使用`clear`属性来解决。常见的做法是在最后添加一个清...
一、常用属性: 1、Height:设置DIV的高度。 2、Width:设置DIV的宽度。 例: 复制代码代码如下: <div xss=removed> </div> 3、margin:用于设置DIV的外延边距,也就是到父容器的距离。 例: 复制代码代码如下: <div...
10. **CSS预处理器**:如Sass、Less等,它们扩展了CSS语法,允许变量、嵌套规则和混合等功能,简化`DIV`布局的样式编写和维护。 配合提供的图片资源,`盒子模型.jpg`可能展示了一个典型的`DIV`元素的盒子模型,包括...
在网页开发过程中,我们经常会遇到各种布局...通过这些方法,你可以有效地解决`<Object>`标签遮盖`<div>`标签的问题,保持网页的正常显示和用户体验。在实际应用中,可能需要结合具体情况和需求,灵活运用上述技巧。
`div`标签本身不具有任何特殊的格式或显示特性,其外观完全取决于所应用的CSS。 **1. `div`的基本用法** ```html <div id="container"> <!-- 内容 --> </div> ``` 在上述示例中,`div`被赋予了一个唯一的ID `...
通过`position`(定位)、`display`(显示模式)和`z-index`(层叠顺序)属性实现菜单的显示和隐藏。 二、`DIV+CSS`下拉菜单的关键技术 1. 鼠标悬停效果:利用`:hover`伪类,当鼠标悬停在菜单项上时,触发下拉菜单...
通过CSS,我们可以对每个DIV进行定位(例如使用position属性)、设置大小(width和height属性)、调整边距和填充(margin和padding属性),以及实现浮动(float属性)和清除(clear属性)等布局技巧。 在"网页CSS_...
同时,还会涉及Div的嵌套和组合,以实现复杂页面结构。 **第8章:高级CSS布局技巧** 这章涵盖了更高级的CSS布局技术,可能包括响应式设计、Flexbox(弹性盒模型)和Grid(CSS网格布局)。响应式设计使网页能够适应...
例如,一个网页可能由头部、主体和底部等多个Div组成,每个Div内部又可以嵌套其他Div,形成多层嵌套的结构。 CSS(Cascading Style Sheets)则负责定义这些Div的样式,包括颜色、字体、边距、布局等。CSS的优势在于...
4. 定位:使用`position`属性(如static、relative、absolute和fixed),可以精确控制元素在页面上的位置。 5. 盒阴影、文本阴影、渐变、过渡和动画:这些CSS3特性增加了网页的视觉效果和交互性。 6. 弹性盒模型...
实现二级菜单,可以嵌套`<div>`,或者利用CSS的`position`属性来调整子菜单的位置,使其相对于父菜单呈现。同样,使用jQuery,我们可以监听一级菜单选项的点击事件,动态地显示或隐藏对应的二级菜单。 在提供的文件...
1. **嵌套结构**:为了实现多级,我们需要在HTML中使用嵌套的`<div>`,每个层级对应一个菜单级别。 2. **宽度和高度**:根据需要设置菜单项的宽高,以及下拉菜单的宽度和展开高度。 3. **过渡效果**:通过CSS的`...
3. 嵌套和继承:CSS允许将样式应用于嵌套元素,子元素会继承父元素的某些样式,但也可以覆盖它们。 4. 浮动与清除:`float`属性常用于创建多列布局,`clear`属性用于清除浮动,防止父元素高度塌陷。 5. 盒模型:CSS...
在本资料中,每个页面可能都由多个Div元素构成,这些元素通过嵌套和并列,形成页面的层次结构,从而实现动态和静态内容的排列。 在文件名称列表中,我们看到诸如“item_1739980815”等命名的文件,这些可能是每个...
在本教程中,你将学习到如何定义选择器(如类选择器、ID选择器),以及如何使用属性和值来指定样式规则,比如`display`属性用于设置元素的显示方式,`position`属性用于定位元素,以及`float`和`clear`属性在布局中...