浮動(dòng)、定位

一.文檔流的概念指什么?有哪種方式可以讓元素脫離文檔流?

1.窗體自上而下分成一行行, 并在每行中按從左至右的順序排放元素,即為文檔流.
2.脫離文檔流:使用定位或浮動(dòng)

二.有幾種定位方式,分別是如何實(shí)現(xiàn)定位的,使用場(chǎng)景如何?

三種基本的定位機(jī)制:普通流(文檔流)、浮動(dòng)和絕對(duì)定位

  • 普通流:
    除非專門指定,否則所有框都在普通流中定位。也就是說(shuō),普通流中的元素的位置由元素在 (X)HTML 中的位置決定。
    塊級(jí)框從上到下一個(gè)接一個(gè)地排列,框之間的垂直距離是由框的垂直外邊距計(jì)算出來(lái)。
    行內(nèi)框在一行中水平布置??梢允褂盟絻?nèi)邊距、邊框和外邊距調(diào)整它們的間距。但是,垂直內(nèi)邊距、邊框和外邊距不影響行內(nèi)框的高度。由一行形成的水平框稱為行框(Line Box),行框的高度總是足以容納它包含的所有行內(nèi)框。不過(guò),設(shè)置行高可以增加這個(gè)框的高度。
  • 定位:通過(guò)使用 position 屬性,我們可以選擇 4 種不同類型的定位
屬性 描述
static 默認(rèn)值。沒(méi)有定位,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)。
relative 相對(duì)定位是“相對(duì)于”元素在文檔中的初始位置進(jìn)行定位,使用相對(duì)定位時(shí),無(wú)論是否進(jìn)行移動(dòng),元素仍然占據(jù)原來(lái)的空間。因此,移動(dòng)元素會(huì)導(dǎo)致它覆蓋其它框
absolute 相對(duì)于 static 定位以外的第一個(gè)父元素進(jìn)行定位。元素的位置通過(guò) "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定,絕對(duì)定位使元素的位置與文檔流無(wú)關(guān),因此不占據(jù)空間
fixed 生成絕對(duì)定位的元素,相對(duì)于瀏覽器窗口進(jìn)行定位。元素的位置通過(guò) "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定。對(duì)于定位元素,z-index值越大優(yōu)先級(jí)越高

三.absolute, relative, fixed偏移的參考點(diǎn)分別是什么

  • absolute:相對(duì)于 static 定位以外的第一個(gè)父元素進(jìn)行定位, 前提是父元素是定位元素,如果父元素不是定位元素,那么就按照嵌套關(guān)系逐級(jí)向上尋找,直到根節(jié)點(diǎn)(視窗)進(jìn)行定位。
    如圖,灰色盒子沒(méi)有設(shè)置相對(duì)定位時(shí),2號(hào)盒子相對(duì)于頁(yè)面定位,.box設(shè)置相對(duì)定位時(shí),2號(hào)盒子相對(duì)于灰色盒子定位
  • fixed:fixed屬性值相對(duì)于瀏覽器視窗進(jìn)行定位
    如圖,紅色邊框盒子設(shè)置fixed屬性,相對(duì)于瀏覽器定位
  • relative:相對(duì)定位是“相對(duì)于”元素在文檔中的初始位置進(jìn)行定位
    如圖,2號(hào)盒子相對(duì)于它的初始位置進(jìn)行定位


四.z-index 有什么作用? 如何使用?

  • z-index 屬性設(shè)置元素的堆疊順序。擁有更高堆疊順序的元素總是會(huì)處于堆疊順序較低的元素的前面。
  • 元素可擁有負(fù)的 z-index 屬性值。
  • Z-index 僅能在定位元素上奏效(例如 position:absolute;)
    如圖,原先3號(hào)盒子覆蓋2號(hào)盒子,3號(hào)盒子默認(rèn)z-index值為0,設(shè)置2號(hào)盒子z-index屬性為1時(shí),2號(hào)盒子覆蓋了3號(hào)盒子


五.position:relative和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別

position:relative元素發(fā)生偏移時(shí),初始空間還被占據(jù)著。而負(fù)margin不再占據(jù)初始空間。也就是說(shuō),margin設(shè)置負(fù)值,不但改變了元素本身,還改變了周圍其他元素的布局。
如圖,設(shè)置2號(hào)盒子的position:relative屬性,left為20px,1號(hào)盒子和3號(hào)盒子不受影響

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

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style media="screen">
.box {
        width: 550px;
        height: 550px;
        border: 1px solid;
        background-color: #ccc;
    }
        .box1 {
            width: 50px;
            height: 50px;
            border: 1px solid red;
            background-color: red;
        }
        .box2 {
            width: 50px;
            height: 50px;
            border: 1px solid blue;
            background-color: blue;
            position: relative;
            left: 20px;
        }
        .box3 {
            width: 50px;
            height: 50px;
            border: 1px solid green;
            background-color: green;
        }
    </style>
</head>

<body>
<div class="box">
    <div class="box1">1</div>
    <div class="box2">2</div>
    <div class="box3">3</div>
  </div>
</body>

</html>

如圖,設(shè)置2號(hào)盒子margin:-20px,1號(hào)盒子和3號(hào)盒子均受影響

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

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style media="screen">
    .box {
        width: 550px;
        height: 550px;
        border: 1px solid;
        background-color: #ccc;
    }
        .box1 {
            width: 50px;
            height: 50px;
            border: 1px solid red;
            background-color: red;
        }
        .box2 {
            width: 50px;
            height: 50px;
            border: 1px solid blue;
            background-color: blue;
          margin: -20px;
        }
        .box3 {
            width: 50px;
            height: 50px;
            border: 1px solid green;
            background-color: green;

        }
    </style>
</head>

<body>
  <div class="box">


    <div class="box1">1</div>
    <div class="box2">2</div>
    <div class="box3">3</div>

  </div>
</body>

</html>

六.如何讓一個(gè)固定寬高的元素在頁(yè)面上垂直水平居中?

.box1 { 
width: 50px; 
height: 50px; 
border: 1px solid ;
background-color:red;
 position: absolute; 
left: 50%; top: 50%;
 margin-left: -25px; 
margin-top: -25px;
}

利用position: absolute;將元素脫離文本流,然后設(shè)置left: 50%; top: 50%;從而使元素的左上角點(diǎn)位于頁(yè)面中點(diǎn),最后通過(guò)調(diào)節(jié)元素的margin值(左上各負(fù)一半)將元素居中。


七.浮動(dòng)元素有什么特征?對(duì)其他浮動(dòng)元素、普通元素、文字分別有什么影響?

  • 浮動(dòng)的框可以左右移動(dòng),直至它的外邊緣遇到包含框或者另一個(gè)浮動(dòng)框的邊緣
  • 浮動(dòng)框不屬于文檔中的普通流,顧名思義,就是漂浮于普通流之上,像浮云一樣,但是只能左右浮動(dòng),文檔中的普通流就會(huì)表現(xiàn)得和浮動(dòng)框不存在一樣
  • 當(dāng)一個(gè)元素浮動(dòng)之后,不會(huì)影響到塊級(jí)框的布局而只會(huì)影響內(nèi)聯(lián)框(通常是文本)的排列
  • 當(dāng)浮動(dòng)框高度超出包含框的時(shí)候,也就會(huì)出現(xiàn)包含框不會(huì) 自動(dòng)伸高來(lái)閉合浮動(dòng)元素(“高度塌陷”現(xiàn)象)
    如圖,1號(hào)盒子(紅色)設(shè)置浮動(dòng)后不占據(jù)原有空間,2號(hào)和3號(hào)盒子向上移動(dòng)



    如圖,設(shè)置所有的盒子左浮動(dòng),將按順序從左開(kāi)始排列


如圖,設(shè)置浮動(dòng)對(duì)文字造成影響,形成文字環(huán)繞

八.清除浮動(dòng)指什么? 如何清除浮動(dòng)?

浮動(dòng)元素引起的問(wèn)題:

  • 父元素的高度無(wú)法被撐開(kāi),影響與父元素同級(jí)的元素
  • 與浮動(dòng)元素同級(jí)的非浮動(dòng)元素會(huì)跟隨其后
  • 若非第一個(gè)元素浮動(dòng),則該元素之前的元素也需要浮動(dòng),否則會(huì)影響頁(yè)面顯示的結(jié)構(gòu)

使用CSS中的clear:both;屬性來(lái)清除元素的浮動(dòng)可解決2、3問(wèn)題。


如圖,對(duì) p標(biāo)簽設(shè)置clear:right,清除浮動(dòng),這時(shí)文字不再環(huán)繞圖片

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 一、文檔流的概念指什么?有哪種方式可以讓元素脫離文檔流? 1、文檔流指的是元素在排列布局中所占用的位置,具體的說(shuō)是...
    鴻鵠飛天閱讀 841評(píng)論 0 0
  • 一,浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響? 浮動(dòng)模型是一種可視化格式模型,浮動(dòng)...
    DeeJay_Y閱讀 1,002評(píng)論 0 4
  • 浮動(dòng)元素有什么特征?對(duì)父容器、其他浮動(dòng)元素、普通元素、文字分別有什么影響? 特征: 1、浮動(dòng)元素會(huì)脫離正常的文檔流...
    我要認(rèn)真學(xué)前端閱讀 2,871評(píng)論 0 5
  • 學(xué)習(xí)建議 定位、浮動(dòng)是 CSS 核心知識(shí)點(diǎn),必須熟練掌握。 1.文檔流的概念指什么?有哪種方式可以讓元素脫離文檔流...
    饑人谷_任磊閱讀 1,156評(píng)論 0 3
  • 夜深人靜的時(shí)候不是我想家的時(shí)候,卻是最想你的時(shí)候。剛剛收拾完衣服,有一件你給我買的紅色的長(zhǎng)袖襯衣,想起來(lái)有一張照片...
    孫有騰閱讀 307評(píng)論 0 0

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