知識點1:重置樣式

因不同瀏覽器對標籤的解析各不相同,重置css樣式可以讓標籤在不同瀏覽器下產生相同的效果,減少預設樣式可能帶來的問題。

通常將重置樣式寫在reset。css中,如

/*去掉邊界與修改預設字型*/

body

div

dl

dt

ul

li

h1

h2

h3

h4

h5

h6

input

form

a

p

textarea

{

margin

0

padding

0

font-family

“Helvetica Neue”

Helvetica

Arial

sans-serif

}

/*去掉列表前面的小點*/

ul

ol

li

{

list-style

none

}

/*去掉超連結下劃線*/

a

{

text-decoration

none

}

/*去掉圖片邊框*/

img

{

border

none

}

/*清除浮動*/

clearfloat

{

zoom

1

}

clearfloat

after

{

display

block

clear

both

content

“”

visibility

hidden

height

0

}

知識點2:元素水平居中

1。對於行內元素:對父元素設定text-align:center;

2。對於定寬塊級元素:設定左右margin為auto;

3。對於不定寬塊級元素:設定position:absolute, left:50%, transform:translate(-50%, 0);

4。flex佈局,justify-content:center;

知識點3:元素垂直居中

1。對於行內元素:設定父元素的line-height為父元素高度;

2。對於定高塊級元素:設定margin-top或margin-bottom為(父元素高度-子元素高度)/2;

3。對於不定高塊級元素:設定position:absolute, top:50%,transform:translate(0, -50%);

4。flex佈局,align-items:center;

知識點4:兩欄佈局

(假定左側固定寬度,右側自適應)

方法1:雙inline-block。將左右兩個div均設為display:inline-block;,用vertical-align:top;來實現頂端對齊,對父容器設定font-size:0;來消除div間的空格;

方法2:雙float。將左右兩個div均設為float:left;(或者另一個為right)。由於應用了浮動,父元素需要清除浮動;

方法3:左float+右margin-left。左div設為float:left;,右div的margin-left設為左div的寬度。注意清除浮動;

方法4:左absolute+右 margin-left。左div設為position:absolute;,右div的margin-left設為左div的寬度。需修改父容器position為relative。

知識點5:三欄佈局

(假定左右兩側為固定寬度,中間寬度自適應)

方法1:自身浮動法。左div左浮動,右div右浮動,中div的左右margin分別設為左右div的寬度。需要在html中將中div放最後;

方法2:絕對定位法。左div絕對定位於左上角,右div絕對定位於右上角,中div的左右margin分別設為左右div的寬度;

方法3:margin負值法。三欄均向左浮動,左div設margin-left:-100%,右div設margin-left為負的自身寬度,中div設width:100%。需要在html中將中div放最前。

知識點6:聖盃佈局

定義:

1。 header和footer佔螢幕全部寬度,高度固定;

2。 中間contaier部分是一個三欄佈局,left和right寬度固定,middle寬度自適應。

前端·CSS佈局基礎

實現:

1。header和footer設width:100%;

2。中間的三欄佈局用margin負值法來實現。會發現中間欄被左右兩欄各覆蓋了一部分內容;

3。給container設定padding-left和padding-right分別為左欄和右欄的寬度;

4。將左右兩欄設定為相對定位,並將左欄left設為負左欄寬度,右欄right設為負右欄寬度。

參考:

<!DOCTYPE html>

<

html

lang

=

“en”

>

<

head

>

<

meta

charset

=

“UTF-8”

>

<

title

>

聖盃佈局

title

>

<

style

type

=

“text/css”

>

body

{

margin

0

padding

0

}

header

footer

{

height

100

px

width

100

%

background-color

#bbbbbb

}

container

{

height

300

px

padding-left

200

px

padding-right

300

px

}

container

div

{

float

left

position

relative

}

left

{

width

200

px

height

300

px

background-color

#DC698A

margin-left

-100

%

left

-200

px

}

middle

{

width

100

%

height

300

px

background-color

#3EACDD

}

right

{

width

300

px

height

300

px

background-color

#8CB08B

margin-left

-300

px

right

-300

px

}

style

>

head

>

<

body

>

<

header

>

頭部

header

>

<

div

class

=

“container”

>

<

div

class

=

“middle”

>

中間欄

div

>

<

div

class

=

“left”

>

左欄

div

>

<

div

class

=

“right”

>

右欄

div

>

div

>

<

footer

>

底部

footer

>

body

>

html

>

知識點7:雙飛翼佈局

定義:雙飛翼佈局和聖盃佈局的區別在於如何處理中間欄被遮擋的問題。

實現:中間欄中再放置一個div用於顯示內容,其margin-left設為左邊欄寬度,margin-right設為右邊欄寬度。

其他:聖盃佈局和雙飛翼佈局都使得中間欄在DOM結構上優先,以便先行渲染。

知識點8:彈性佈局flex

彈性佈局flex是2009年W3C提出的一種新佈局,可以簡便、響應式地實現各種頁面佈局,較新版本瀏覽器均支援flex。

只需設定display:flex即可將某元素設為flex容器,其所有子元素自動成為容器成員,稱為flex項。flex項沿著兩個軸main axis(主軸)和cross axis(交叉軸)來佈局。

前端·CSS佈局基礎

彈性佈局有以下特點:

1。彈性佈局的專案(item)預設沒有間隔;

2。彈性佈局預設不改變專案的寬度;

3。彈性佈局預設改變專案的高度。如果專案沒有顯式指定高度,就將佔據容器的所有高度;

4。彈性佈局將使得子元素的float、clear和vertical-align屬性失效。

容器屬性有:

1。flex-direction:指定主軸方向。預設為row(從左到右排成一排),其他值有column(從上到下排成一排)、row-reverse和column-reverse;

2。flex-wrap:當專案在一條軸線上排不下時如何換行。預設為nowrap(不換行),其他值有wrap(換行)、wrap-reverse(換行且第一行在下方);

3。justify-content:控制flex項在主軸上的對齊方式。預設為flex-start(開始處對齊),其他值有flex-end(結束處對齊)、center(在主軸居中)、space-around(沿著主軸均勻分佈,並在兩端都留有一點空間)、space-between(均勻分佈但不會在兩端留下空間);

4。align-items:控制flex項在交叉軸上的對齊方式。預設為stretch(所有flex項沿著交叉軸方向拉伸以填充父容器),其他值有center(保持原有高度但會在交叉軸居中)、flex-start(頂邊對齊且不拉伸)、flex-end(底邊對齊且不拉伸)、center(居中且不拉伸)。

專案屬性有:

1。order:改變flex項的位置而不影響到dom樹裡元素的順序。預設為0,order大的項在顯示順序中更靠後;

2。flex-grow:放大比例,預設為0(不拉伸寬度),如果所有專案都為1,則它們將等分剩餘空間(如果有的話);

3。flex-shrink:縮小比例,預設為1(如果空間不足,專案將縮小),如果一個專案為0而其他專案為1,則空間不足時前者不縮小;

4。flex-basis:指定專案最小值,剩餘的可用空間將根據分配比例共享。預設為auto(專案本來大小);

5。flex是上述三個值的縮寫,預設為0 1 auto;

6。align-self:用於單獨對專案設定對齊方式,可覆蓋align-items。預設繼承父元素align-items,沒有父元素則為stretch(高度自動拉伸),其他值同樣有flex-start、flex-end、center。

應用案例:使用flex實現三欄佈局

#

container

{

display

flex

}

#

center

{

flex

1

}

#

left

{

flex

0

0

200

px

order

-1

}

#

right

{

flex

0

0

150

px

}

知識點9:塊級格式化上下文BFC

BFC全稱“Block Formatting Context”, 即“塊級格式化上下文”。BFC可以看作是隔離了的獨立容器(渲染區域),容器裡面的元素不會在佈局上影響到外面的元素,相當於建立了一個隱形的邊界。

觸發BFC的常見條件有:float值不為none;overflow值不為visible;display值為inline-block、flex等;position值為absolute或fixed。

BFC應用1:自適應兩欄佈局。利用BFC渲染規則:BFC的區域不會與float box重疊。實現方法:左div左浮動,右div設定overflow:hidden。

BFC應用2:清除浮動。利用BFC渲染規則:計算BFC高度時,浮動元素也參與計算。實現方法:父div設定overflow:hidden。