Css基础——Css的定位

1、定位模式

1.1、静态定位 static

1.2、相对定位 relative

postion:relative:

1、是相对于自己本来的位置进行的边偏移

2、它不会脱标,仍然会在它文件流时候应有的位置

html:

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/style.css">
</head>

<body>
    <div class="first"></div>
    <div class="second"></div>
</body>

</html>

css:

.first {
    width: 300px;
    height: 300px;
    background-color: red;
    position: relative;
    top: 20px;
    left: 30px;
}

.second {
    width: 200px;
    height: 200px;
    background-color: blue;
    position: static;
}

效果图:

1.3、绝对定位 absolute

position: absolute

1、它的绝对是相较于祖先元素来定的,若其没有祖先元素或者是祖先元素没有定位的时候,就以浏览器为准定位

2、若祖先元素都有定位(相对定位,绝对定位、固定定位)的时候,就会以最近一级有定位(相对定位,绝对定位、固定定位)的祖先元素为准进行定位

3、绝对定位的元素会脱标

html:

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/style.css">
</head>

<body>
    <div class="first">
        <div class="second">
            <div class="third"></div>
        </div>
    </div>

</body>

</html>

css:

.first {
    width: 300px;
    height: 300px;
    background-color: red;
    position: relative;
    top: 20px;
    left: 30px;
}

.second {
    width: 200px;
    height: 200px;
    background-color: greenyellow;
    /* position: relative; */
}

.third {
    width: 100px;
    height: 100px;
    background-color: gold;
    position: absolute;
    top: 30px;
    left: 30px;
}

效果图: 

解释说明:

因为third盒子(黄色)采用的定位方法是绝对定位,所以它会想外层逐渐寻找有定位(相对定位、绝对定位、固定定位)的祖先元素去进行定位,又因为.second盒子没有采用定位,所以third盒子继续向外层寻找有定位的祖先元素(相对定位、绝对定位、固定定位)去完成自身的定位,然后寻找到first盒子,first盒子的定位方式是相对排序,所以可以满足third盒子的满足需要,所以third盒子以first盒子为准,进行了top: 30px;left: 30px的定位

1.4、固定定位 fixed

position: fixed;

1、是以浏览器的可视窗口为参考点移动元素

2、跟父元素没有关系、不随滚动条滚动

3、会脱标

小拓展:利用position: fixed;做一个紧贴网页版心的导航栏

html:

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/style.css">
</head>

<body>
    <div class="main"></div>
    <div class="nav">导航栏</div>
</body>

</html>

css:

.main {
    width: 1400px;
    height: 2200px;
    background-color: skyblue;
    margin: auto;
}

.nav {
    position: fixed;
    width: 100px;
    height: 100px;
    top: 30px;
    left: 50%;
    /* 先走浏览器页面宽的一半 */
    margin-left: 700px;
    /* 再走主版块宽的一半 */
    background-color: pink;
}

 效果图:

1.5、粘性定位 sticky

position: sticky

1、以浏览器的可视窗口为参考的进行移动

2、不脱标

3、必须至少有left、right、top、bottom其中一个属性才生效

html:

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/style.css">
</head>

<body>
    <div class="header">我是页面顶端的导航栏</div>
    <p>1</p>
    <p>2</p>
    <p>3</p>
    <p>4</p>
    <p>5</p>
    <p>6</p>
    <p>7</p>
    <p>8</p>
    <p>9</p>
    <p>10</p>
    <p>11</p>
    <p>12</p>
    <p>13</p>
    <p>14</p>
    <p>15</p>
    <p>16</p>
    <p>17</p>
    <p>18</p>
    <p>19</p>
    <p>20</p>
    <p>21</p>
    <p>22</p>
    <p>23</p>
    <p>24</p>
    <p>25</p>
    <p>26</p>
    <p>27</p>
    <p>28</p>
    <p>29</p>
    <p>30</p>
</body>

</html>

css:

.header {
    width: 1400px;
    height: 50px;
    margin: auto;
    margin-top: 70px;
    position: sticky;
    top: 10px;
    background-color: skyblue;
}

效果图:

2、定位的子绝父相

3、定位的总结

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

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/style.css">
</head>

<body>
    <div class="middle"></div>
</body>

</html>

5、定位的拓展应用

         5.1、绝对定位的盒子居中

通过加了绝对定位的盒子不能通过margin: 0 auto;达到水平居中效果

解决方法:

html

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/style.css">
</head>

<body>
    <div class="middle"></div>
</body>

</html>

css:

.middle {
    width: 100px;
    height: 100px;
    background-color: hotpink;
    position: absolute;
    left: 50%;
    margin-left: -50px;
}

效果图:

反思:

同样也可以用下列代码实现垂直居中

position: absolute;
top: 50%;
margin-top: -50px;

 5.2、定位的特殊性

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

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

5.4、绝对定位、固定定位会完全压住盒子

浮动元素不同,只会压住它下面标准流的盒子,但是不会压住下面标准流盒子里面的文字( 图片);

box浮动的情况下:

box在绝对定位的情况下:

相关推荐

  1. CSS:CSS基础了解

    2024-03-11 13:52:04       41 阅读
  2. css基础定位、元素显示与隐藏

    2024-03-11 13:52:04       31 阅读
  3. CSS定位

    2024-03-11 13:52:04       57 阅读
  4. CSS定位

    2024-03-11 13:52:04       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-11 13:52:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-11 13:52:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-11 13:52:04       87 阅读
  4. Python语言-面向对象

    2024-03-11 13:52:04       96 阅读

热门阅读

  1. Chromedriver安装新版本时需要先卸载旧版本么?

    2024-03-11 13:52:04       47 阅读
  2. 【Python】正则

    2024-03-11 13:52:04       50 阅读
  3. [蓝桥杯 2018 省 B] 递增三元组

    2024-03-11 13:52:04       48 阅读
  4. # 关于virt-cat命令之-c|--connect参数问题

    2024-03-11 13:52:04       50 阅读
  5. openssl3.2 - 官方demo学习 - encode - rsa_encode.c

    2024-03-11 13:52:04       42 阅读
  6. 数据标准化方法

    2024-03-11 13:52:04       44 阅读
  7. linux系统Docker容器Dockerfile示例

    2024-03-11 13:52:04       47 阅读
  8. RabbitMQ实战:docker compose 搭建RabbitMQ

    2024-03-11 13:52:04       42 阅读
  9. Neovim基本介绍

    2024-03-11 13:52:04       46 阅读
  10. 单机Kubenetes集群——KinD安装

    2024-03-11 13:52:04       47 阅读
  11. 电商API接口与数据分析、数据挖掘的结合

    2024-03-11 13:52:04       44 阅读
  12. jvm八股

    jvm八股

    2024-03-11 13:52:04      40 阅读
  13. 微信小程序-自定义简易顶部导航

    2024-03-11 13:52:04       40 阅读