不二如是 发表于 2020-9-23 14:27:05

053 - 你的定位决定你的地位

本帖最后由 不二如是 于 2020-9-29 08:56 编辑

上一集:052 -总为浮云能蔽日(下)



哈哈,废话不多说了,#敲黑板时刻!{:10_281:}



在线视频:传送门



课程思维导图


猛戳http://xxx.fishc.com/forum/201803/31/110408mxpszds1j1xxxahm.gif超清



position 属性决定了网页上元素的位置摆放情况。

有 5 个值,课上小甲鱼老师带我们都过了一遍。


position:static

static 是 position 属性的默认值。

如果省略 position 属性,浏览器就认为该元素是 static 定位。

这时,浏览器会按照源码的顺序,决定每个元素的位置,这称为"正常的页面流"。

每个块级元素占据自己的区块,元素与元素之间不产生重叠,这个位置就是元素的默认位置。

小甲鱼老师强调的:

static 定位所导致的元素位置,是浏览器自主决定的,所以这时 top、bottom、left、right 这四个属性无效。
一定要记住哦!


position:relative

relative 表示,相对于默认位置(即 static 时的位置)进行偏移,即定位基点是元素的默认位置。

它必须搭配 top、bottom、left、right 这四个属性一起使用,用来指定偏移的方向和距离。

演示代码:

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

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>position</title>
<style>
    #son {
      width: 100px;
      height: 100px;
      background-color: red;
      position: relative;
      top: 50px;
    }
</style>
</head>

<body>
<div id="father">
    <div id="son"></div>
</div>
</body>

</html>
效果:



id 为 son 的 div 元素设置 top:50px 后,便从默认位置向下偏移 50 px。

就是上图蓝色虚线画出的距离。


position:absolute

absolute 表示,相对于上级元素(一般是父元素)进行偏移,即:

**** Hidden Message *****

它有一个重要的限制条件:

定位基点(一般是父元素)不能是 static 定位,否则定位基点就会变成整个网页的根元素 html
另外,absolute 定位也必须搭配 top、bottom、left、right 这四个属性一起使用。

还是用上面的代码,但稍微修改下:

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

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>position</title>
<style>
    #father {
      width: 300px;
      height: 300px;
      background-color: green;
      position: relative;
      top: 50px;
    }


    #son {
      width: 100px;
      height: 100px;
      background-color: red;
      position: absolute;
      top: 50px;
    }
</style>
</head>

<body>
<div id="father">
    <div id="son"></div>
</div>
</body>

</html>
效果:



父元素是 relative 定位,子元素是 absolute 定位。

父元素本身相对根元素有 50px 的向下偏移。

子元素的定位基点是父元素,相对于父元素的顶部向下偏移 50px 。

如果父元素是 static 定位,上例的子元素就是距离网页的顶部向下偏移 50px 。

注意,absolute 定位的元素会被"正常页面流"忽略。

即在"正常页面流"中,该元素所占空间为零,周边元素不受影响。


position:fixed

fixed 表示,相对于视口(viewport,浏览器窗口)进行偏移,即定位基点是浏览器窗口。

这会导致元素的位置不随页面滚动而变化,好像固定在网页上一样。

代码:

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

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>position</title>
<style>
    div {
      width: 100px;
      height: 100px;
      background-color: blue;
      position: fixed;
      top: 100px;
      left: 100px;
    }
</style>
</head>

<body>
<div></div>
</body>

</html>
效果:



div元素始终在视口顶部,不随网页滚动而变化。

如果搭配 top、bottom、left、right这四个属性一起使用,表示元素的初始位置是基于视口计算的。

否则初始位置就是元素的默认位置。


position:sticky



sticky 跟前面四个属性值都不一样,它会产生动态效果。

很像 relative 和 fixed 的结合:

一些时候是 relative 定位(定位基点是自身默认位置),另一些时候自动变成 fixed 定位(定位基点是视口)。
因此,它能够形成"动态固定"的效果。

比如,小甲鱼老师举个通讯录例子、网页的搜索工具栏,初始加载时在自己的默认位置(relative 定位)。

页面向下滚动时,工具栏变成固定位置,始终停留在页面头部(fixed 定位)。

等到页面重新向上滚动回到原位,工具栏也会回到默认位置。

sticky 生效的前提是:

必须搭配top、bottom、left、right这四个属性一起使用,不能省略。
否则等同于 relative 定位,不产生"动态固定"的效果。

原因是这四个属性用来定义"偏移距离",浏览器把它当作 sticky 的生效门槛。

它的具体规则是,当页面滚动,父元素开始脱离视口时(即部分不可见),只要与 sticky 元素的距离达到生效门槛,relative 定位自动切换为 fixed 定位。

等到父元素完全脱离视口时(即完全不可见),fixed 定位自动切换回 relative 定位。

演示代码(赚点鱼币{:10_256:} ):

演示:





课后作业,完成了吗?

传送门



http://xxx.fishc.com/forum/201803/20/101934b3igkgm9hgbgz0ck.gif

下一集:054 - 不畏浮云遮望眼



如果有收获,别忘了评分{:10_281:} :

http://xxx.fishc.com/forum/201709/19/094516hku92k2g4kefz8ms.gif

这位鱼油,如果喜欢本系列学习笔记,请订阅 淘专辑(传送门)(不喜欢更要订阅{:10_297:} )

lzone 发表于 2020-9-29 15:56:14

学习到这里,MARK!{:10_282:}

pym131420 发表于 2020-11-10 21:50:35

123

natapon 发表于 2021-1-25 23:17:27

回复快快快

风尘流大师 发表于 2021-6-12 01:43:14

{:10_266:}

wp231957 发表于 2021-6-12 06:42:44

请问一下,a标签的父级是 div
然后该div设置了一个背景图片
那么问题来了,这个a标签无法接收鼠标点击动作

O2H2O 发表于 2021-7-12 18:03:41

为什么要搞那么多偏移

心驰神往 发表于 2021-8-4 09:54:17

1

刘彩玲 发表于 2021-8-18 09:45:48

想看

hanyuncanying 发表于 2021-8-25 21:46:29

{:10_254:}

hornwong 发表于 2021-8-26 09:10:59

{:5_95:}

xing222 发表于 2021-8-27 11:29:23

66666666666666

douTREE 发表于 2021-9-13 09:57:08

相对定位,父元素动,子元素也动

laure 发表于 2022-1-22 18:17:17

1

xuexiaoyan 发表于 2022-8-8 20:03:38

1

c2514710281 发表于 2022-11-3 15:10:30

爱鱼C

叶影樱不悲叹 发表于 2022-11-17 09:20:41

{:10_257:}

小坛砸 发表于 2024-4-18 09:32:28

{:10_312:}

QBR 发表于 2024-11-25 17:54:49

学习了{:10_333:}
页: [1]
查看完整版本: 053 - 你的定位决定你的地位