成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

細(xì)說css中的position屬性

ssshooter / 989人閱讀

摘要:塊級元素生成一個矩形框,作為文檔流的一部分,行內(nèi)元素則會創(chuàng)建一個或多個行框,置于其父元素中。相對定位,相對于自己的初始位置,不脫離文檔流。

有過css開發(fā)經(jīng)驗(yàn)的同學(xué),對于position這個屬性一定不會陌生,然而這個熟悉的屬性確是面試題中的常客,也就說明了該屬性在css的世界是有一定的江湖地位的,那么我們就來詳細(xì)的說說position這個屬性。
在w3school中是這樣解釋position屬性的

定義和用法

position 屬性規(guī)定元素的定位類型。

說明

這個屬性定義建立元素布局所用的定位機(jī)制。任何元素都可以定位,不過絕對或固定元素會生成一個塊級框,而不論該元素本身是什么類型。相對定位元素會相對于它在正常流中的默認(rèn)位置偏移。

CSS 定位機(jī)制

CSS 有三種基本的定位機(jī)制:普通流、浮動和絕對定位。  
除非專門指定,否則所有框都在普通流中定位。也就是說,普通流中的元素的位置由元素在 (X)HTML 中的位置決定。
塊級框從上到下一個接一個地排列,框之間的垂直距離是由框的垂直外邊距計(jì)算出來。
行內(nèi)框在一行中水平布置??梢允褂盟絻?nèi)邊距、邊框和外邊距調(diào)整它們的間距。但是,垂直內(nèi)邊距、邊框和外邊距不影響行內(nèi)框的高度。由一行形成的水平框稱為行框(Line Box),行框的高度總是足以容納它包含的所有行內(nèi)框。不過,設(shè)置行高可以增加這個框的高度。

position屬性對應(yīng)的值有

position: static;

position: inherit;

position: relative;

position: absolute;

position: fixed;

position: sticky;(新的屬性值)

1、position: static

默認(rèn)值。沒有定位,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)。元素框正常生成。塊級元素生成一個矩形框,作為文檔流的一部分,行內(nèi)元素則會創(chuàng)建一個或多個行框,置于其父元素中。

2、position: inherit

inherit值如同其他css屬性的 inherit 值,即繼承父元素的position值。

3、position: relative

相對定位,相對于自己的初始位置,不脫離文檔流。也就是說元素框偏移某個距離,元素仍保持其未定位前的形狀,它原本所占的空間仍保留。
舉個例子,html結(jié)構(gòu)

div1
div2
div3

css樣式

div {
    width: 100px;
    height: 100px;
}

.div1 {
    background: #ffff00;
}

.div2 {
    background: #00ff00;
    position: relative;
    top: 40px;
    left: 40px;
}

.div3 {
    background: #0000ff;
}

結(jié)果

其中紅色框?yàn)?b>div2的初始位置,由于div2設(shè)置了position:relative;top: 40px;left: 40px;,所以該元素相對于自己的初始位置的上面40px、左邊40px。同時,其他元素的位置未被改變。

4、position: absolute

絕對定位的元素的位置相對于最近的已定位祖先元素,如果元素沒有已定位的祖先元素,那么它的位置相對于最初的包含塊。
例子中我們把div2的樣式稍作改動

.div2 {
    background: #00ff00;
    position: absolute;
    top: 40px;
    left: 40px;
}

由于div2的祖先元素都沒有定位,所以相對于最初的包含塊也就是body,同時由于絕對定位脫離文檔流,所以div3占了div2原來的位置。

5、position: fixed

fixed元素脫離正常的文檔流,所以它與absolute元素很相似,同樣會被周圍元素忽略,支持top,bottom,left,right屬性,但fixed 元素正如它的名字一樣,它是固定在屏幕的某個位置,它不會隨著瀏覽器滾動條的滾動而一起滾動。比如我們常見的回到頂部的功能,按鈕一直在瀏覽器的左下方,不管滾動條如何滾動,該按鈕都會在左下方的固定的位置,這個需求就可以使用position: fixed來完成。
但需要注意的是,position: fixed是有兼容性問題的,不支持IE6、IE7、IE8。可以通過給該元素設(shè)置position: absolute并獲取滾動條距離頂部高度加上某個固定高度來實(shí)現(xiàn)。

6、position: sticky

很多同學(xué)會對該屬性比較陌生,這是一個相對來講比較新的屬性值。
sticky 的本意是粘貼,可以稱之為粘性定位,但在 css 中的表現(xiàn)更像是吸附。這是一個結(jié)合了 position:relativeposition:fixed 兩種定位功能于一體的特殊定位。常見的吸頂、吸底(網(wǎng)站的頭部返回欄,底部切換欄之類)的效果用這個屬性非常適合。例如下面淘寶這個效果

當(dāng)元素距離頁面視口(Viewport,也就是fixed定位的參照)頂部距離大于 0px 時,元素以 relative 定位表現(xiàn),而當(dāng)元素距離頁面視口小于 0px 時,元素表現(xiàn)為 fixed 定位,也就會固定在頂部。

注意

須指定 top、right、bottom、left 四個閾值其中之一,才可使粘性定位生效。否則其行為與相對定位相同。

并且 topbottom 同時設(shè)置時,top 生效的優(yōu)先級高,leftright 同時設(shè)置時,left 的優(yōu)先級高。

設(shè)定為 position:sticky 元素的任意父節(jié)點(diǎn)的 overflow 屬性必須是 visible,否則 position:sticky 不會生效。如果 position:sticky 元素的任意父節(jié)點(diǎn)定位設(shè)置為 overflow:hidden,則父容器無法進(jìn)行滾動,所以 position:sticky 元素也不會有滾動然后固定的情況。如果 position:sticky 元素的任意父節(jié)點(diǎn)定位設(shè)置為 position:relative | absolute | fixed,則元素相對父元素進(jìn)行定位,而不會相對 viewport 定位。

達(dá)到設(shè)定的閥值,也就是設(shè)定了 position:sticky 的元素表現(xiàn)為 relative 還是 fixed是根據(jù)元素是否達(dá)到設(shè)定了的閾值決定的。

兼容性 caniuse

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/115792.html

相關(guān)文章

  • 細(xì)說opacity和層疊上下文

    摘要:上篇文章半透明效果的屬性和場景最后提到了層疊上下文,在這篇文章中就說說和層疊上下文。探索一使用生成的層疊上下文會壓蓋基本元素。仔細(xì)一想,層疊上下文的概念還是挺好理解的,比和都簡單一些。 上篇文章《CSS半透明效果的屬性和場景》最后提到了層疊上下文,在這篇文章中就說說opacity和層疊上下文。建議讀者在讀本篇文章之前,先仔細(xì)閱讀張鑫旭大神的《深入理解CSS中的層疊上下文和層疊順序》,并...

    MrZONT 評論0 收藏0
  • 一些面試時關(guān)于 CSS 的問題

    摘要:可以試試去掉的會發(fā)生很奇妙的事呢附加關(guān)于子元素設(shè)置為而引發(fā)的問題。附加關(guān)于開啟硬件加速提升網(wǎng)站動畫渲染性能問題。合并后的外邊距的高度等于兩個發(fā)生合并的外邊距的高度中的較大者。 1. 水平垂直居中問題 這可以說是最經(jīng)典的問題了,水平垂直居中,這個問題從入門前端一直到面試,甚至到工作之后都會時不時遇到,最近的面試也被問過這之類的問題,這里還是好好總結(jié)一番,以作備忘。公用 HTML 部分: ...

    HackerShell 評論0 收藏0
  • CSS的再深入5(更新中···)

    摘要:頁面布局結(jié)構(gòu)層搭我們的頁面框架。不需要使用浮動解決的問題盡量不用。使用浮動之后會使該元素脫標(biāo),宋體并且該元素的宋體。備注以后我們做定位的時候,盡量保持子絕父相。宋體宋體是一種協(xié)議,就是客戶端和服務(wù)端鏈接的一種協(xié)議。頁面布局 結(jié)構(gòu)層:搭我們的頁面框架。 布局層:針對框架內(nèi)部結(jié)構(gòu)進(jìn)行排版。 不需要使用浮動解決的問題盡量不用。 使用浮動之后會使該元素脫標(biāo),并且該元素的margin。 div 盒子模...

    番茄西紅柿 評論0 收藏0
  • CSS布局 ——從display,position, float屬性談起

    摘要:生成相對定位的元素,相對于元素本身正常位置進(jìn)行定位。元素的位置通過以及屬性進(jìn)行規(guī)定。因?yàn)榻^對定位與文檔流無關(guān),所以絕對定位的元素可以覆蓋頁面上的其他元素,可以通過屬性控制疊放順序,越高,元素位置越靠上。頁面布局,或者是在頁面上做些小效果的時候經(jīng)常會用到 display,position和float 屬性,如果對它們不是很了解的話,很容易出現(xiàn)一些莫名其妙的效果,痛定思痛讀了《CSS Maste...

    hover_lew 評論0 收藏0
  • CSS半透明效果的屬性和場景

    摘要:在中與半透明效果相關(guān)的屬性有兩個和。屬性的值規(guī)定透明度。以及更早的版本支持替代的屬性。接下來通過場景來描述半透明效果的實(shí)現(xiàn)。圖片出現(xiàn)半透明效果,如果將文字設(shè)置為白色,文字的半透明效果會很小。 在CSS中與半透明效果相關(guān)的屬性有兩個:opacity和rgba。opacity屬性的值規(guī)定透明度。從 0.0 (完全透明)到 1.0(完全不透明)。設(shè)置opacity元素的所有后代元素會隨著一起...

    NoraXie 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<