页面布局方式与三种定位属性

网页常见布局方式

  • 标准流
    • 块级元素独占一行→垂直布局
    • 行内元素/行内块元素一行显示多个→水平布局
  • 浮动
    • 可以让原本垂直布局的块级元素变成水平布局
  • 定位
    • 可以让元素自由的摆放在网页的任意位置
    • 一般用于盒子之间的层叠情况

定位

使用定位的步骤

  1. 设置定位方式

    • 属性名

    • 常见属性值:

      定位方式属性值
      静态定位static
      相对定位relative
      绝对定位absolute
      固定定位fixed
  2. 设置偏移值

    • 偏移值设置分为两个方向,水平和垂直方向各选一个使用即可

    • 选取的原则一般是就近原则(离哪边近用哪个)

      方法属性名属性值含义
      水平left数字+px距离左边的距离
      水平right数字+px距离右边的距离
      垂直top数字+px距离上边的距离
      垂直bottom数字+px距离下边的距离

相对定位

介绍:自恋型定位,相对于自己之前的位置进行移动

代码:position : relative;

​ left:200px

​ top:100px

特点:

  1. 需要配合方位属性实现移动
  2. 相对于自己原来位置进行移动
  3. 在页面中占位置→没有脱标

应用场景:

  1. 配合绝对定位组CP(子绝对父相对)
  2. 用于小范围的移动

注意:如果是个属性都写了,以left和top为准

绝对定位

介绍:拼爹型定位,相对于非静态定位的父元素进行定位移动

先找已经定位的父级(逐级查找),如果有这样的父级就以这个父级为参照物进行定位,或有父级,但父级没有定位,以浏览器窗口为参照为进行定位(如果取left:0;则会直接紧贴浏览器左侧覆盖之前默认的边距)

代码:position : absolute;

特点:

  1. 需要配合方位属性实现移动
  2. 默认相对于浏览器可视区域进行移动
  3. 在页面中不占位置→已经脱标
  4. 改变标签的显示模式特点:具备了行内块的特点

绝对定位的盒子显示模式具备行内块特点:加宽度高度生效,如果没有宽度也没有内容,盒子的宽度尺寸就是0

应用场景:

  • 配合绝对定位组CP(子绝父相)

定位居中

绝对定位为什么会让margin:0 auto失效?

绝对定位后,块脱离标准流,它就失去了边界盒,浏览器不能为它自动计算边界,但是可以通过手动添加margin属性值来进行居中。

  • 手动添加
        .box{
            /* margin: 0 auto; */
            /* 绝对定位让margin: 0 auto; 失效 */
            position: absolute;
            /* 整个盒子移动到浏览器中间偏右的位置 */
            left:50%;
            /* 整个盒子移动到浏览器中间偏下的位置 */
            top: 50%;

            margin-left: -150px;
            margin-top: -100px;
            width: 300px;
            height: 200px;
            background-color: pink;
        }
  • 位移居中

用于替换上一代码的margin-left,margin-top属性,就可以自动的实现最后调整,不用手动计算块的宽高

            /* 位移自己宽度高度的一半 */
            transform: translate(-50%,-50%);
  1. 正常布局中,margin:0 auto就相当于top和bottom设置为0,left和right设置为auto
  2. position: absolute会使这个块脱离正常的文档流
  3. 设置top: 0; left: 0; bottom: 0; right: 0;会给这个块提供一个新的边界盒(bounding box)。这种情况下,这个块会填满它的偏移父元素的全部可用空间(偏移父元素:offset parent,指position: relative的父元素或者是body)
  4. 给这个块指定width或者height会阻止它占据全部可用空间,转而由浏览器根据这个新的边界盒自动计算margin
  5. 由于这个块脱离了正常的文档流,同时有一个新的边界盒,因此浏览器可以很容易地为它提供相等的margin-topmargin-bottom值,从而使它垂直居中。
  • 提供新边界盒
        .box{
            margin: auto;
            position: absolute;
            top: 0;
            bottom: 0;
            left: 0;
            right: 0;
            width: 300px;
            height: 200px;
            background-color: pink;
        }

固定定位

介绍:死心眼型定位,相对于浏览器进行定位移动

代码:position : fixed;

特点:

  1. 需要配合方位属性实现移动
  2. 相对于浏览器可视区域进行移动(改变位置参考浏览器)
  3. 在页面中不占位置→已经脱标
  4. 具备行内块特点

应用场景:

  1. 让盒子固定在屏幕中的某个位置

元素的层级关系

不同布局方式元素的层级关系:

  • 标准流<浮动<定位

不同定位之间的层级关系:

  • 相对、绝对、固定默认层级相同
  • 此时HTML中写在下面的元素层级更高,会覆盖上面的元素

默认情况下,定位的盒子后来者居上

z-index:整数;取值越大,显示顺序越靠上,z-index的默认值是0(此属性一定要配合定位使用,无定位不生效)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值