浮動酱畅、定位

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

文檔流也叫常規(guī)流,其實就是文檔的讀取和輸出順序纺酸,也就是我們通辰讯海看到的由左到右、由上而下的讀取和輸出形式餐蔬。脫離文檔流是指元素被從普通的布局排版中拿走碎紊,其他盒子在定位的時候,會當(dāng)做脫離文檔流的元素不存在而進(jìn)行定位樊诺。
有三種方可以讓元素脫離文檔流仗考。分別是:float(浮動),absolute(絕對定位)词爬,fixed(固定定位)秃嗜。其中,使用float脫離文檔流時顿膨,其他盒子會無視這個元素痪寻,但其他盒子內(nèi)的文本依然會為這個元素讓出位置,環(huán)繞在周圍虽惭。而對于使用absolute橡类,fixed脫離文檔流的元素,其他盒子與其他盒子內(nèi)的文本都會無視它芽唇。

參考:
1.在網(wǎng)頁設(shè)計html中什么是文本流顾画,請大家?guī)兔Γ取劫。。?/a>
2.
css脫離文檔流到底是什么意思研侣,脫離文檔流就不占據(jù)空間了嗎谱邪?脫離文檔流是不是指該元素從dom樹中脫離?

2.有幾種定位方式庶诡,分別是如何實現(xiàn)定位的惦银,使用場景如何?

關(guān)于定位末誓,position屬性有幾個常用值如下:

屬性
inherit 規(guī)定應(yīng)該從父元素繼承 position 屬性的值
static 默認(rèn)值,沒有定位扯俱,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)
relative 生成相對定位的元素,相對于元素本身正常位置進(jìn)行定位,因此喇澡,left:20px會向元素的 left 位置添加20px
absolute 生成絕對定位的元素迅栅,相對于static定位以外的第一個祖先元素(offset parent)進(jìn)行定位,元素的位置通過 left, top, right 以及 bottom屬性進(jìn)行規(guī)定
fixed 生成絕對定位的元素,相對于瀏覽器窗口進(jìn)行定位晴玖。元素的位置通過 left, top, right以及 bottom 屬性進(jìn)行規(guī)定
sticky CSS3新屬性读存,表現(xiàn)類似position:relative和position:fixed的合體,在目標(biāo)區(qū)域在屏幕中可見時呕屎,它的行為就像position:relative; 而當(dāng)頁面滾動超出目標(biāo)區(qū)域時让簿,它的表現(xiàn)就像position:fixed,它會固定在目標(biāo)位置

其中秀睛,sticky這個屬性拜英,從can i use網(wǎng)站看,


完全支持的是firefox瀏覽器和safari瀏覽器琅催,IE和Chrome還在考慮和開發(fā)中居凶。
其中,主要用到的是三種定位方式藤抡,fixed(固定定位)侠碧,relative(相對定位),absolute(絕對定位)缠黍。

  • 1.position: fixed;設(shè)置元素相對于瀏覽器窗口位置固定弄兜,首先設(shè)置position: fixed;`使元素脫離文檔流,然后設(shè)置top瓷式、left替饿、right或者bottom的值,這些設(shè)置了元素距瀏覽器的上贸典、左视卢、右或者下邊距的距離。
    舉例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>固定定位</title>
    <style>
        div {
            width: 100px;
            height: 100px;
            border: 1px solid red;
    }
        .item1 {
            position: fixed;
            right: 10px;
            top: 10px;
        }
        .item2 {
            position: fixed;
            right: 10px;
            bottom: 10px;
        }
    </style>
</head>
<body>
    <div class="item1">饑人谷1</div>
    <div>饑人谷</div>
    <div>饑人谷</div>
    <div>饑人谷</div>
    <div>饑人谷</div>
    <div>饑人谷</div>
    <div>饑人谷</div>
    <div class="item2">饑人谷2</div>
</body>
</html>

這是設(shè)置class值是item1的div元素在瀏覽器右上角廊驼,距右据过、上都是10px惋砂,class值是item2的div元素在瀏覽器右下角,距右绳锅、下都是10px西饵。
看效果:

圖1

圖2

圖1到圖2瀏覽器右邊欄向下滑動,item1,item2相對于瀏覽器窗口的位置鳞芙,并沒有變化眷柔。
position: fixed;主要用于固定一個窗口在頁面上,頁面向下滑動時原朝,窗口的位置不變驯嘱,這可以用于顯示強(qiáng)制用戶接收的信息。例如廣告竿拆,推廣消息等。

  • 2.position: relative;設(shè)置元素相對于自身原來的位置移動宾尚。然后利用top丙笋、left、right煌贴、bottom屬性設(shè)置偏移值御板。例如,設(shè)置top :10px;是表示移動后的元素相對于初始位置向下移動10px牛郑。
    舉例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>相對定位</title>
    <style>
        html,body {
            margin: 0;
            bottom: 0;
        }
        .content {
            display: inline-block;
            width: 100px;
            height: 100px;
            border: 1px solid red;
            position: relative;
            left: 100px;
            top: 80px;
        }
    </style>
</head>
<body>
    <div class="content">
    <p>段落</p>
    饑人谷
    </div>
    相對定位脫離文檔流了嗎怠肋?
    <p>下面的段落位置有變化嗎?</p>
</body>
</html>

移動前效果:



移動后效果:



從圖中可以看出淹朋,class屬性名是content的div元素笙各,相對于原來的位置是向右移動100px,向下移動80px础芍。還可以看出杈抢,移動前后,它周圍的元素的位置并沒有發(fā)生變化仑性』搪ィ可以看出,元素相對定位后诊杆,一開始占據(jù)的空間還存在歼捐,并沒有脫離文檔流。
相對定位主要用于為絕對定位提供定位的參考祖先元素晨汹。
  • 3.position: absolute;設(shè)置元素相對于static定位以外的第一個祖先元素(offset parent)進(jìn)行定位,元素的位置通過 left, top, right 以及 bottom屬性進(jìn)行規(guī)定豹储。
    舉例:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>絕對定位</title>
    <style>
        .content div {
            width: 100px;
            height: 100px;
            border: 1px solid red;
            margin: 20px;
        }
        .content {
            width: 500px;
            position: relative;
            border: 1px solid;
            left: 100px;
            top: 100px;
        }
        .item2 {
            position: absolute;
            right: 20px;
            top: 20px;
        }
    </style>
</head>
<body>
  <div class="content">
     <div class="item1">饑人谷1</div>
     <div class="item2">絕對定位</div>
     <div class="item3">饑人谷2</div>
  </div>
</body>
</html>

效果:



看圖可知,item2是相對于它的設(shè)置了relative的父元素content進(jìn)行位移的淘这。
絕對定位主要用在邊緣對齊颂翼,九宮格效果等方面晃洒。

參考css絕對定位的應(yīng)用

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

由問題2得出:
absolute偏移的參考點(diǎn)是具有position屬性(除了static屬性)的最近的祖先元素。
relative偏移的參考點(diǎn)是元素本身的初始位置朦乏。
fixed偏移的參考點(diǎn)是瀏覽器窗口球及。

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

z-index的作用:為了表示三維立體的概念如顯示元素的上下層的疊加順序引入了z-index屬性。z-index屬性設(shè)置一個定位元素沿 z 軸的位置呻疹,z 軸定義為垂直延伸到顯示區(qū)的軸吃引。數(shù)值越大離用戶越近,顯示在越前面刽锤。
使用:z-index 屬性設(shè)置元素的堆疊順序镊尺。擁有更高堆疊順序的元素總是會處于堆疊順序較低的元素的前面〔⑺迹可以是負(fù)值庐氮。只能用在定位元素上。
舉例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>z-index</title>
    <style>
        .content div {
            width: 100px;
            height: 100px;
        }
        .content {
         position: relative;
        }
        .item1 {
            background: #f00;
        }
        .item2 {
            background: #0f0;
            position: absolute;
            top: 30px;
            left: 20px;
            
        }
        .item3 {
            background: #00f;
            position: absolute;
            top: 50px;
            left: 50px;
        }
    </style>
</head>
<body>
    <div class="content">
        <div class="item1"></div>
        <div class="item2"></div>
        <div class="item3"></div>
    </div>
</body>
</html>

此時效果:


默認(rèn)不設(shè)置z-index時值是0宋彼。此時弄砍,三個div透明度一樣,默認(rèn)div后面的顯示覆蓋前面的顯示输涕。item3在最上面音婶,遮住了item1和item2。
首先看莱坎,在沒有定位的元素上設(shè)置z-index衣式,有沒有效果。對item1檐什,添加z-index: 1;,

.item1 { 
     background: #f00;
     z-index: 1;
 }

效果:



item1的紅色方塊并沒有顯示在前面碴卧。
item1加上position(除了static),
代碼:

    .item1 {
            background: #f00;
            position: absolute;
            z-index: 1;
        }

效果:



item1顯示在前面乃正。
看看數(shù)值大小對位置的影響:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>z-index</title>
    <style>
        .content div {
            width: 100px;
            height: 100px;
        }
        .content {
         position: relative;
        }
        .item1 {
            background: #f00;
            position: absolute;
            z-index: 2;
        }
        .item2 {
            background: #0f0;
            position: absolute;
            top: 30px;
            left: 20px;
            opacity: 0.6;
            z-index: 3;
            
        }
        .item3 {
            background: #00f;
            position: absolute;
            top: 50px;
            left: 50px;
            z-index: 1;
        }
    </style>
</head>
<body>
    <div class="content">
        <div class="item1"></div>
        <div class="item2"></div>
        <div class="item3"></div>
    </div>
</body>
</html>

效果:



可以看出螟深,z-index大的值顯示在外面。

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

position:relative和負(fù)margin都可以使元素位置發(fā)生偏移烫葬。區(qū)別在于界弧,position:relative元素發(fā)生偏移時,初始空間還被占據(jù)著搭综。而負(fù)margin則不再占據(jù)初始空間垢箕。
舉例:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>相對定位</title>
  <style>
      .content {
          width: 100px;
          height: 100px;
          border: 1px solid red;
      }
      .pa {
          width: 100px;
          height: 100px;
          display: inline-block;
          border: 1px solid red;
         /*margin-top: -20px;
          margin-left: -20px;*/
          /*position: relative;
          top: -20px;
          left: -20px;*/
      }
      .item {
          width: 100px;
          height: 100px;
          border: 1px solid red;
      }
  </style>
</head>
<body>
  <div class="content">
  <p>段落</p>
  饑人谷
  </div>
  <div class="pa">下面的段落位置有變化嗎?</div>
  <span>下面的段落位置有變化嗎兑巾?</span>
  <div class="item">下面的段落位置有變化嗎条获?</div>
</body>
</html>

未設(shè)置position和負(fù)margin時,效果:



設(shè)置

          position: relative;
          top: -20px;
          left: -20px;

效果:



設(shè)置

          margin-top: -20px;
          margin-left: -20px;

效果:



可以看出元素設(shè)置position:relative時蒋歌,后面的元素位置不變動帅掘。負(fù)margin時委煤,后面的元素也跟著變動。

6.如何讓一個固定寬高的元素在頁面上垂直水平居中?

可以用absolute和負(fù)margin實現(xiàn)修档。
代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>垂直水平居中</title>
    <style>
        .content {
            position: relative;
            height: 300px;
            border: 1px solid;
        }
        .item {
            width: 200px;
            height: 200px;
            border: 1px solid red;
            position: absolute;
            left: 50%;
            top: 50%;
            margin-left: -100px;
            margin-top: -100px;

        }
    </style>
</head>
<body>
    <div class="content">
        <div class="item">饑人谷</div>
    </div>
</body>
</html>

效果:


7.浮動元素有什么特征碧绞?對其他浮動元素、普通元素吱窝、文字分別有什么影響?

浮動元素脫離了文檔流讥邻,浮動模型是一種可視化格式模型,浮動的框可以左右移動(根據(jù)float屬性值而定)院峡,直到它的外邊緣碰到包含框或者另一個浮動元素的框的邊緣兴使。

  • 對其他浮動元素的影響,一個元素浮動如果碰到另一個浮動元素的邊框照激,會緊貼著那個邊框水平放置发魄,如果父元素寬度不夠則會自動下移。
    舉例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮動元素</title>
    <style>
        .nav {
            width: 280px;
            height: 300px;
            border: 1px solid;
        }
        .box {
            width: 100px;
            height: 100px;
        }
        .item1 {
            background: #f00;
            float: left;
        }
        .item2 {
            background: #0f0;
            float: left;
        }
        .item3 {
            background: #00f;
            float: left;
        }
    </style>
</head>
<body>
  <div class="nav">
    <div class="box item1">1</div>
    <div class="box item2">2</div>
    <div class="box item3">3</div>
  </div>
</body>
</html>

效果:



nav的寬度280px,而item1,item2,item3,分別是100px俩垃,一行放不下三個塊元素励幼。item3下移。

  • 對普通元素的影響吆寨,同級的普通塊級元素會忽略浮動元素的存在赏淌。
    舉例:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>浮動元素</title>
    <style>
        .nav {
            width: 280px;
            height: 300px;
            border: 1px solid;
        }
        .item1 {
            width: 100px;
            height: 100px;
            background: #f00;
            float: left;
            opacity: 0.4;
        }
        .item2 {
            background: #0f0;
            height: 120px;
        }
        .item3 {
            width: 100px;
            height: 100px;
            background: #00f;
            float: left;
            opacity: 0.6;
        }
        .item4 {
            background: #ccc;
        }
    </style>
</head>
<body>
  <div class="nav">
    <div class="item1">1</div>
    <div class="item2">
    浮動</div>
    <div class="item3">3</div>
    <div class="item4">饑人谷</div>
  </div>
</body>
</html>

效果:



如圖示踩寇,item1啄清,item3浮動碳竟,脫離了文檔流喂柒,item2,item4的位置不受影響,仍是倦春,占據(jù)一行睛榄,從上到下排列荣茫。
浮動元素的父級元素的高不會被自動撐開。
把上面的例子中的nav的高度設(shè)置去掉场靴,則出現(xiàn)這種效果:



可以看出啡莉,浮動元素沒有撐起父級元素,靠的是文本流內(nèi)的同級塊級元素?fù)纹鸬摹?
  • 對文字的影響旨剥,從上面的同級元素的例子中中也可以看出咧欣,文字受浮動元素的影響。浮動元素占據(jù)的空間轨帜,其他元素的文字不能占據(jù)魄咕,只能挨著浮動元素排列。

8.清除浮動指什么? 如何清除浮動?

清除浮動指清除浮動帶來的影響蚌父。主要包括對上級元素和對同級元素的影響哮兰。對上級元素的影響如上題所說毛萌,浮動元素不會撐起父級元素的高度。對同級元素喝滞,是同級元素會忽略浮動元素所占的空間阁将,需要浮動元素所占的空間不被忽略。
清除浮動可以用overflow清除父級元素的浮動囤躁。
第七題的例子冀痕,父元素沒有被完全撐開,在父元素上加上overflow: hidden;狸演,效果則變成下圖所示:


父元素被撐開言蛇。
還可以用clear清除浮動,clear: xxx;表示清除元素xxx方向的浮動宵距。
對父元素腊尚,加

.nav:after {
            content: '';
            display: block;
            clear: left;
        }

效果:


偽類元素:after相當(dāng)于在父元素中增加了一個標(biāo)簽。
對于同級元素满哪,.item2,item4可以加上clear: left;,
效果:

因為.item1設(shè)置了透明度為0.4婿斥,所以變成圖中的顏色。
可以看到哨鸭,這時父元素也被撐開了民宿。

本文版權(quán)歸作者和饑人谷所有,轉(zhuǎn)載請注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末像鸡,一起剝皮案震驚了整個濱河市活鹰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌只估,老刑警劉巖志群,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蛔钙,居然都是意外死亡锌云,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進(jìn)店門吁脱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來桑涎,“玉大人,你說我怎么就攤上這事兼贡」ダ洌” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵紧显,是天一觀的道長讲衫。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么涉兽? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任招驴,我火速辦了婚禮,結(jié)果婚禮上枷畏,老公的妹妹穿的比我還像新娘别厘。我一直安慰自己,他們只是感情好拥诡,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布触趴。 她就那樣靜靜地躺著,像睡著了一般渴肉。 火紅的嫁衣襯著肌膚如雪冗懦。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天仇祭,我揣著相機(jī)與錄音披蕉,去河邊找鬼。 笑死乌奇,一個胖子當(dāng)著我的面吹牛没讲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播礁苗,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼爬凑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了试伙?” 一聲冷哼從身側(cè)響起嘁信,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎迁霎,沒想到半個月后吱抚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體百宇,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡考廉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了携御。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昌粤。...
    茶點(diǎn)故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖啄刹,靈堂內(nèi)的尸體忽然破棺而出涮坐,到底是詐尸還是另有隱情,我是刑警寧澤誓军,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布袱讹,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捷雕。R本人自食惡果不足惜椒丧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望救巷。 院中可真熱鬧壶熏,春花似錦、人聲如沸浦译。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽精盅。三九已至帽哑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間叹俏,已是汗流浹背祝拯。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留她肯,地道東北人佳头。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像晴氨,于是被迫代替她去往敵國和親康嘉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評論 2 361

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

  • 一、文檔流的概念指什么枝哄?有哪些方式可以讓元素脫離文檔流? 文檔里指元素在文檔中的位置由元素在html里的位置決定肄梨,...
    dengpan閱讀 542評論 0 3
  • 一众羡、文檔流的概念指什么?有哪種方式可以讓元素脫離文檔流? 1蓖租、文檔流指的是元素在排列布局中所占用的位置粱侣,具體的說是...
    鴻鵠飛天閱讀 786評論 0 0
  • 學(xué)習(xí)建議 定位齐婴、浮動是 CSS 核心知識點(diǎn),必須熟練掌握稠茂。 1.文檔流的概念指什么柠偶?有哪種方式可以讓元素脫離文檔流...
    饑人谷_任磊閱讀 1,093評論 0 3
  • 浮動元素有什么特征?對父容器、其他浮動元素诱担、普通元素鲫售、文字分別有什么影響? 特征: 浮動元素會脫離正常的文檔流,元...
    饑人谷_哈嚕嚕閱讀 876評論 0 0
  • 文檔流的概念指什么?有哪種方式可以讓元素脫離文檔流? 文檔流就是瀏覽器在頁面上擺放HTML元素所用的方法匀哄。瀏覽器從...
    coolheadedY閱讀 566評論 0 0