28 定位問題

2021-10-07 13:01:23 字數 4088 閱讀 7730

本文是在學習css時做的學習筆記,所有筆記內容為 css學習筆記

"en"

>

"utf-8"

>

meta<

/title>

<

/head>

1、定位(position)

- 定位是一種更加高階的布局手段

- 通過定位,可以將乙個元素,擺放到頁面任意位置

- 使用position 屬性設定定位

可選值-

static 預設值,元素是靜止的沒有開啟定位

- relative 開啟元素相對定位

- absolute 開啟元素的絕對定位

- fixed 開啟元素的固定定位

- sticky 開啟元素的粘滯定位

2、相對定位

- 元素的position 屬性設定為relative 時開啟了元素的相對定位

- 相對定位特點

1、元素開啟相對定位後,如果不設定偏移量,元素不會發生任何變化

2、相對定位是參照與元素在文件流中的位置進行定位的

3、相對定位會提公升元素層級,

4、相對定位不會使元素脫離文件流

5、相對定位不會改變元素的性質,塊還是塊,行內元素還是行內元素

- 偏移量(offset)

- 當元素開啟了定位以後,可以通過偏移量來設定元素的位置,不會影響其它元素

top

- 定位元素和定位位置上邊距離

bottom

- 定位元素和定位位置下邊距離

- 定位元素垂直方向由top 和bottom兩個屬性控制

通常情況下,只會使用乙個

left

- 定位元素和定位位置左側距離

right

- 定位元素和定位位置右側距離

- 水平方向由兩個屬性控制,通常只會使用乙個

body

.box1

.box2

.box3

<

/style>

="box1"

>

1<

/div>

="box2"

>

2<

/div>

="box3"

>

3<

/div>

<

/body>

<

/html>

"en"

>

"utf-8"

>

meta<

/title>

<

/head>

1、絕對定位

-當元素的position屬性值,設定為absolute,則開啟了元素的絕對定位

- 絕對定位特點

1、開啟絕對定位後,如果不設定偏移量,元素位置不會發生變化

2、開啟絕對定位後,元素會從文件流中脫離

3、絕對定位會改變元素的性質,行內元素變成塊元素,快的寬高 被內容撐開

4、絕對定位會使元素提公升乙個層級

5、絕對定位元素是相對於其包含快進行定位

包含快(containing block)

正常情況下:

包含快就是離當前元素最近的祖先塊元素

- 絕對定位的包含塊:

包含塊就是離它最近的開啟了定位的祖先元素

如果所有的祖先元素都沒有開啟定位,則相對於根元素進行定位

根元素就是它的包含快

-html

(根元素,初始包含塊)*/

body

.box1

.box2

.box3

<

/style>

="box1"

>

1<

/div>

="box2"

>

2<

/div>

="box3"

>

3<

/div>

<

/body>

<

/html>

"en"

>

"utf-8"

>

meta<

/title>

<

/head>

1、固定定位

- 將元素的position 屬性設定為fixed則開啟了元素的固定定位

- 固定定位也是一種絕對定位,所以固定定位的大部分特點都和絕對定位一樣

唯一不同的是,固定定位永遠參照瀏覽器的可視視窗進行定位

固定定位的元素,不會隨網頁的滾動條滾動

*/body

.box1

.box2

.box3

<

/style>

="box1"

>

1<

/div>

="box2"

>

2<

/div>

="box3"

>

3<

/div>

<

/body>

"en"

>

"utf-8"

>

meta<

/title>

<

/head>

1、粘滯定位

- 當元素的position 屬性設定位sticky時開啟了元素的粘滯定位

- 粘滯定位和相對定位特點基本一致,不同的是可以在元素到達某個位置時

將其固定

body

.box1

.box2

.box3

<

/style>

="box1"

>

1<

/div>

="box2"

>

2<

/div>

="box3"

>

3<

/div>

<

/body>

html lang=

"en"

>

"utf-8"

>

meta<

/title>

<

/head>

.box1

// 水平居中,設定絕對定位,left\right設定為0

// margin-left、margin-right設定為auto

.box2

// 垂直居中,絕對定位後

// top、bottom設定為0,margin-top、margin-bottom設定為auto

.box2

// 垂直、水平 居中

.box2

1、開啟定位後

水平布局

left+margin-left+border-left+padding-left+width+padding-right+

border-right+margin-right+right = 包含快的內容區的寬度

當我們開啟了絕對定位後

-水平方向的布局等式需要新增left 和 right兩值

此時規則和之前一樣只是多新增了兩個值,

當發生過度約束:

如果 9 個值中沒有 auto ,則自動調整right 以使等式滿足

如果有auto,則自動調整 auto的值以使等式滿足

- 可設定 auto的值

margin width left right

- 因為 left 和 right 的值預設是auto ,所以如果不知道left 和right

則等式不滿足時,會自動調整這兩個值

2、垂直方向布局的等式也必須要滿足

top+marign-top/bottom+padding-top/bottom+border-top/bottom=

包含塊內容區的高度

<

/style>

="box1"

>

="box2"

>

<

/div>

<

/div>

<

/body>

C 問題28 虛繼承

乙個派生類是由多個基類繼承過來的 如下 普通繼承 沒有使用虛基類 includeusing namespace std 基類a class a class b public a class c public a class d public b,public c int main 結果如下 菱形繼承...

CSS定位問題

在看這篇文章是,希望大家對css盒式模型有所了解,不清楚的點這裡。一 定位概述 在說明定位問題前,我們先聊聊div這個元素。通常我們把p h1或div元素常常稱為塊級元素。這意味著這些元素顯示為一塊內容,即 塊框 塊框從上到下乙個接乙個地垂直排列。與之相反,strong和span等元素稱為行內元素,...

絕對定位問題

一 使用絕對定位元素水平居中 1.需要設定高度 高度已知 element2.css3 transform代替margin,不過瀏覽器對其支援度低 ie10以上,高度可以不設定 element 3.margin 0 auto居中 top right bottom left均為0,高度可以不設定 ele...