HTML中元素的position属性详解

转载自:https://blog.csdn.net/wangzunkuan/article/details/81540935

 

HTML中DOM元素有5种定位属性值:static、relative、absolute、fixed和inherit。下面分别对这5个属性进行说明。

position: static;

默认情况下,所有元素都采用静态的定位方式,DOM元素的位置由元素在HTML 中的位置决定,具体规则是:

  • 块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。
  • 行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距边框和外边距不影响行内框的高度。

注意:采用该定位方式时,DOM元素声明的top, bottom, left, right 或者 z-index属性无效。


position: relative;

如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。简言之,这里的“相对”指的就是相对于普通定位而言的。举个例子,如果将 top 设置为 30px,那么框将在普通定位的位置顶部下面30 像素的地方。如果 left 设置为20 像素,那么会在元素左边创建 20 像素的空间,也就是将元素向右移动。

#box_relative {
position: relative;
left: 30px;
top: 20px;
}


position: absolute;

顾名思义,这种定位方式为绝对定位。在这种情况下,HTML会生成绝对定位的元素,相对于 static 定位以外的第一个父元素(也称祖先元素)进行定位,如果不存在这样的父元素,则依据最初的包含块。元素的位置通过top、 left、bottom、right属性进行规定,也可通过z-index进行层次分级。

绝对定位使元素的位置与文档流无关,因此不占据空间。这一点与相对定位不同,相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。举个例子:

#box_absolute {
position: absolute;
left: 30px;
top: 20px;
}

如果设置上面的属性,則该DOM元素会在普通定位的基础位置上相对于祖先元素左上角位置向右移动30px,上下移动20px。


position: fixed;

如果只是单纯地设置了position:fixed属性而没有设置 left | top | right | bottom的话HTML元素的位置是按照默认的样式进行排列的(即按照position:static)。并且,它是以包裹内容的样式展示,这类似于Android中的width:wrap_content; height:wrap_content。
还需要说明一点:position:fixed属性的元素会跟其他元素重叠,后面的在上层。如下面的布局

<div >
<p>No1: fixed 定位</p>
</div> <div >
<p>No2: fixed 定dedefdefefe</p>
</div>

下面再说一下 left | top | right | bottom这几个重要属性。一句话,他们都是相对于浏览器窗口进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。这种定位类似于将 position 设置为 absolute,祖先元素是浏览器窗口本身。举例:

<html>
<head>
<style type="text/css">
p.one{
position:fixed;
top:15px;
left:5px;
border:red 2px solid;
}
p.two{
position:fixed;
top:30px;
right:5px;
border:blue 2px solid;
}
</style>
</head>
<body>
<p class="one">左侧文字</p>
<p class="two">右侧文字</p>
</body>
</html>

这样设置的结果是:
左侧文字相对于浏览器窗口左上角位置向下移动15px,向右移动5px;
右侧文字相对于浏览器窗口右上角位置向下移动30px,向左移动5px;


position: inherit;

规定应该从父元素继承 position 属性的值。即DOM元素的父级元素position属性是什么,它的position属性就是什么,这里不再赘述。

HTML中元素的position属性详解的更多相关文章

  1. DIV-CSS布局中position属性详解

    本文向大家描述一下DIV CSS布局中的position属性的用法,position属性主要有四种属性值,任何元素的默认position的属性值均是static,静态.这节课主要讲讲relative( ...

  2. CorelDRAW中如何复制对象属性详解

    复制对象属性是一种比较特殊.重要的复制方法,它可以方便而快捷地将指定对象中的轮廓笔.轮廓色.填充和文本属性通过复制的方法应用到所选对象中.本教程将详解CorelDRAW中如何复制对象属性. Corel ...

  3. position属性详解

    内容: 1.position属性介绍 2.position属性分类 3.relative相对定位 4.absolute绝对定位 5.relative和absolute联合使用进行定位 6.fixed固 ...

  4. PyQt(Python+Qt)入门:Designer组件属性编辑界面中QWidget类相关属性详解

    本文适用人员:本文比较长,适合不理解Qt Designer部件属性的人员阅读或资料查找. 声明: 1.如果有人认为本文是简单的复制粘贴+翻译而成,敬请读本文最后的后记: 2.本文为老猿Python学习 ...

  5. js中caller和callee属性详解

    一.caller属性返回一个对函数的引用,该函数调用了当前函数.functionName.callerfunctionName 对象是所执行函数的名称.说明对于函数来说,caller 属性只有在函数执 ...

  6. 第八章、Designer组件属性编辑界面中QWidget类相关属性详解

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 声明:本文为老猿Python学习研究精心整理而成,禁止转载. 内容提纲 引言概述QWidget属性列 ...

  7. CSS position overflow float 属性 详解

    position  overflow float 几个属性比较容易混淆,写一段代码详解各自具体情况: position在w3school的可能取值: 值 描述 absolute 生成绝对定位的元素,相 ...

  8. CSS中background属性详解

    CSS背景属性 background css 说明 background-image:url(图片的网址); 背景图 background: url( 图片的网址 ); 背景 background-c ...

  9. Javascript中prototype属性详解 (存)

    Javascript中prototype属性详解   在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不 ...

随机推荐

  1. 通过AndroidSDK自带的Tool在dos命令行窗口显示日志,并存入txt文档中

    1.在默认情况下,命令行窗口中使用的代码页是中文或者美国的,即编码是中文字符集或者西文字符集.  如果一个文本文件是utf-8的,那么在dos窗口中不能正确显示文件中的内容. 以下命令切换编码: ch ...

  2. Android DatePickerDialog 使用方法

    (一)在Android 4.0以上系统的某些手机(如本人的测试机红米Note(系统4.4.4),以及模拟器(系统4.0)),使用如下代码创建时间选择器时,页面效果如图: Calendar cal = ...

  3. 雷林鹏分享:C# 可空类型(Nullable)

    C# 可空类型(Nullable) C# 可空类型(Nullable) C# 提供了一个特殊的数据类型,nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 nu ...

  4. English trip EM2-LP-6B Teacher:Gabriele

    Gabriele    Gabi               n. 加布里尔,加布里埃尔,加布里埃,加布里埃莱(人名) 课上内容(Lesson) 词汇(Key Word ) is married? 结 ...

  5. c++-pimer-plus-6th-chapter04

    Chapter Review 1 a. char actors[30]; b. short betsie[100]; c. float chunk[13]; d. long double dipsea ...

  6. java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: service-one

    一.异常信息 java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have a ...

  7. LeetCode--026--删除排序数组中的重复项

    问题描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...

  8. WARNING: CPU: 0 PID: 1 at ./arch/x86/include/asm/fpu/internal.h:373

    ------------[ cut here ]------------WARNING: CPU: 0 PID: 1 at ./arch/x86/include/asm/fpu/internal.h: ...

  9. How-to: Use HBase Bulk Loading, and Why

    How-to: Use HBase Bulk Loading, and Why http://blog.cloudera.com/blog/2013/09/how-to-use-hbase-bulk- ...

  10. salt相关

      salt安装  https://docs.saltstack.com/en/latest/topics/installation/index.html#quick-install   salt远程 ...