前端基础:CSS的定位position(开发常用)

目录

1. 定位使用效果

2. 定位组成

2.1 定位模式

2.2 边偏移

3. 定位方式

3.1 静态定位 static(了解)

3.2 相对定位 relative(重要)

3.3 绝对定位 absolute(重要)

3.3.1 子绝父相(重要)

3.4 固定定位 fix(重要)

3.4.1 固定定位小技巧

3.5 粘性定位 sticky(了解)

3.6 定位的总结

4. 定位的叠放次序 z-index

5. 绝对定位盒子居中算法(拓展) 

6. 定位的特殊属性

6.1 绝对定位和固定定位也有浮动类似

 62  脱标的盒子不会触发外边距塌陷

6.3 绝对定位(固定定位)会完全压住盒子

7. 案例:学成在线-hot new 模块 



1. 定位使用效果

  1. 盒子固定在屏幕的某个位置、
  2. 盒子自由移动位置
  3. 压住其他的盒子

2. 定位组成

定位:将盒子定在某一个位置,所以定位也是摆放盒子,按照定位的方式移动盒子

定位 = 定位模式+ 边偏移。

2.1 定位模式

定位模式是指定一个元素在文档中的定位方式,它通过 CSS 的position属性来设置,它的值有四种

属性值

说明

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

语法:

       p {

            position: relative;

        }

2.2 边偏移

边偏移就是定的盒子移动到最终的位置,有top、bottom、left、right四个属性

边偏移属性描述

top

顶端偏移量,相对父元素上边线的距离

bottom

底部偏移量,相对父元素下边线的距离

left

左侧偏移量,相对父元素左边线的距离

right

右侧偏移量,相当于父元素右边线的距离

语法:

3. 定位方式

3.1 静态定位 static(了解)

静态定位是元素的默认定位方式,无定位的意思。

语法:

选择器 { position: static; }

  • 静态定位按照标准流特性摆放位置,没有偏移量
  • 静态定位在实际中很少使用

3.2 相对定位 relative(重要)

相对定位是元素在移动位置的时候,相对于它原来的位置的定位(自恋型)

语法:

选择器 { position: relative; }

 相对定位特点:(一定要记住)

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

 因此,相对定位并没有脱标。他最典型的应用是给绝对定位当爹的哈哈哈

3.3 绝对定位 absolute(重要)

绝对定位是元素在移动位置的时候,相对于它的祖先元素的定位(拼爹型)

语法:

选择器 { position: absolute; }

绝对定位特点(一定要记住):

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

     

2. 左图是无定位的效果,右图是加了定位后的效果

        .son {
            position: absolute;
            top: 100px;
            left: 100px;
            width: 300px;
            height: 300px;
            background-color: rgb(138, 226, 241);
        }

        .dad {
            position: relative;
            width: 500px;
            height: 500px;
            background-color: rgb(167, 240, 98);

        }

3.3.1 子绝父相(重要)

意思是:子级是绝对定位,父级就要用相对定位

  1. 子级绝对定位,不会占位置,可以放在父级任意地方,不会影响其他的兄弟盒子
  2. 父级需要加定位限制子盒子在父盒子内显示
  3. 父盒子布局时,需要占有地位,所以父亲只能是相对定位

因此,相对定位经常用来作为绝对定位的父级

总结:因为父级需要占位置,因此用相对定位;子级不需占位置,则用绝对定位

当然,子绝父相不是永远不变的,如果父级元素不需要占有位置,子绝父绝也会遇到,但是子绝父相是最常用的

3.4 固定定位 fix(重要)

固定定位是元素固定于浏览器可视区的位置

主要场景:在浏览器页面滚动时元素位置不会改变(做广告效果)

语法:

选择器 { position: fixed; }

固定定位的特点:(一定要记住)

1. 以浏览器的可视窗口为参照点移动

  • 与父元素没有关系
  • 不随滚动条滚动

2. 固定定位不占原先位置

  •  是脱标的,它也看作是一种特殊的绝对定位

3.4.1 固定定位小技巧

小技巧:固定在版心的右侧

小算法:

  1. 让固定定位的盒子left:50%。走到浏览器的可视区(版心)的一半位置
  2. 让固定定位的盒子margin-left:版心宽度的一半距离。多移动版心宽度的一半距离

注意:html的body结构,一定要fixed在前,版心在后

3.5 粘性定位 sticky(了解)

粘性定位可以认为是相对定位和固定定位的混合(类似贪吃蛇里面的蛇,在某个区域是可以移动,到边缘时是固定的)

语法:

选择器 { position: sticky; top: 10px; }

 粘性定位的特点:

  1. 以浏览器的可视窗口为参考点移动(固定定位的特点)
  2. 粘性定位占有原先的位置(相对定位的特点)
  3. 必须加top、right、bottom、left其中一个才有效
  4. 跟网页滚动搭配使用。兼容性较差,IE不支持

3.6 定位的总结

定位模式是否脱标移动位置使用情况
static静态定位不能移动很少
relative相对定位否(占位置)相对自身位置常用
absolute绝对定位是(不占位置)带定位的父级常用
fixed固定定位是(不占位置)浏览器的可视区常用
sticky粘性定位否(占位置)浏览器的可视区前阶段少

1.一定记住相对定位、固定定位、绝对定位的两大特点:1.是否有位置 2. 移动的位置

2. 重点学习子绝父相

4. 定位的叠放次序 z-index

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

语法:

选择器: { z-indenx: 1; }

  •  数值可以是正数、负数、零,默认是auto;数值越大,盒子越靠上
  • 如果值相同,后来的盒子居上
  • 数值后面不加单位
  • 只有定位的盒子才有这个z-indenx属性

5. 绝对定位盒子居中算法(拓展) 

 加了绝对定位的算法不能通过margin:0 auto水平居中,用以下的算法实现水平和垂直居中:

水平居中:

 1. 让绝对定位的盒子positive:absolute;left:50%

垂直居中:

 2.margin-left: -weight/2(宽度一半的负数)

6. 定位的特殊属性

6.1 绝对定位和固定定位也有浮动类似

行内元素加了绝对或者固定定位,可以直接设置高度宽度

块级元素加了绝对或者固定定位,如果不给高度宽度,默认大小是内容的大小(变为行内元素)

 62  脱标的盒子不会触发外边距塌陷

浮动元素、绝对定位(固定定位)元素都不会触发外边距合并问题

6.3 绝对定位(固定定位)会完全压住盒子

  1. 浮动元素不同,只会压住它下面标准流的盒子,但是不会压住标准流盒子里面的文字(图片)
  2. 绝对定位(固定定位)会压住下面标准流所有的内容
  3. 浮动不会压文字,是因为产生浮动的原因的最初目的是为了做文字环绕效果。文字围绕元素

7. 案例:学成在线-hot new 模块 

效果图:

 

 HTML+CSS代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>学成在线-hot new</title>
    <style>
        .box {
            position: absolute;
            width: 230px;
            height: 280px;
            background: url(images/good.png) no-repeat;
        }

        .hot {
            position: relative;
            left: 195px;
            top: 5px;
        }
    </style>
</head>

<body>
    <div class="box">
        <!-- <img src="images/good.png"> -->
        <div class="hot">
            <img src="images/hot.png">
        </div>
    </div>

</body>

</html>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值