css position

簡介

CSS position屬性用于指定一個元素在文檔中的定位方式朝扼。top,right霎肯,bottom 和 left 屬性則決定了該元素的最終位置擎颖。

定位類型

  • 定位元素(positioned element)是其計算后位置屬性為 relative, absolute, fixed 或 sticky 的一個元素。
  • 相對定位元素(relatively positioned element)是計算后位置屬性為 relative 的元素观游。
  • 絕對定位元素(absolutely positioned element)是計算后位置屬性為 absolute 或 fixed 的元素搂捧。
  • 粘性定位元素(stickily positioned element)是計算后位置屬性為 sticky 的元素。

大多數情況下备典,height和width 被設定為auto的絕對定位元素,按其內容大小調整尺寸意述。但是提佣,被絕對定位的元素可以通過指定top和bottom ,保留height未指定(即auto)荤崇,來填充可用的垂直空間拌屏。它們同樣可以通過指定left 和 right并將width 指定為auto來填充可用的水平空間。

除了剛剛描述的情況(絕對定位元素填充可用空間):

  • 如果top和bottom都被指定(技術上术荤,而不是auto)倚喂,top 勝出。
  • 如果指定了left 和right兩側,則在direction為ltr(英語端圈,水平日語等)時left 贏焦读,并且在direction為rtl時right贏(阿拉伯文,希伯來文等)舱权。

語法

position 屬性被指定為從下面的值列表中選擇的單個關鍵字矗晃。

取值

static

該關鍵字指定元素使用正常的布局行為,即元素在文檔常規(guī)流中當前的布局位置宴倍。此時 top, right, bottom, left 和 z-index 屬性無效张症。

relative

該關鍵字下,元素先放置在未添加定位時的位置鸵贬,再在不改變頁面布局的前提下調整元素位置(因此會在此元素未添加定位時所在位置留下空白)俗他。position:relative 對 table-*-group, table-row, table-column, table-cell, table-caption 元素無效。

absolute

不為元素預留空間阔逼,通過指定元素相對于最近的非 static 定位祖先元素的偏移兆衅,來確定元素位置。絕對定位的元素可以設置外邊距(margins)颜价,且不會與其他邊距合并涯保。

fixed

不為元素預留空間,而是通過指定元素相對于屏幕視口(viewport)的位置來指定元素位置周伦。元素的位置在屏幕滾動時不會改變夕春。打印時,元素會出現在的每頁的固定位置专挪。fixed 屬性會創(chuàng)建新的層疊上下文及志。當元素祖先的 transform 屬性非 none 時,容器由視口改為該祖先寨腔。

sticky

盒位置根據正常流計算(這稱為正常流動中的位置)速侈,然后相對于該元素在流中的 flow root(BFC)和 containing block(最近的塊級祖先元素)定位倚搬。在所有情況下(即便被定位元素為 table 時)乾蛤,該元素定位均不對后續(xù)元素造成影響家卖。當元素 B 被粘性定位時上荡,后續(xù)元素的位置仍按照 B 未定位時的位置來確定。position: sticky 對 table 元素的效果與 position: relative 相同纳账。

常見語法

static | relative | absolute | sticky | fixed

示例

相對定位

相對定位的元素是在文檔中的正常位置偏移給定的值塞祈,但是不影響其他元素的偏移帅涂。下面的例子中媳友,注意未應用定位的其它元素是按照 "Two" 在正常位置的情況下進行布局的醇锚。
HTML 內容

<div class="box" id="one">One</div>
<div class="box" id="two">Two</div>
<div class="box" id="three">Three</div>
<div class="box" id="four">Four</div>

CSS

.box {
  display: inline-block;
  width: 100px;
  height: 100px;
  background: red;
  color: white;
}
#two {
  position: relative;
  top: 20px;
  left: 20px;
  background: blue;
}
image.png

絕對位置

相對定位的元素并未脫離文檔流焊唬,而絕對定位的元素則脫離了文檔流赶促。在布置文檔流中其它元素時鸥滨,絕對定位元素不占據空間。絕對定位元素相對于最近的非 static 祖先元素定位老速。當這樣的祖先元素不存在時橘券,則相對于ICB(inital container block, 初始包含塊)卿吐。// 例子不嚴謹,待修正下面的示例中鬓梅,"Three" 元素不存在應用了定位的祖先元素谨湘,因此該元素相對于緊鄰的祖先(iframe 中的 <body> 元素)絕對定位坊罢。
HTML

<div class="box" id="one">One</div>
<div class="box" id="two">Two</div>
<div class="box" id="three">Three</div>
<div class="box" id="four">Four</div>

CSS

.box { 
   display: inline-block; 
   background: red; 
   width: 100px; 
   height: 100px; 
   float: left; 
   margin: 20px; 
   color: white; 
}

#three { 
   position: absolute; 
   top: 20px; 
   left: 20px; 
}
image.png

固定位置

固定定位與絕對定位相似活孩,但元素的包含塊為 viewport 視口憾儒。該定位方式常用于創(chuàng)建在滾動屏幕時仍固定在相同位置的元素乃沙。在下面的示例中警儒,"One" 元素定位在離頁面頂部 80px蜀铲,離頁面左側 20px 的位置。
HTML

<div class="outer">
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam congue tortor eget pulvinar lobortis.
    Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam ac dolor augue.
    Pellentesque mi mi, laoreet et dolor sit amet, ultrices varius risus. Nam vitae iaculis elit.
    Aliquam mollis interdum libero. Sed sodales placerat egestas. Vestibulum ut arcu aliquam purus viverra dictum vel sit amet mi.
    Duis nisl mauris, aliquam sit amet luctus eget, dapibus in enim. Sed velit augue, pretium a sem aliquam, congue porttitor tortor.
    Sed tempor nisl a lorem consequat, id maximus erat aliquet. Sed sagittis porta libero sed condimentum.
    Aliquam finibus lectus nec ante congue rutrum. Curabitur quam quam, accumsan id ultrices ultrices, tempor et tellus.
  </p>
  <p>
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam congue tortor eget pulvinar lobortis.
    Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nam ac dolor augue.
    Pellentesque mi mi, laoreet et dolor sit amet, ultrices varius risus. Nam vitae iaculis elit.
    Aliquam mollis interdum libero. Sed sodales placerat egestas. Vestibulum ut arcu aliquam purus viverra dictum vel sit amet mi.
    Duis nisl mauris, aliquam sit amet luctus eget, dapibus in enim. Sed velit augue, pretium a sem aliquam, congue porttitor tortor.
    Sed tempor nisl a lorem consequat, id maximus erat aliquet. Sed sagittis porta libero sed condimentum.
    Aliquam finibus lectus nec ante congue rutrum. Curabitur quam quam, accumsan id ultrices ultrices, tempor et tellus.
  </p>
  <div class="box" id="one">One</div>
</div>

CSS

.box {
  background: red;
  width: 100px;
  height: 100px;
  margin: 20px;
  color: white;
}
#one {
  position: fixed;
  top: 80px;
  left: 10px;
}
.outer {
  width: 500px;
  height: 300px;
  overflow: scroll;
  padding-left: 150px;
}
image.png

粘性定位

粘性定位是相對定位和固定定位的混合隆夯。元素在跨越特定閾值前為相對定位蹄衷,之后為固定定位。例如:


引用自 mdn:https://developer.mozilla.org/zh-CN/docs/Web/CSS/position

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末睦番,一起剝皮案震驚了整個濱河市托嚣,隨后出現的幾起案子示启,更是在濱河造成了極大的恐慌夫嗓,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件矩父,死亡現場離奇詭異窍株,居然都是意外死亡攻柠,警方通過查閱死者的電腦和手機瑰钮,發(fā)現死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門飞涂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人士八,你說我怎么就攤上這事梁呈」倏ǎ” “怎么了寻咒?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵毛秘,是天一觀的道長叫挟。 經常有香客問我抹恳,道長,這世上最難降的妖魔是什么健霹? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任骤公,我火速辦了婚禮阶捆,結果婚禮上洒试,老公的妹妹穿的比我還像新娘垒棋。我一直安慰自己叼架,他們只是感情好衣撬,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布具练。 她就那樣靜靜地躺著扛点,像睡著了一般陵究。 火紅的嫁衣襯著肌膚如雪眠饮。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天铜邮,我揣著相機與錄音君仆,去河邊找鬼。 笑死牲距,一個胖子當著我的面吹牛返咱,可吹牛的內容都是我干的。 我是一名探鬼主播牍鞠,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼咖摹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了难述?” 一聲冷哼從身側響起萤晴,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤吐句,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體文虏,經...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出穿肄,到底是詐尸還是另有隱情脑溢,我是刑警寧澤验庙,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布违寿,位于F島的核電站,受9級特大地震影響阱当,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一帆啃、第九天 我趴在偏房一處隱蔽的房頂上張望诽偷。 院中可真熱鬧卖子,春花似錦、人聲如沸羽利。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間柒巫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工亭畜, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓嗅战,卻偏偏與公主長得像仗哨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子旨椒,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案勤庐? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,748評論 1 92
  • CSS的position總是屬性很容易讓人弄混~ 為了仔細區(qū)別它們录择,所以今天總結一下CSS的position屬性~...
    fehysunny閱讀 2,916評論 0 7
  • title: css的position值date: 2018-04-27 23:00:00tags: positi...
    饑人谷_黃洪濤閱讀 1,173評論 0 0
  • CSS 中的 position 屬性用來設置元素的定位方式霹期。 position 的值有 static鸭轮、relati...
    Paranoid_K閱讀 1,126評論 0 2
  • 無戒365天極限挑戰(zhàn)營 第8天 小學篇 都說孩子的親媽在輔導孩子的作業(yè)的時候就不是親媽了邑蒋,網傳一個故事,夜深了樓上...
    溫潤如玉如你閱讀 235評論 3 3