zoukankan      html  css  js  c++  java
  • CSS(五)-- 布局(定位)

    1.定位position

    • 定位是一种更加高级的布局手段
    • 单纯的用margin实现元素的移动,会显得很麻烦且笨拙,因此使用position属性改变元素的定位方式,从而更好的布局
    • 通过定位可以将元素摆放到页面的任意位置
    • 可选值
      • static 默认值,元素是静止的没有开启定位
      • relative:开启元素的相对定位
      • absolute:开启元素的绝对定位
      • fixed:开启元素的固定定位
      • sticky:开启元素的黏性定位

    1.1相对定位

    postion:relative;

    相对定位特点

    • 开启相对定位后,如果不设置偏移量,元素不会发生任何变化
    • 相对定位是参照于元素在文档流中的位置进行定位的
    • 相对定位会提升元素的层级
    • 不会脱离文档流
    • 不会改变元素的性质,块还是块,行内还是行内
    • 相当于灵魂出窍

    偏移量

    当元素开启了相对定位以后,可以通过偏移量来设置元素的位置

    • top :定位元素和定位位置上边的距离
    • bottom:定位元素和定位位置下边的距离
      • 定位元素垂直方向的位置由top和bottom两个属性来控制
      • 通常情况下我们会使用其中之一
    • left:同理
    • right:同理
    • 相对定位一般是结合绝对定位一起使用

    1.2绝对定位(用的最多)

    postion:absolute;

    绝对定位特点

    • 开启绝对定位后,如果不设置偏移量,元素的位置不发生变化
    • 开启绝对定位后,元素会从文档流中脱离
    • 绝对定位会改变元素的性质,行内-->块,块的宽高被内容撑开(内容有多大就有多大)
    • 绝对定位回事元素提升一个层级
    • 绝对元素是相对于包含块进行定位的

    包含块

    • 正常情况下,包含块就是离当前元素最低的祖先块元素
    • 绝对定位的包含块:
      • 包含块就是离他最近的开启了定位的祖先元素
      • 如果所有的祖先元素都没有开启定位,则相对于根元素进行定位html,所以html除了根元素还叫初始包含块

    1.3固定定位

    position:fixed

    • 固定定位是特殊的绝对定位
    • 唯一不同的是固定定位永远参照于浏览器的视口(和html根元素类似,但不是)进行定位
    • 作用:用来做工具栏、目录栏等不会跟随浏览器滚动条滚动的效果

    浏览器的视口

    浏览器的可视窗口,只针对浏览器视口

    • 和根元素的区别
      • 根元素html是针对网页的,当网页向下拖动会消失
      • 可视窗口:针对浏览器窗口,向下移动滚动条不会变

    1.4 粘滞定位

    position:sticky

    • 当元素固定到某一个位置的时候就不动了
    • 粘稠定位和相对定位的特点基本一致,不同的是粘滞定位可以在元素到达某个位置时将其固定
    • 相对于包含块,一般是相对于body

    1.5绝对定位元素的位置

    • 水平布局的宽度计算
      • 之前
        margin-left+border-left+padding-left+width+padding-right+border-right+margin-right = 包含块的内容区宽度
      • 开启绝对定位后,水平方向的布局等式就要添加left和right两个值,此时规则和之前一样只是多加了两个值
        left+margin-left+border-left+padding-left+width+padding-right+border-right+margin-right+right = 包含块的内容区宽度
        • 当发生过渡约束后,如果9个值没有auto,则自动调整right值以使等式满足
        • 如果有auto,则自动调整auto的值以使等式满足
        • 可以设置auto的值:margin、width、left、right
          -因为left和right的默认值是auto,所以如果不知道left和right,则等式不满足是,会自动调整这两个值
    • 垂直布局的宽度计算
      top+margin-top/bottom+padding-top/bottom+border-top/bottom+height = 包含块的内容高度

    -实现垂直居中
    设置父元素position为relative,那么会相对于父元素居中,而如果父元素不加,则会相对于body居中

    <style>
    .box1{
          500px;
          500px;
          position:relative;
          background-color:pink:
    }
    .box2{
           100px;
          height: 100px;
          background-color:orange;
          position:absolute;
          margin:auto;
          left:0;
          right:0;
          top:0;
          boottm:0;
    }
    </style>
    
  • 相关阅读:
    C++ 练习02 魔术师发牌问题
    C++ 入门2 类型转换
    C++ 入门1 C++简介
    一个简单计算器的实现
    C++练习01 打印杨辉三角
    数据结构01数据结构基础01
    Lesson_7 作业_1 Driver 和 Car
    Caterl Java寒假基础练习题(一) 循环相加
    Lesson_9 上课笔记 多态
    Lesson_10 作业计算工资
  • 原文地址:https://www.cnblogs.com/psyduck/p/14304936.html
Copyright © 2011-2022 走看看