css的定位详解

目录

一、什么是定位?

二、定位的类型 

1、相对定位

2、绝对定位

3、固定定位

4、粘滞定位

三、如何设置层级 

1、设置层级

2:设置元素的透明背景

四、如何使一个元素垂直水平居中

 水平布局

五、案例

淘宝美食汇

css代码

html代码

效果展示


一、什么是定位?

CSS 定位 (Positioning) 属性允许你对元素进行定位。 CSS 定位和浮动 CSS 为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务。 定位的基本思想很简单,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。

 position样式设置定位

        可选值:

          static  默认值,不开启定位

          relative  开启相对定位

          absolute  开启绝对定位

          fixed     开启固定定位

          sticky    开启粘滞定位  

 

二、定位的类型 

1、相对定位

开启相对定位的特点:

 position: relative;  开启相对定位

          1、元素位置不发生变化,不会脱离文档流

          2、开启定位后,元素需要配合偏移量去改变元素的位置

          3、相对定位原点是其原来在文档流中的位置

          4、开启相对定位后,元素的层级变高了

2、绝对定位

开启绝对定位的特点

 开启绝对定位

      position: absolute;

      1、元素会脱离文档流,也就是不会区分块元素,行内元素,行内块元素

      2、元素的位置没有发生改变,需要配合偏移量使用

      3、绝对定位的原点是参照其包含块来定位的,

          一般情况,会给其父元素设置相对定位,叫“父相子绝”,但根据项目需要

      4、开启绝对定位,元素的层级也会提高

包含块是什么?

 1、没有定位的时候,包含块就是其父元素

  2、有定位的时候,包含块就是离它最近的,开启定位的祖先元素,

      如果其祖先元素,都没有开启定位,那包含块就是根元素(html)

 

3、固定定位

开启固定定位的特点

  开启固定

      position: fixed;

      1、开启固定定位,会使元素脱离文档流,就不会区分块元素,行内元素,行内块元素

      2、开启固定定位,元素不会随着滚动条的滚动而滚动

      3、也是配合偏移量移动元素,元素的原点是浏览器的视口(html根标签)

      4、元素的层级也会提高

      5、常用的场景

          顶部导航,侧边导航,广告···

4、粘滞定位

开启粘滞定位的特点

   开启粘滞定位

    position: sticky;

    1、元素不会脱离文档流

    2、元素的位置没有发生改变,也是配合偏移量使用

      一般情况是配合top使用,

      元素在没有到top值的时候,元素是随着滚动条的滚动而滚动,

      当到达设置的top值后,元素就固定了,不会随着滚动条滚动而滚动

    3、粘滞原点也是参考浏览视口

    4、层级也会提高

三、如何设置层级 

1、设置层级

设置层级  z-index: ;

        默认是0,数值越大,层级越高

注意:

          1、必须要开启定位

          2、父元素的层级不会高于子元素,也就是说父元素不会覆盖子元素

1:如果定位元素的层级是一样,则下边的元素会盖住上边的

通过z-index属性可以用来设置元素的层级

可以为z-index指定一个正整数作为值,该值将会作为当前元素的层级

  层级越高,越优先显示

注意:

  对于没有开启定位的元素不能使用z-index

  父元素的层级再高,也不会盖住子元素

2:设置元素的透明背景

  opacity [əu'pæsiti] 可以用来设置元素背景的透明,

      它需要一个0-1之间的值

        0 表示完全透明

        1 表示完全不透明

        0.5 表示半透明

四、如何使一个元素垂直水平居中

<!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>Document</title>
    <style>
      .box1 {
        width: 400px;
        height: 400px;
        background-color: palegreen;
        /* 开启相对定位 */
        position: relative;
      }
      
    
      /* 元素水平垂直居中 方式一*/
      .box2 {
        width: 100px;
        height: 100px;
        background-color: orange;
        position: absolute;
        left: 0px;
        right: 0px;
        top: 0;
        bottom: 0;
        margin: auto;
      }
    </style>
  </head>
  <body>
    <div class="box1">
      <div class="box2">1</div>
    </div>
  </body>
</html>
 水平布局

 left+margin-left+border-left+padding-left+width+padding-right+border-right+margin-right+right

        -当开启决定定位后,水平方向的布局等式就会加上left,right两个值

          此时规则和之前一样,只是多添加了两个值

   也就是说水平方向9个值相加,必须要等其父元素内容区的宽度

            -当发生过度约束时

                1:如果9个值中没有auto,则自动调整right值以使等式满足

                2:如果有auto,则自动调整auto的值以使等式满足

            -可设置auto的值

              margin  width  left  right

            1个auto   谁是auto,调整谁

            2个auto

              margin  width  为auto   调整width

              margin   left 为auto    调整left

              margin  right 为auto    调整right

              width  left  为auto    调整left

              width  right 为auto    调整right

              left  right 为auto      调整right

            3个auto

               margin  width  left   调整left

               margin  width  right   调整right

               width  left  right    调整right

               margin   left  right   调整right

            4个auto

             margin  width  left  right为auto   调整right

五、案例

淘宝美食汇
css代码
  .box {
            width: 680px;
            height: 280px;
            background-color: rgb(34, 168, 212);
            margin: 30px auto;
            position: relative;
        }

        img {
            width: 200px;
            height: 110px;
            /* opacity: 0.2;  */
        }


        * {
            padding: 0;
            margin: 0;
            list-style: none;
        }

        li {
            float: left;
            margin: 10px;
            position: relative;
        }

        .box>ul>li:nth-of-type(4) {
            clear: both;
        }

        .box1 {
            position: relative;
        }

        .img1 {
            width: 60px;
            height: 20px;
            position: absolute;
            left: 70px;
            top: -100px;


        }

        .img2 {
            width: 20px;
            height: 20px;
            position: absolute;
            left: 10px;
            top: -70px;
        }

        .img3 {
            width: 20px;
            height: 20px;
            position: absolute;
            left: 180px;
            top: -70px;
        }

        .xian {
            width: 190px;
            height: 20px;
            border-bottom: 1px solid white;
            position: absolute;
            left: 10px;
            top: -60px;
            text-align: center;
            color: white;
            font-size: 12px;
        }

        .cakan {
            color: white;
            width: 70px;
            height: 20px;
            border-radius: 10px;
            border: 1px solid white;
            left: 50px;
            top: -35px;
            font-size: 10px;
            text-align: center;
            position: absolute;


        }

        .box1 {
            display: none;

        }

        li:hover>.box1 {
            display: block;

        }

        li:hover>.imgg {
            opacity: 0.8;

        }

        li:hover>p {
            display: none;
        }

        p {
            color: white;
            font-size: 14px;
            width: 200px;
            position: absolute;
            left: 0px;
            top: 92px;
            background-color: rgba(96, 95, 96, 0.5);
            text-align: center;

        }

html代码
  <div class="box">


        <ul>
            <li><img src="./images/1.webp" alt="" class="imgg">
                <p>口水菌品鉴│宅男宅女觅食记</p>

                <div class="box1">
                    <img src="./images/1.png" alt="" class="img1">
                    <img src="./images/2.png" alt="" class="img2">
                    <img src="./images/3.png" alt="" class="img3">
                    <div class="xian">口水菌品鉴│宅男宅女觅食记</div>
                    <div class="cakan">立即查看</div>
                </div>

            </li>
            <li><img src="./images/2.webp" alt="" class="imgg">
                <p>外酥里嫩,韩式炸蟹肉</p>

                <div class="box1">
                    <img src="./images/1.png" alt="" class="img1">
                    <img src="./images/2.png" alt="" class="img2">
                    <img src="./images/3.png" alt="" class="img3">
                    <div class="xian">外酥里嫩,韩式炸蟹肉</div>
                    <div class="cakan">立即查看</div>
                </div>

            </li>
            <li><img src="./images/3.webp" alt="" class="imgg">
                <p>寒冬福利:火锅燥起来。</p>
                <div class="box1">
                    <img src="./images/1.png" alt="" class="img1">
                    <img src="./images/2.png" alt="" class="img2">
                    <img src="./images/3.png" alt="" class="img3">
                    <div class="xian">寒冬福利:火锅燥起来。</div>
                    <div class="cakan">立即查看</div>
                </div>
            </li>
            <li><img src="./images/4.webp" alt="" class="imgg">
                <p>弄碗蟹黄豆腐开开荤</p>
                <div class="box1">
                    <img src="./images/1.png" alt="" class="img1">
                    <img src="./images/2.png" alt="" class="img2">
                    <img src="./images/3.png" alt="" class="img3">
                    <div class="xian">弄碗蟹黄豆腐开开荤</div>
                    <div class="cakan">立即查看</div>
                </div>
            </li>
            <li><img src="./images/5.webp" alt="" class="imgg">
                <p>好吃又好看,难以抗拒日本美食</p>
                <div class="box1">
                    <img src="./images/1.png" alt="" class="img1">
                    <img src="./images/2.png" alt="" class="img2">
                    <img src="./images/3.png" alt="" class="img3">
                    <div class="xian">好吃又好看,难以抗拒日本美食</div>
                    <div class="cakan">立即查看</div>
                </div>
            </li>
            <li><img src="./images/6.webp" alt="" class="imgg">
                <p>冬天来了,吃点东西滋补一下</p>
                <div class="box1">
                    <img src="./images/1.png" alt="" class="img1">
                    <img src="./images/2.png" alt="" class="img2">
                    <img src="./images/3.png" alt="" class="img3">
                    <div class="xian">冬天来了,吃点东西滋补一下。</div>
                    <div class="cakan">立即查看</div>
                </div>
            </li>
        </ul>

    </div>

 

效果展示

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值