CSS定位(position)

定位(position)的簡介

  • 定位是一種更加高級的布局手段
  • 通過定位可以將元素?cái)[放到頁面的任意位置
  • 使用position屬性來設(shè)置定位
    • 可選值:
      • static 默認(rèn)值撤嫩,元素是靜止的沒有開啟定位
      • relative 開啟元素的相對定位
      • absolute 開啟元素的絕對定位
      • fixed 開啟元素的固定定位
      • sticky 開啟元素的粘滯定位

相對定位

相對定位的設(shè)置

當(dāng)元素的position屬性值設(shè)置為relative時(shí)則開啟了元素的相對定位

相對定位的特點(diǎn)

  1. 元素開啟相對定位以后置森,如果不設(shè)置偏移量元素不會(huì)發(fā)生任何的變化
  2. 相對定位是參照于元素在文檔流中的位置進(jìn)行定位的
  3. 相對定位會(huì)提升元素的層級
  4. 相對定位不會(huì)使元素脫離文檔流
  5. 相對定位不會(huì)改變元素的性質(zhì)塊還是塊,行內(nèi)還是行內(nèi)

偏移量(offset)

當(dāng)元素開啟了定位以后弯菊,可以通過偏移量來設(shè)置元素的位置

  • top

    • 定位元素和定位位置上邊的距離
  • bottom

    • 定位元素和定位位置
  • 定位元素垂直方向的位置由top和bottom兩個(gè)屬性來控制,通常情況下我們只會(huì)使用其中一

    • top值越大,定位元素越向下移動(dòng)
    • bottom值越大母剥,定位元素越向上移動(dòng)
  • left

    • 定位元素和定位位置的左側(cè)距離
  • right

    • 定位元素和定位位置的右側(cè)距離
  • 定位元素水平方向的位置由left和right兩個(gè)屬性控制,通常情況下只會(huì)使用一個(gè)

    • left越大元素越靠右
    • right越大元素越靠左
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <style>
    body {
        font-size: 60px;
    }
    .box1 {
        width: 200px;
        height: 200px;
        background-color: #bfa;
    }

    .box2 {
        width: 200px;
        height: 200px;
        background-color: orange;

        position: relative;

        left: 100px;
        top: -200px;
    }

    .box3 {
        width: 200px;
        height: 200px;
        background-color: yellow;
    }
    </style>
</head>
<body>
    <div class="box1">1</div>
    <div class="box2">2</div>
    <div class="box3">3</div>
</body>
</html>

絕對定位

絕對定位的設(shè)置

當(dāng)元素的position屬性值設(shè)置為absolute時(shí),則開啟了元素的絕對定位

絕對定位的特點(diǎn)

  1. 開啟絕對定位后环疼,如果不設(shè)置偏移量元素的位置不會(huì)發(fā)生變化
  2. 開啟絕對定位后习霹,元素會(huì)從文檔流中脫離
  3. 絕對定位會(huì)改變元素的性質(zhì),行內(nèi)變成塊炫隶,塊的寬高被內(nèi)容撐開
  4. 絕對定位會(huì)使元素提升一個(gè)層級
  5. 絕對定位元素是相對于其包含塊進(jìn)行定位的

包含塊( containing block )

  • 正常情況下:
    包含塊就是離當(dāng)前元素最近的祖先塊元素

  • 絕對定位的包含塊:
    包含塊就是離它最近的開啟了定位的祖先元素淋叶,如果所有的祖先元素都沒有,開啟定位則根元素就是它的包含塊

  • html(根元素、初始包含塊)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <style>
    body {
        font-size: 60px;
    }
    .box1 {
        width: 200px;
        height: 200px;
        background-color: #bfa;
    }

    .box2 {
        width: 200px;
        height: 200px;
        background-color: orange;
        position: absolute;
        bottom: 0;
        right: 0;
    }

    .box3 {
        width: 200px;
        height: 200px;
        background-color: yellow;
    }

    .box4 {
        width: 400px;
        height: 400px;
        background-color: tomato;
        position: relative;
    }

    .box5 {
        width: 300px;
        height: 300px;
        background-color: aliceblue;
    }
    </style>
</head>
<body>
    <div class="box1">1</div>

    <div class="box4">
    4
    <div class="box5">
    5
        <div class="box2">2</div>
    </div>
    </div>
    <div class="box3">3</div>
</body>
</html>

絕對定位元素的布局

  • 水平布局

    left + margin-left + border-left + padding-left + width + padding-right + border-right + margin-right + right = 包含塊的內(nèi)容區(qū)的寬度
  • 當(dāng)我們開啟了絕對定位后:
    水平方向的布局等式就需要添加left 和 right 兩個(gè)值伪阶,
    此時(shí)規(guī)則和之前一樣只是多添加了兩個(gè)值:
    當(dāng)發(fā)生過度約束:
    如果9個(gè)值中沒有 auto 則自動(dòng)調(diào)整right值以使等式滿足煞檩,
    如果有auto,則自動(dòng)調(diào)整auto的值以使等式滿足
  • 可設(shè)置auto的值:

    margin width left right

    因?yàn)閘eft 和 right的值默認(rèn)是auto栅贴,所以如果不指定left和right斟湃,則等式不滿足時(shí),會(huì)自動(dòng)調(diào)整這兩個(gè)值
  • 垂直方向布局的等式的也必須要滿足

    top + margin-top/bottom + padding-top/bottom + border-top/bottom + height = 包含塊的高度

固定定位

固定定位的設(shè)置

將元素的position屬性設(shè)置為fixed則開啟了元素的固定定位

固定定位特點(diǎn)

固定定位也是一種絕對定位檐薯,所以固定定位的大部分特點(diǎn)都和絕對定位一樣凝赛,唯一不同的是固定定位永遠(yuǎn)參照于瀏覽器的視口進(jìn)行定位,固定定位的元素不會(huì)隨網(wǎng)頁的滾動(dòng)條滾動(dòng)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
    <style>
    body {
        font-size: 60px;
        height: 2000px;
    }
    .box1 {
        width: 200px;
        height: 200px;
        background-color: #bfa;
    }

    .box2 {
        width: 200px;
        height: 200px;
        background-color: orange;
        position: fixed;
        left: 0;
        top: 0;
    }

    .box3 {
        width: 200px;
        height: 200px;
        background-color: yellow;
    }

    .box4 {
        width: 400px;
        height: 400px;
        background-color: tomato;
    }

    .box5 {
        width: 300px;
        height: 300px;
        background-color: aliceblue;
    }
    </style>
</head>
<body>
    <div class="box1">1</div>

    <div class="box4">
    4
    <div class="box5">
    5
    <div class="box2">2</div>
    </div>
    </div>

    <div class="box3">3</div>
</body>
</html>

粘滯定位

粘滯定位的設(shè)置

當(dāng)元素的position屬性設(shè)置為sticky時(shí)則開啟了元素的粘滯定位

粘滯定位的特點(diǎn)

粘滯定位和相對定位的特點(diǎn)基本一致坛缕,
不同的是粘滯定位可以在元素到達(dá)某個(gè)位置時(shí)將其固定

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>導(dǎo)航條</title>
    <link rel="stylesheet" href="./css/reset.css">
    <style>

        body{
            height: 3000px;
        }
        
        /* 設(shè)置nav的大小 */
        .nav{

            /* 設(shè)置寬度和高度 */
            width: 1210px;
            height: 48px;
            /* 設(shè)置背景顏色 */
            background-color: #E8E7E3;
            margin:100px auto;
            position: sticky;
            top: 10px;

        }

        /* 設(shè)置nav中l(wèi)i */
        .nav li{
            /* 設(shè)置li向左浮動(dòng)墓猎,已使菜單橫向排列 */
            float: left;
            /* 設(shè)置li的高度 */
            /* height: 48px; */
            /* 將文字在父元素中垂直居中 */
            line-height: 48px;

        }

        /* 設(shè)置a的樣式 */
        .nav a{
            /* 將a轉(zhuǎn)換為塊元素 */
            display: block;
            /* 去除下劃線 */
            text-decoration: none;
            /* 設(shè)置字體顏色 */
            color: #777777;
            /* 修改字體大小 */
            font-size: 18px;

            padding: 0 39px;
        }

        .nav li:last-child a{
            padding: 0 42px 0 41px;
        }

        /* 設(shè)置鼠標(biāo)移入的效果 */
        .nav a:hover{
            background-color: #3F3F3F;
            color: #E8E7E3;
        }
    </style>
</head>

<body>
    <!-- 創(chuàng)建導(dǎo)航條的結(jié)構(gòu) -->
    <ul class="nav">
        <li>
            <a href="#">HTML/CSS</a>
        </li>
        <li>
            <a href="#">Browser Side</a>
        </li>
        <li>
            <a href="#">Server Side</a>
        </li>
        <li>
            <a href="#">Programming</a>
        </li>
        <li>
            <a href="#">XML</a>
        </li>
        <li>
            <a href="#">Web Building</a>
        </li>
        <li>
            <a href="#">Reference</a>
        </li>
    </ul>

</body>

</html>

元素的層級

元素的層級的設(shè)置

對于開啟了定位元素,可以通過z-index屬性來指定元素的層級

z-index

z-index需要一個(gè)整數(shù)作為參數(shù)赚楚,值越大元素的層級越高毙沾,元素的層級越高越優(yōu)先顯示

元素的顯示與層級

  • 如果元素的層級一樣,則優(yōu)先顯示靠下的元素
  • 祖先的元素的層級再高也不會(huì)蓋住后代元素
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宠页,一起剝皮案震驚了整個(gè)濱河市左胞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌举户,老刑警劉巖罩句,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異敛摘,居然都是意外死亡门烂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門兄淫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屯远,“玉大人,你說我怎么就攤上這事捕虽】ぃ” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵泄私,是天一觀的道長房揭。 經(jīng)常有香客問我备闲,道長,這世上最難降的妖魔是什么捅暴? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任恬砂,我火速辦了婚禮,結(jié)果婚禮上蓬痒,老公的妹妹穿的比我還像新娘泻骤。我一直安慰自己,他們只是感情好梧奢,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布狱掂。 她就那樣靜靜地躺著,像睡著了一般亲轨。 火紅的嫁衣襯著肌膚如雪趋惨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天惦蚊,我揣著相機(jī)與錄音希柿,去河邊找鬼。 笑死养筒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的端姚。 我是一名探鬼主播晕粪,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼渐裸!你這毒婦竟也來了巫湘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤昏鹃,失蹤者是張志新(化名)和其女友劉穎尚氛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洞渤,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阅嘶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了载迄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片讯柔。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖护昧,靈堂內(nèi)的尸體忽然破棺而出魂迄,到底是詐尸還是另有隱情,我是刑警寧澤惋耙,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布捣炬,位于F島的核電站熊昌,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏湿酸。R本人自食惡果不足惜婿屹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望稿械。 院中可真熱鬧选泻,春花似錦、人聲如沸美莫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厢呵。三九已至窝撵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間襟铭,已是汗流浹背碌奉。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寒砖,地道東北人赐劣。 一個(gè)月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像哩都,于是被迫代替她去往敵國和親魁兼。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 在介紹定位之前漠嵌,先了解一下瀏覽器默認(rèn)的布局方式(Normal Flow)咐汞,就是平時(shí)說的文檔流。 正常/普通文檔流(...
    潘皞閱讀 706評論 1 5
  • 學(xué)習(xí)目標(biāo) 理解能說出為什么要用定位能說出定位的 4 種分類能說出四種定位的各自特點(diǎn)能說出我們?yōu)槭裁闯S米咏^父相布局...
    jovelin閱讀 1,417評論 0 0
  • 為什么要用定位儒鹿? 那么定位化撕,最長運(yùn)用的場景再那里呢? 來看幾幅圖片约炎,你一定會(huì)有感悟植阴! 第一幅圖, 小黃色塊可以...
    王玉偉的偉閱讀 1,626評論 0 1
  • 3. 定位詳解 定位也是用來布局的圾浅,它有兩部分組成: 定位 = 定位模式 + 邊偏移 3.1 邊偏移 簡單說墙贱, 我...
    王玉偉的偉閱讀 465評論 0 0
  • 塊級元素,行內(nèi)元素(內(nèi)聯(lián)元素) div贱傀、h1 或 p 元素常常被稱為塊級元素惨撇。這意味著這些元素顯示為一塊內(nèi)容,即“...
    艷曉閱讀 2,579評論 0 0