zoukankan      html  css  js  c++  java
  • css定位机制

    CSS 定位机制

    CSS 有三种基本的定位机制:普通流、浮动和绝对定位。

    除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定。

    块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。

    行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响行内框的高度。由一行形成的水平框称为行框(Line Box,行框的高度总是足以容纳它包含的所有行内框。不过,设置行高可以增加这个框的高度。

    在下面的章节,我们会为您详细讲解相对定位、绝对定位和浮动。

    CSS position 属性

    通过使用 position 属性,我们可以选择 4 种不同类型的定位,这会影响元素框生成的方式。

    position 属性值的含义:

    static

    元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。

    relative

    元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。

    absolute

    元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

    fixed

    元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。

    提示:相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。

     

     

     

     

     

    CSS 定位属性

    CSS 定位属性允许你对元素进行定位。

    属性

    描述

    position

    把元素放置到一个静态的、相对的、绝对的、或固定的位置中。

    top

    定义了一个定位元素的上外边距边界与其包含块上边界之间的偏移。

    right

    定义了定位元素右外边距边界与其包含块右边界之间的偏移。

    bottom

    定义了定位元素下外边距边界与其包含块下边界之间的偏移。

    left

    定义了定位元素左外边距边界与其包含块左边界之间的偏移。

    overflow

    设置当元素的内容溢出其区域时发生的事情。

    clip

    设置元素的形状。元素被剪入这个形状之中,然后显示出来。

    vertical-align

    设置元素的垂直对齐方式。

    z-index

    设置元素的堆叠顺序。

    设置为相对定位的元素框会偏移某个距离。元素仍然保持其未定位前的形状,它原本所占的空间仍保留。

    CSS 相对定位

    相对定位是一个非常容易掌握的概念。如果对一个元素进行相对定位,它将出现在它所在的位置上。然后,可以通过设置垂直或水平位置,让这个元素相对于它的起点进行移动。

    如果将 top 设置为 20px,那么框将在原位置顶部下面 20 像素的地方。如果 left 设置为 30 像素,那么会在元素左边创建 30 像素的空间,也就是将元素向右移动。

    #box_relative {

      position: relative;

      left: 30px;

      top: 20px;

    }

    如下图所示:

    注意,在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。

    设置为绝对定位的元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

    CSS 绝对定位

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

    普通流中其它元素的布局就像绝对定位的元素不存在一样:

    #box_relative {

      position: absolute;

      left: 30px;

      top: 20px;

    }

    如下图所示:

    绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块

    对于定位的主要问题是要记住每种定位的意义。所以,现在让我们复习一下学过的知识吧:相对定位是相对于元素在文档中的初始位置,而绝对定位是相对于最近的已定位祖先元素,如果不存在已定位的祖先元素,那么相对于最初的包含块。

    注释:根据用户代理的不同,最初的包含块可能是画布或 HTML 元素。

    提示:因为绝对定位的框与文档流无关,所以它们可以覆盖页面上的其它元素。可以通过设置 z-index 属性来控制这些框的堆放次序。

  • 相关阅读:
    windows使用pipenv创建虚拟环境报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 4: in...
    mysql监控工具sqlprofiler,类似sqlserver的profiler工具安装(一)
    [转]linux awk命令详解
    navicat for mysql 如何设置字段唯一
    linux硬链接与软链接
    linux后台运行和关闭、查看后台任务
    测试覆盖率的基本策略
    【Unity Shader】二、顶点函数(vertex)和片元函数(fragment)传递数据,及各阶段可使用的语义(semantic)
    【Unity Shader】一、顶点函数(vertex)和片元函数(fragment)
    Unity Shader学习资料
  • 原文地址:https://www.cnblogs.com/dreeick/p/6143259.html
Copyright © 2011-2022 走看看