CSS之盒子定位

文章目录定位导读1.1 为什么需要定位1.2 定位组成1.3 静态定位1.4 相对定位(==重要==)1.5 绝对定位(==重要==)1.6 子绝父相的由来1.7 固定定位fixed(==重要==)1.8 定位叠放次序 z-index1.8 定位的拓展1.9 定位案例元素的显示与隐藏2.1 display 属性2.2 visibility 属性2.3 overflow 溢出属性2.4 仿土豆网显示隐藏遮罩案例定位导读1.1 为什么需要定位定位可以让盒子自由地在某个盒子内移动位置或固定屏幕中的某个位置
摘要由CSDN通过智能技术生成

定位导读

1.1 为什么需要定位

定位可以让盒子自由地在某个盒子内移动位置或固定屏幕中的某个位置,并且可以压住其他盒子。

1.2 定位组成

定位 = 定位模式 + 边偏移

定位模式用于指定一个元素在文档中的定位方式,通过CSS的positon属性设置,其值可以分为四个:

语义
static 静态定位
relative 相对定位
absolute 绝对定位
fixed 固定定位

边偏移则决定了该元素的最终位置。

边偏移属性 示例 描述
top top:80px 顶端偏移量,定义元素相对其父元素上边线的距离
bottom bottom:80px 底部偏移量,定义元素相对其父元素下边线的距离
left left:80px 左侧偏移量,定义元素相对其父元素左边线的距离
right right:80px 右侧偏移量,定义元素相对其父元素右边线的距离

1.3 静态定位

static (静态定位)

在CSS的position中,设置static为默认值,它表示块保持在原本应该在的位置上,即该值没有任何的移动效果,这里就不详细说了。

1.4 相对定位(重要

相对定位是元素在移动位置的时候,是相对于它原来的位置来说的

语法:
选择器 { position:relative ;}

相对定位的特点

  1. 它是相对于自己的位置来移动的(移动位置的时候参照点是自己原来的位置
  2. 原来在标准流的位置继续占有,后面的盒子仍然以标准流的方式对待它(不脱标,继续保留原来位置

1.5 绝对定位(重要

绝对定位是元素在移动位置的时候,是相对于它祖先元素来说的

语法:
选择器 { position:absolute ; }

绝对定位的特点

  1. 如果没有祖先元素或者祖先元素没有定位,则以浏览器为准定位
  2. 如果祖先元素有定位(相对、绝对、固定定位),则以最近一级的有定位的祖先元素为参考点移动位置
  3. 绝对定位不在占有原先的位置(脱标)

1.6 子绝父相的由来

子级是绝对定位的话,父级要用相对定位
因为父级需要占有位置,因此是相对定位,子盒子不需要占有位置,则是绝对定位。
当然,子绝父相不是永远不变的,如果父元素不需要占有位置,字绝父绝也会遇到,子相父相同理。

1.7 固定定位fixed(重要

语法
选择器 { position :fixed ; }

特点:

  • 以浏览器的可视窗口为参照点移动元素
    跟父元素没有任何关系
    不随滚动条滚动
  • 固定定位不占有原先的位置
    脱标:可看作特殊的绝对定位

1.8 定位叠放次序 z-index

在使用定位布局时,可能会出现盒子重叠的情况。可以用z-index来控制盒子的前后次序(z轴)

语法:
选择器 { z-index :1 ;}

  • 数值可正可负或0,默认auto,数值越大,盒子越靠上
  • 如果属性值相同,则按照书写顺序,后来居上
  • 数字后面不能加单位
  • 只有定位的盒子才有z-index属性

1.8 定位的拓展

  1. 绝对定位的盒子居中
    不能用margin:0 auto;实现水平居中,方法如下:
    ①left:50%;让盒子由左侧移动到父级元素的水平中心位
    ②margin-left:-100px(宽度一半); 让盒子向左移动到自身宽度的一半
    垂直居中方法一样:①top:50%;②margin-top:-100px(高度的一半);
  2. 定位特殊特性

行内元素添加绝对/固定定位,可直接设置高、宽度
块级元素添加绝对/固定定位,如果不给宽、高,默认大小为内容大小

  1. 脱标的盒子不会触发外边距塌陷
  2. 绝对定位(固定定位)会完全压住盒子
    浮动只会压住标准流的盒子,不会压住下面标准流盒子里面的文字(图片),但绝对/固定会压住下面标准流里的所有内容。
    浮动之所以不会压住文字,因为浮动产生的目的最初是为了做文字环绕效果的,文字会围绕浮动元素。

1.9 定位案例

案例1:绝对定位之父级无定位

<style>
        * {
     
            margin: 0;
            padding: 0;
        }

        .father {
     
            width: 500px;
            height: 500px;
            background-color: skyblue;
        }

        .son {
     
            position: absolute;
            /* top: 20px;
            left: 20px; */
            top: 20px;
            right: 100px;
            width: 200px;
            height: 200px;
            background-color: pink;
        }
    </style>
</head>

<body>
    <div class="father">
        <
  • 3
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值