周振林 周振林
首页
  • 前端文章

    • HTML
    • CSS
    • Tailwind CSS (opens new window)
    • JavaScript
    • Vue3
    • 其他
  • 学习笔记

    • 《JavaScript教程》
    • 《ES6 教程》
    • 《TypeScript》
    • 《Vue》
    • 《Git》
    • 《小程序笔记》
    • 《JS设计模式总结笔记》
  • 规范
  • Spring
  • 安装教程
  • 其他教程
  • 归真医学
  • 常用药材
  • 学习笔记
  • 经方学习心得
  • 基础
  • 虚拟化
  • Docker
  • OpenStack
  • 心情杂货
关于
收藏
  • 分类
  • 标签
  • 归档

周振林

IT界的小学生
首页
  • 前端文章

    • HTML
    • CSS
    • Tailwind CSS (opens new window)
    • JavaScript
    • Vue3
    • 其他
  • 学习笔记

    • 《JavaScript教程》
    • 《ES6 教程》
    • 《TypeScript》
    • 《Vue》
    • 《Git》
    • 《小程序笔记》
    • 《JS设计模式总结笔记》
  • 规范
  • Spring
  • 安装教程
  • 其他教程
  • 归真医学
  • 常用药材
  • 学习笔记
  • 经方学习心得
  • 基础
  • 虚拟化
  • Docker
  • OpenStack
  • 心情杂货
关于
收藏
  • 分类
  • 标签
  • 归档
  • HTML

  • CSS

    • CSS基础
    • CSS选择器
    • CSS三大特性
    • CSS常用属性
    • CSS盒子模型
    • CSS浮动
    • CSS定位
      • CSS定位
        • 静态定位(默认方式)
        • 相对定位
        • 绝对定位
        • 固定定位
        • 粘性定位
    • CSS布局
    • Flex布局语法
    • Flex布局实践
    • CSS Grid网格布局教程
    • CSS响应式布局
    • CSS3之transition过渡
    • CSS3之animation动画
    • CSS教程和技巧收藏
  • JavaScript

  • Vue3

  • 学习笔记

  • 其他

  • 前端
  • CSS
周振林
2023-12-26
目录

CSS定位

# CSS定位

CSS中定位通过position属性进行设置,position 属性有五个不同的位置值:

  • static(静态定位 默认值)
  • relative(相对定位)
  • absolute(绝对定位)
  • fixed(固定定位)
  • sticky(粘性定位)

元素使用 top、bottom、left 和 right 进行偏移量的调整。但是,除非首先设置了 position 属性,否则这些属性将不起作用。根据不同的 position 值,它们的工作方式也不同。

# 静态定位(默认方式)

HTML 元素默认情况下的定位方式为 static(静态)。静态定位的元素不受 top、bottom、left 和 right 属性的影响。position: static; 的元素不会以任何特殊方式定位;它始终根据页面的正常流进行定位。

# 相对定位

  • 使用 position: relative;进行设置

  • 相对定位的元素是相对于其自身正常位置进行定位。

  • 使用 top、right、bottom 和 left 调整其偏移量,不会脱离文档流,元素位置的变化只是视觉效果上的变化,不会对其他元素产生任何影响。

<!DOCTYPE html>
<html>
<head>
<style>
div.relative {
  position: relative;
  left: 30px;
  border: 3px solid #73AD21;
}
</style>
</head>
<body>
    <h1>position: relative;</h1>

    <p>设置 position: relative; 的元素相对于其正常位置进行定位:</p>

    <div class="relative">
    这个 div 元素设置 position: relative;
    </div>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 绝对定位

  • 使用 position: absolute;进行设置

  • 绝对定位是相对于最近的带有定位的祖先元素进行定位。如果绝对定位的元素没有带有定位的祖先元素,它将相对于文档主体(body)进行定位,并随页面滚动一起移动。

  • 使用 top、right、bottom 和 left 调整其偏移量,脱离文档流,会对后面的兄弟元素、父元素有影响。

案例一:相对于带有定位的祖先元素进行定位

<!DOCTYPE html>
<html>
<head>
<style>
div.relative {
  position: relative;
  width: 400px;
  height: 200px;
  border: 3px solid red;
} 

div.absolute {
  position: absolute;
  top: 80px;
  right: 0;
  width: 200px;
  height: 100px;
  border: 3px solid #73AD21;
}
</style>
</head>
<body>
    <h1>position: absolute;</h1>
    <p>设置 position: absolute的元素会相对于最近的带有定位的祖先进行定位,如果绝对定位的元素没有带有定位的祖先元素,它将相对于文档主体(body)进行定位</p>

    <div class="relative">
        这个 div 元素设置 position: relative;
        <div class="absolute">这个 div 元素设置 position: absolute;</div>
    </div>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

案例二:没有带定位的祖先元素时,相对于文档主体(body)进行定位

<!DOCTYPE html>
<html>
<head>
<style>
div.wrap {
  width: 400px;
  height: 200px;
  border: 3px solid red;
} 

div.absolute {
  position: absolute;
  top: 80px;
  right: 0;
  width: 200px;
  height: 100px;
  border: 3px solid red;
}
</style>
</head>
<body>
    <h1>position: absolute;</h1>
    <p>设置 position: absolute的元素会相对于最近的带有定位的祖先进行定位,如果绝对定位的元素没有带有定位的祖先元素,它将相对于文档主体(body)进行定位</p>

    <div class="wrap">
        这个 div 元素没有设置定位属性,则内部绝对定位元素相对于文档主体body进行定位
        <div class="absolute">这个 div 元素设置 position: absolute;</div>
    </div>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 固定定位

  • 使用 position: fixed;进行设置

  • 固定定位是相对于视口进行定位,不随页面滚动一起移动。

  • 使用 top、right、bottom 和 left 调整其偏移量,脱离文档流,会对后面的兄弟元素、父元素有影响。

案例

<!DOCTYPE html>
<html>
<head>
    <style>
        .wrap{
            height:2000px;
        }

        div.fixed {
            position: fixed;
            bottom: 100px;
            right: 30px;
            border: 3px solid #73AD21;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <h1>position: fixed;</h1>
        <p>设置 position: fixed; 的元素会<b>相对视口定位</b>,这意味着即使页面滚动也会停留在某个位置:</p>

        <div class="fixed">回到顶部</div>
    </div>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

# 粘性定位

  • 使用 position: sticky;进行设置

  • 固定定位是相对于离他最近的带有滚动机制的祖先元素进行定位,先随页面滚动到设置好的位置之后,固定在其设定好的位置。

  • 使用 top、right、bottom 和 left 调整其偏移量,不会脱离文档流。

案例

<!DOCTYPE html>
<html>
<head>
<style>
  .wrap{
    margin-top:100px;
    height:200px;
    border:1px solid red;
    overflow:auto;
  }
div.sticky {
  position: -webkit-sticky;
  position: sticky;
  top: 20px;
  padding: 5px;
  background-color: #cae8ca;
  border: 2px solid #4CAF50;
}
</style>
</head>
<body>

<div class="wrap">

  <div style="height:100px"></div>
  <div class="sticky">我是有粘性的!</div>

  <div style="padding-bottom:2000px">
    <p>在此例中,当您到达元素的滚动位置时,粘性元素将停留在页面顶部(top: 0)。</p>
    <p>向上滚动以消除粘性。</p>
    <p>一些启用滚动的文本.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
    

    <p>一些启用滚动的文本.. Lorem ipsum dolor sit amet, illum definitiones no quo, maluisset concludaturque et eum, altera fabulas ut quo. Atqui causae gloriatur ius te, id agam omnis evertitur eum. Affert laboramus repudiandae nec et. Inciderint efficiantur his ad. Eum no molestiae voluptatibus.</p>
  </div>
</div>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Last Updated: 2024/10/28, 16:28:52
CSS浮动
CSS布局

← CSS浮动 CSS布局→

最近更新
01
Docker安装
06-10
02
Docker运行JAR
06-10
03
Docker部署MySQL
06-10
更多文章>
Copyright © 2019-2025 鲁ICP备19032096号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式