`
jdw
  • 浏览: 159269 次
  • 性别: 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、...

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

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

    Div 制作的SELECT

    // 隐藏 的select 用DIV替换 显示 selects[i].parentNode.insertBefore(select_divTag,selects[i]); // 创建 DIV 显示Selectd Option 值 select_info = document.createElement('div'); select_info.id ...

    div+css有实例,易学易懂

    2.3.2 元素的书写格式和属性 2.3.3 各种元素的属性 2.4 XHTML 代码规范 第 3 章 CSS 基础与书写规范 第29 页 3.1 CSS 的基础知识 3.1.1 什么是CSS 3.1.2 CSS 的语法 3.1.3 选择符 3.1.4 属性 3.1.5 伪类和伪元素 ...

    精通CSS+DIV网页样式与布局视频教材

    第2部分 CSS+DIV美化和布局篇 第10章 理解CSS定位与div布局 10.1 div标记与span标记 10.1.1 概述 10.1.2 div与span的区别 10.2 盒子模型 10.2.1 盒子模型的概念 10.2.2 border 10.2.3 ...

    absolute-position-example:一个使用 JavaScript 展示绝对定位在 CSS 中如何工作的简单示例

    此示例显示了四个具有不同颜色边框的嵌套div元素。 每个div的位置是static ,默认值。 每 1.5 秒,内部div元素之一的位置属性设置为absolute并从top和left偏移 0 像素。 1.5 秒后,该元素的 position 属性重新设置...

    神奇!js+CSS+DIV实现文字颜色渐变效果

    本文实例为大家分享了DIV+CSS+JS实现的文字颜色渐变效果,供大家参考,具体内容如下 下面是 CSS 部分代码: &lt;!--CSS代码开始--&gt; body{ font:12px/1.5 Microsoft Yahei; } h3{ padding:10px; margin:0; ...

    css笔记课程笔记2019,5,22

    很多的属性和属性值 * 是页面显示效果更加好 * CSS将网页内容和显示样式进行分离,提高了显示功能。 2、css和html的结合方式(四种结合方式) (1)在每个html标签上面都有一个属性 style,把css和html结合在...

    零基础学HTML CSS源代码

    padding基本语法和用法.html 复合属性padding基本语法和用法。 padding-bottom用法.html 属性padding-bottom用法。 padding-left用法.html 属性padding-left用法。 padding-right用法.html 属性...

    Java开源的xpath解析器Jsoupxpath.zip

    "//div[@id='post_list']/div[position()]/div/h3/allText()"; "//div[@id='post_list']/div[first()]/div/h3/allText()"; "//div[@id='post_list']/div[1]/div/h3/allText()"; "//div[@id='post_list']/div[last()]...

    css入门笔记

    1.css的概述 1.问题 HTML属性修饰有一定局限,是不太便捷 2.css的语法规范 1.... 属性:background-position: 取值: 1.x y x: 背景图片水平偏移距离 取正向下右 取负向左 y: 背景图片...

    从入门到精通HTML5——PDF——网盘链接

     12.3 新增的属性和废除的属性 234  12.3.1 新增的属性 234  12.3.2 废除的属性 236  12.4 全局属性 237  12.4.1 contentEditable属性 237  12.4.2 designMode属性 238  12.4.3 hidden属性 239  12.4.4 ...

    jquery获取点击控件的绝对位置简单实例

    在使用jquery的过程中,想取得当前点击input的绝对位置而去显示一个div,jquery本身提供offset和position这个两个方法,但position官方解释是relative to the offset parent,可以看到是针对父结点的,而offset官方...

    ExtAspNet_v2.3.2_dll

    -这个属性和Button得ValidateForms属性类似,可以查看Asp.net compatibility中的示例。 +2009-08-25 v2.0.7 -为按钮增加DisableControlBeforePostBack属性 - 回发之前是否禁用按钮,防止重复提交 - 默认为...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -这个属性和Button得ValidateForms属性类似,可以查看Asp.net compatibility中的示例。 +2009-08-25 v2.0.7 -为按钮增加DisableControlBeforePostBack属性 - 回发之前是否禁用按钮,防止重复提交 - 默认为...

    babel-plugin-css-generator-react-components:在React组件中编写样式,并使用自动生成的.css文件样式化组件

    componentStyle ( STYLED_DIV = { 'color' : 'red' , 'position' : 'relative' , 'background-position' : 'center' , 'display' : 'flex' , '&:hover' : { 'color' : 'blue' , 'position' : 'absolute' } , '...

    js实现拖拽效果

    首先来了解一下,面向对象练习的基本规则和问题: 先写出普通的写法,然后改成面向对象写法项 普通方法变形 ·尽量不要出现函数嵌套函数 ·可以有全局变量 ·把onload函数中不是赋值的语句放到单独函数中 改成面向...

    纯css写一个大太阳的天气图标的方法示例

    用两个嵌套的div容器,父容器来控制图标显示的位置,子容器用来写太阳的一条光影矩形的样式。 &lt;div class=container&gt; &lt;div class=sunny&gt;&lt;/div&gt; &lt;/div&gt; css样式 1、定义父容器样式,控制图标位置,顺便给整个页面加...

Global site tag (gtag.js) - Google Analytics