CSS基础------详细了解position相对定位、绝对定位和固定定位

前言

   上一篇文章了解了浮动float 文章地址:https://blog.csdn.net/qazzwx/article/details/104923386

    这篇文章主要了解position属性 相对定位、绝对定位和固定定位

一、position属性的定义和用法

1.1、如上图所示,一个盒子压住另一个盒子增加层次感用浮动是做不了,如果盒子浮动会并排但不会出现有层级的观感。所以想要有层级的观感,就得用定位。定位可以将盒模型中的盒子显示在我们想要的位置。

1.2、position属性语法为:

  <style>
        .div1 {
            position: relative;
            right: 400px;
            top: 50px;
        }
 </style>

常用值如下:

absolute

生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

fixed

生成绝对定位的元素,相对于浏览器窗口进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

relative

生成相对定位的元素,相对于其正常位置进行定位。

因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。

static 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
inherit 规定应该从父元素继承 position 属性的值。

二、使用示例

2.1、相对定位

    实例一

<style>

 .div1 div {
            width: 100px;
            height: 100px;
            background-color: pink;
            float: left;
        }

  .div2 {
            position: relative;/* 相对定位,相对于原来的位置 */
            top: 60px; /* 正数往下,负数往上 bottom反之*/
            left: 100px;/* 正数往右,负数往左 right反之*/
         }

 </style>

 <div></div>
 <div class="div2"></div>
 <div></div>
 <div></div>

  实例二 使用浮动和相对定位制作导航栏

       
<style>
 .div4 {
            width: 400px;
            height: 50px;
            list-style: none;
            text-align: center;
        }

        li {
            list-style: none;
            width: 100px;
            float: left;
            text-align: center;
            line-height: 50px;
            background-color: pink;
        }

        a {
            text-decoration: none;
            display: block;
            color: #000;
        }

        a:hover {
            position: relative;
            bottom: -5px;
            border-bottom: 3px solid yellow;

        }
  </style>

 <div class="div4">
        <li><a href="">首页</a></li>
        <li><a href="">活动</a></li>
        <li><a href="">专题</a></li>
        <li><a href="">特价</a></li>
    </div>

实例三

<style> 
   span {
            font-size: 12px;
            position: relative;
            top: -5px;
            color: blue;
        }

  .div5 {
            width: 400px;
            height: 50px;
            line-height: 50px;
            text-align: center;
        }
 </style>

 <div class="div5">
        人生 <span>123</span> 路漫漫兮其修远,<span>456</span> 吾将上下而求索。 
        <span>789</span>
 </div>

相对定位的特征

          1.相对定位的元素不会脱离文档流不会改变元素的性质(块元素仍然是块元素,行内元素仍然是行内元素)。但是注意一点行内元素                     使用相对定位不能转行内块。

          2.相对定位元素会提升一个层级(如果与其他元素发生重叠 它会在上面)

          3.相对定位设置定位之后其原来的位置还会保留不会被覆盖,不设置偏移值,.元素则不会有任何变化,所以一般用于元素之间偏移。

          4.子绝父相(父元素相对定位,子元素绝对定位)

          5.相对定位的位置偏移,是从自身位置出发。

2.3、绝对定位

  实例一

<style>
  .div1 div {
            width: 100px;
            height: 100px;
            background-color: pink;
            float: left;
        }

        .div2 {
            position:absolute;/* 相对定位,相对于原来的位置 */
            top: 100px; /* 正数往下,负数往上 bottom反之*/
            left: 60px;/* 正数往右,负数往左 right反之*/
        }
</style>

<div class="div1">
        <div>div1</div>
        <div class="div2">div2</div>
        <div >div3</div>
        <div>div4</div>
    </div>

实例二

<style>
        .div1 {

            width: 500px;
            height: 200px;
            padding: 50px;
            border: 5px solid red;
            text-align: center;
        }

        .div2 {
            width: 400px;
            height: 100px;
            padding: 50px;
            border: 5px solid greenyellow;
            position: relative;
        }

        .div3 {
            width: 300px;
            height: 50px;
            padding: 20px;
            border: 5px solid yellow;
        }

        p {
            width: 20px;
            height: 20px;
            position: absolute;
            top: 0px;
            left: 10px;
            background: green;
        }
    </style>

<div class="div1">
        div1
        <div class="div2">
            div2
            <div class="div3">
                div3
                <p>11</p>
            </div>
        </div>
    </div>

绝对定位的特征

      1.绝对定位如果不设定任何偏移值,元素位置不会有任何改变。设置偏移值之后元素原来位置会被其他元素占用(如实例一)

      2.绝对定位会使得元素脱离文档流,会改变元素的性质.行内元素会变成块状元素(因为会脱离文档流,也就是脱离文档流的特性)

     3.绝对定位是相对于离他最近的开启了定位的元素进行定位的,如果都没有,则相对于body进行定位(所以通常给父元素也加一个定位)               如实例二

     4.绝对定位也会使得元素提升一个层级

2.4、固定定位

        实例

<style>
        .div1 {
            width: 80px;
            height: 80px;
            background-color: darkorange;
            position: fixed;
            bottom: 100px;
            right: 50px;
        }

        .div2 {
            width: 200px;
            height: 2000px;
        }
</style>

<body>
    <div class="div1">div1</div>
    <div class="div2">div2</div>
</body>

固定定位特征

     1.固定定位也是绝对定位的一种.拥有绝对定位的大部分特点

     2.固定定位相对于浏览器窗口的位置进行定位.比如漂浮的客服,回到顶部.这类的按钮都是使用的固定定位

三、position层级z-index

   当定位元素重叠,可通过z-index设置层叠次序。

<style>
        .div1 {
            width: 80px;
            height: 80px;
            background-color: darkorange;
            position: absolute;
            top: 100px;
            left: 50px;
            z-index: 3;
        }

        .div2 {
            width: 80px;
            height: 80px;
            position: absolute;
            top: 120px;
            left: 50px;
            background-color: yellow;
           
        }
</style>

<body>
    <div class="div1">div1</div>
    <div class="div2">div2</div>
</body>

未设置 z-index属性之前                                                                                   设置z-index属性之后

                                                                         

值得注意的是z-index属性只对定位元素有效,数值越大层级高,数值相等,以后面的设置的元素为主,数值大于零时,层级大于浮动,层级为负时小于浮动相同一层级元素,看父元素,父元素层级大,子元素层级就大。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章