css定位

定位

相對定位

  • 什么是相對定位?

  • 對定位就是相對于自己以前在標準流中的位置來移動

  • 格式:

  • position: relative;

  • 示例程序

<style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            width: 100px;
            height: 100px;
        }
        .box1{
            background-color: red;
        }
        .box2{
            background-color: green;
            position: relative;
            top: 20px;
            left: 20px;
        }
        .box3{
            background-color: blue;
        }
<style>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
相對定位.png
  • 相對定位注意點:

  • 在相對定位中同一個方向上的定位屬性只能使用一個

    • top/bottom 只能用一個
    • left/right 只能用一個
  • 相對定位是不脫離標準流的, 會繼續(xù)在標準流中占用一份空間

  • 由于相對定位是不脫離標準流的, 所以在相對定位中區(qū)分塊級元素/行內(nèi)元素/行內(nèi)塊級元素

  • 由于相對定位是不脫離標準流的, 并且相對定位的元素會占用標準流中的位置, 所以當給相對定位的元素設置margin/padding等屬性的時會影響到標準流的布局(如下圖)

image.png
  • 相對定位應用場景:

  • 用于對元素進行微調(diào)

  • 配合后面學習的絕對定位來使用

image.png

絕對定位

  • 什么是絕對定位?

  • 絕對定位就是相對于body或者某個定位流中的祖先元素來定位

  • 格式:

  • position: absolute;

  • 示例代碼

<style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            width: 100px;
            height: 100px;
        }
        .box1{
            background-color: red;
        }
        .box2{
            background-color: green;
            position: absolute;
            left: 0;
            top: 0;
        }
        .box3{
            background-color: blue;
        }
</style>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
image.png
image.png
  • 絕對定位注意點:
  • 絕對定位的元素是脫離標準流的, 不會占用標準流中的位置
  • 由于絕對定位的元素是脫離標準流的, 所以絕對定位的元素不區(qū)分塊級元素/行內(nèi)元素/行內(nèi)塊級元素
  • 如果一個絕對定位的元素是以body作為參考點, 那么其實是以網(wǎng)頁首屏的寬度和高 度作為參考點, 而不是以整個網(wǎng)頁的寬度和高度作為參考點
    • 相對于body定位會隨著頁面的滾動而滾動
  • 一個絕對定位的元素會忽略祖先元素的padding
<style>
        *{
            margin: 0;
            padding: 0;
        }
        .box1{
            width: 300px;
            height: 300px;
            background-color: red;
            border: 10px solid #000;
            padding: 30px;
            position: relative;
            box-sizing: border-box;
        }
        .box2{
            width: 100px;
            height: 100px;
            background-color: green;
            position: absolute;
            left: 0;
            top: 0;
        }
</style>
<div class="box1">
    <div class="box2"></div>
</div>
image.png
image.png
  • 絕對定位參考點:
  • 默認情況下所有的絕對定位的元素, 無論有沒有祖先元素, 都會以body作為參考點
  • 如果一個絕對定位的元素有祖先元素, 并且祖先元素中有一個是定位流中的元素, 那么這個絕對定位的元素就會以定位流的那個祖先元素作為參考點
  • 如果一個絕對定位的元素有祖先元素, 并且祖先元素中有多個是定位流中的元素, 那么這個絕對定位的元素會以離它最近的那個定位流的祖先元素為參考點
<style>
        *{
            margin: 0;
            padding: 0;
        }
        .box1{
            width: 300px;
            height: 300px;
            background-color: red;
            position: relative;
        }
        .box2{
            width: 200px;
            height: 200px;
            background-color: green;
        }
        .box3{
            width: 100px;
            height: 100px;
            background-color: blue;
            position: absolute;
            left: 0;
            bottom: 0;
          }
</style>
<div class="box1">
    <div class="box2">
        <div class="box3"></div>
    </div>
</div>
image.png
<style>
        *{
            margin: 0;
            padding: 0;
        }
        .box1{
            width: 300px;
            height: 300px;
            background-color: red;
            position: relative;
        }
        .box2{
            width: 200px;
            height: 200px;
            background-color: green;
            position: relative;
        }
        .box3{
            width: 100px;
            height: 100px;
            background-color: blue;
            position: absolute;
            left: 0;
            bottom: 0;
          }
</style>
<div class="box1">
    <div class="box2">
        <div class="box3"></div>
    </div>
</div>
image.png
  • 絕對定位水平居中
  • 1.注意當一個盒子絕對定位之后不能使用margin: 0 auto;讓盒子自身居中
  • 2.如果想讓過一個絕對定位的盒子自身居中, 可以使用left: 50%; margin-left:-元素寬度一半px;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>74-絕對定位水平居中</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            width: 400px;
            height: 50px;
            background-color: red;
            position: absolute;
            /*無效*/
            /*margin: 0 auto;*/
            /*有效*/
            left: 50%;
            margin-left:-200px;
        }
    </style>
</head>
<body>
<div></div>
</body>
</html>
  • 絕對定位應用場景:
  • 用于對元素進行微調(diào)
  • 配合后面學習的絕對定位來使用

子絕父相

  • 企業(yè)開發(fā)中一般相對定位和絕對定位都是一起出現(xiàn), 很少單獨使用

  • 為什么要子絕父相?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>71-子絕父相</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            width: 800px;
            height: 50px;
            background-color: red;
            list-style: none;
            margin: 0px auto;
            margin-top: 100px;
        }
        li{
            width: 100px;
            /*height: 50px;*/
            line-height: 50px;
            float: left;
            background-color: gray;
            text-align: center;
        }
        .li03{
            background-color: darkgray;
            position: relative;
        }
        ul li img{
            /*
            缺點以前的位置仍然被占用, 不能讓文字居中對齊
            */

            /*position: relative;
            left: -35px;
            top: -15px;*/

            /* 瀏覽器調(diào)整之后位置會發(fā)生變化*/

           /* position: absolute;
            top: 95px;
            left: 535px;*/


            position: absolute;
            left: 37px;
            top: -5px;

        }
    </style>
</head>
<body>
<ul>
    <li>服裝城</li>
    <li>美妝館</li>
    <li>京東超市</li>
    <li class="li03">全球購![](hot.png)</li>
    <li>閃購</li>
    <li>團購</li>
    <li>拍賣</li>
    <li>金融</li>
</ul>
</body>
</html>
image.png
  • 相對定位和絕對定位一般都是用來做覆蓋效果的, 當看到某個元素覆蓋在另外一個元素上時, 第一時間就要想到定位流
image.png
image.png

固定定位

  • 什么是固定定位?

  • 固定定位和前面學習的背景關聯(lián)方式很像, 背景關聯(lián)方式可以讓某個圖片不隨著滾動條的滾動而滾動, 而固定定位可以讓某個盒子不隨著滾動條的滾動而滾動

  • 格式:

  • position: fixed;

  • 示例代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>74-固定定位</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        p{
            width: 100px;
        }
        a{

            width: 50px;
            height: 50px;
            background-color: rgba(0, 0, 0, 0.3);
            border-radius: 25px;
            text-decoration: none;
            text-align: center;
            color: #000;
            position: fixed;
            right: 10px;
            bottom: 10px;
        }

    </style>
</head>
<body>
<p>我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字</p>
<a href="#">^<br>頂部</a>
</body>
</html>
image.png
  • 固定定位注意點:

  • 固定定位的元素是脫離標準流的, 不會占用標準流中的位置

  • 由于固定定位的元素是脫離標準流的, 所以絕對定位的元素不區(qū)分塊級元素/行內(nèi)元素/行內(nèi)塊級元素

  • IE6不支持固定定位

  • 固定定位應用場景:

  • 網(wǎng)頁對聯(lián)廣告

  • 網(wǎng)頁頭部通欄(穿透效果)

image.png

靜態(tài)定位

  • 什么是靜態(tài)定位?

  • 默認情況下標準流中的元素position屬性就等于static, 所以靜態(tài)定位其實就是默認的標準流

  • 靜態(tài)定位應用場景:

  • 一般用于配合JS清除定位屬性

z-index屬性

  • 什么是z-index值?

  • 用于指定定位的元素的覆蓋關系

  • 定位元素的覆蓋關系:

  • 默認情況下定位的元素一定會蓋住沒有定位的元素

  • 默認情況下寫在后面的定位元素會蓋住前面的定位元素

  • 默認情況下所有元素的z-index值都是0, 如果設置了元素的z-index值, 那么誰比較大誰就顯示在前面

  • 定位元素的從父現(xiàn)象

    • 父元素沒有z-index值, 那么子元素誰的z-index大誰蓋住誰
    • 父元素z-index值不一樣, 那么父元素誰的z-index大誰蓋住誰
image.png
image.png
image.png
image.png
image.png
  • z-index應用場景
  • 控制界面上的定位元素的覆蓋關系, 例如網(wǎng)頁中后面的定位元素不能覆蓋前面的導航條通欄
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • CSS 定位 CSS有三種基本的定位機制:普通流,浮動,絕對定位(absolute, fixed):普通流是默認定...
    _空空閱讀 5,993評論 0 15
  • 當在這一個頁面上實現(xiàn)布局和定位有幾種不同的技術。使用哪種技術,很大程序上取決于內(nèi)容和目標頁面,因為有很多技術比別人...
    lulu_c閱讀 1,228評論 0 5
  • 定位流分類:一、相對定位:{position: relative;}相對自己在以前標準流中的位置上右下左移動。要配...
    幸運密碼_xymm16888閱讀 331評論 0 0
  • 概述: 在開發(fā)中,為了與用戶進行溝通,一般都會有讓用戶輸入的東西,尤其是在登錄的時候,也必須要讓用戶輸入合乎規(guī)范的...
    遛遛食閱讀 576評論 0 2
  • 在當今的社會上,教師是需要教師資格證的,心理咨詢師也需要心理咨詢師證,律師也需要司法考試取得相應的資格證,甚至...
    雪后山閱讀 1,367評論 1 10

友情鏈接更多精彩內(nèi)容