CSS定位

作者: xiaolizhenzhen | 来源:发表于2017-03-28 09:41 被阅读0次

    定位

    定位概况

    CSS 有三种基本的定位机制:普通流、浮动和绝对定位。
    除非专门指定,否则所有框都在普通流中定位。

    定位属性

    • position 规定元素的定位类型

    position 属性4 种不同类型的定位
    1) static
    元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。
    2)relative
    相对其之前的位置进行定位(偏移);元素保持原有的形状,它原本所占的空间仍保留。
    3)absolute
    元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
    4)fixed
    元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。
    提示:相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置进行定位。

    • top/bottom/left/right
      用于定义元素框的偏移位置
    • z-index
      设置元素的堆叠顺序

    四种定位类型

    • 1)普通流定位position:static
      普通流中元素的位置由元素在 HTML 中的位置决定。
      块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。
      行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响行内框的高度。

    • 2)相对定位position:relative
      设置为相对定位的元素框会偏移某个距离。(相对之前位置的偏移)
      元素仍然保持其未定位前的形状,它原本所占的空间仍保留
      注意,在使用相对定位时,无论是否进行移动,元素仍然占据原来的空间。因此,移动元素会导致它覆盖其它框。

    • 3)绝对定位position:absolute
      设置为绝对定位的元素框从文档流完全删除,因此不占据空间。
      绝对定位的元素的位置相对于最近的已定位祖先元素,如果元素没有已定位的祖先元素,那么它的位置相对于最初的包含块。
      相对定位是“相对于”元素在文档中的初始位置定位,而绝对定位是“相对于”最近的已定位祖先元素,如果不存在已定位的祖先元素,那么“相对于”最初的包含块进行定位。

    • 4)固定定位position:fixed
      生成绝对定位的元素,相对于浏览器窗口进行定位。
      将元素的内容固定在页面中的某个位置,元素从普通文档流中完全移除,不占用页面空间,当用户向下滑动页面元素框时并不随着移动。

    • 堆叠顺序

    一旦修改了元素的定位方式,则元素可能会发生堆叠,可以使用z-index属性(层级)来控制元素框出现重叠的顺序
    值越大表示堆叠越高,离用户越近
    可以设置负值,表示离用户更远

    浮动

    • 1)元素浮动的目的
      最初时,浮动只能用于图像(某些浏览器还支持表的浮动),目的就是为了允许其他内容(如文本)“围绕”该图像。而后来的CSS允许浮动任何元素。
    • 2)浮动的影响
      当一个元素浮动时,在没有清除浮动的情况下,它无法撑开其父元素,但它可以让自己的浮动子元素撑开它自身,并且在没有定义具体宽度情况下,使自身的宽度从100%变为自适应(浮动元素display:block)。其高度和宽度均为浮动元素高度和非浮动元素高度之间的最大值。
      浮动元素的影响
    • 3)浮动元素的特点
      浮动定位是将元素排除在普通文档流之外,元素将不占用空间;
      浮动的框可以向左或向右移动,直到它的外边碰到包含框或者另一个浮动框为止;
      浮动元素的外边缘不会超出其父元素的内边缘,浮动的元素不会互相重叠,浮动元素也不会上下浮动。
    • 4)清除浮动
      8种CSS清除浮动的方法优缺点分析
    • 5)绝对定位与浮动的区别
      对文字和其他行内元素的处理方式不同
      绝对定位与浮动的区别

    相关文章

      网友评论

          本文标题:CSS定位

          本文链接:https://www.haomeiwen.com/subject/axzdottx.html