9. CSS布局

常見(jiàn)布局(PC)

  • 固定寬度布局——缺點(diǎn):屏幕尺寸不夠時(shí)會(huì)出現(xiàn)滾動(dòng)條晌缘。
  • 彈性布局(布局隨瀏覽器變化)——缺點(diǎn):代碼復(fù)雜饰豺。
  • 響應(yīng)式布局——多終端(PC亿鲜、Pad、Phone)冤吨。

單欄布局

  • 常見(jiàn)布局:
<div id="layout">
    <div id="header">頭部</div>
    <div id="main">內(nèi)容</div>
    <div id="footer">尾部</div>
</div>
  • 進(jìn)化(減少無(wú)意義標(biāo)簽蒿柳,便于控制局部)
<div id="header" class="layout">頭部</div>
<div id="main" class="layout">內(nèi)容</div>
<div id="footer" class="layout">尾部</div>

通過(guò)#xxx設(shè)置樣式背景等,
通過(guò).xxx設(shè)置內(nèi)容排版等漩蟆。

  • 通欄布局
<div id="header">
    <div class="layout">頭部</div>
</div>
<div id="main">
    <div class="layout">內(nèi)容</div>
</div>
<div id="footer">
    <div class="layout">尾部</div>
</div>

注:可能會(huì)出現(xiàn)“滾動(dòng)背景色”垒探,此時(shí)給body設(shè)置"min-width"即解決問(wèn)題。

雙列布局

一般為一列固定寬度怠李,另一列寬度自適應(yīng)圾叼。

  • 例:
  • HTML:
<div id="content clearfix">
    <div class="aside">aside</div>
    <div class="main">main</div>
</div>
  • CSS:
.aside {
    width: 200px;
    min-height: 300px;
    float: left;
}
.main {
    margin-left: 210px;
}
.clearfix {
    content: "\200B";
    display: block;
    clear: both;
    height: 0;
}

三列布局

一般為兩側(cè)固定寬度蛤克,中間自適應(yīng)。

  • 例:
  • HTML:
<div id="content clearfix">
    <div class="aside left">aside-left</div>
    <div class="aside right">aside-right</div>
    <div class="main">main</div>
</div>
  • CSS:
.aside {
    width: 200px;
    min-height: 300px;
    float: left;
}
.aside.right {
    float: right;
}
.main {
    margin-left: 210px;
    margin-right: 210px;
}
.clearfix {
    content: "\200B";
    display: block;
    clear: both;
    height: 0;
}

注:三列設(shè)置浮動(dòng)時(shí)要注意html中的文檔順序問(wèn)題夷蚊,要保證浮動(dòng)元素先渲染(即浮動(dòng)的寫(xiě)在不浮動(dòng)的前面)构挤,如果不想糾結(jié)于此,那么就都設(shè)置浮動(dòng)惕鼓。

一些點(diǎn)

  1. max-width會(huì)在屏幕不夠大時(shí)自動(dòng)縮放內(nèi)容筋现,但有可能會(huì)影響內(nèi)容的顯示。
  2. 內(nèi)部元素居中
    一般情況下箱歧,使用如下CSS代碼:
.parent {
    text-align: center;
}
.child {
    display: inline-block;
}

或者:
給想居中的塊套個(gè)div矾飞,設(shè)置margin: 0 auto;,再給塊設(shè)置float呀邢。
若為IE6等不支持inline-block的情況:

.child {
    *display: inline;
    *zoom: 1;
}
  1. 使用inline-block設(shè)置水平垂直絕對(duì)居中
  • 代碼
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <div class="wrapper">
    <main>123456</main>
  </div>
</body>
</html>
* {
  margin: 0;
  padding: 0;
}
.wrapper {
  background-color: #f1f1f1;
  width: 600px;
  height: 400px;
  text-align: center;
}
main {
  background-color: #fff;
  width: 200px;
  height: 200px;
  display: inline-block;
  vertical-align: middle;
}
.wrapper:before,
.wrapper:after {
  content: "";
  display: inline-block;
  height: 100%;
  vertical-align: middle;
} 

JSBin地址

Flex布局

Flex之前的布局

  • normal flow
  • float+ clear
  • position: relative + absolute
  • display: inline-block
  • 負(fù)margin

Flex出現(xiàn)

一種新的布局方式——Flex布局

  • 塊級(jí)布局側(cè)重垂直方向洒沦,行內(nèi)布局側(cè)重水平方向,F(xiàn)lex布局與方向無(wú)關(guān)驼鹅。
  • Flex布局可實(shí)現(xiàn)空間自動(dòng)分配微谓、自動(dòng)對(duì)齊
  • Flex適用于簡(jiǎn)單的線性布局输钩。
flex.png

常用Flex屬性

  • Flex container屬性

  • flex-direction: row(行展示)、row-reverse(反向行展示)仲智、column(列展示)买乃、column-reverse(列反向展示);

  • flex-wrap: no-wrap(不換行,自動(dòng)對(duì)齊)钓辆、wrap(換行);

  • justify-content: space-between(占兩頭剪验,多余空間勻中間)、space-around(多余空間均勻分布周?chē)┣傲lex-start(從起點(diǎn)開(kāi)始排布)功戚、flex-end(從終點(diǎn)開(kāi)始排布)、center(居中排布);

  • align-items: stretch(側(cè)軸似嗤,伸展至和最高一樣高)啸臀、flex-start(側(cè)軸起點(diǎn))、flex-end(側(cè)軸終點(diǎn))烁落、center(側(cè)軸居中)乘粒;

  • align-content: 多行之間的對(duì)齊方式調(diào)整(使用較少)。

  • Flex item屬性

  • flex-grow: 增長(zhǎng)比例(自動(dòng)分配空白空間)伤塌;

  • flex-shrink: 收縮比例(空間不夠時(shí)自動(dòng)收縮)灯萍;

  • flex-basis: 默認(rèn)大小(一般不用)每聪;

  • order: 順序(強(qiáng)制排序旦棉,每個(gè)都得排)齿风;

  • align-self: 給單獨(dú)的元素設(shè)置對(duì)齊方式;

使用Flex布局

手機(jī)頁(yè)面布局

幾個(gè)要點(diǎn):

  • 重置樣式
* {
  margin: 0;
  padding: 0;
  list-style: none;
  box-sizing: border-box;/* 使用IE盒模型绑洛,便于尺寸控制 */
}
  • 布局的幾個(gè)重要代碼
.layout {
  height: 100vh;/* 排滿屏幕 */
  margin: 0 auto;
  background-color: #ccc;
  display: flex;
  flex-direction: column;
  • 內(nèi)容部分幾個(gè)重要代碼
main {
  flex-grow: 1;/* 布滿空白位置 */
  overflow: auto;/* 內(nèi)容超出時(shí)可滾動(dòng) */
}

產(chǎn)品列表

幾個(gè)重要代碼

.layout>ul {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-around;
  /* 寬度設(shè)在了layout救斑,為700px */
}
.layout>ul>li {
  margin: 20px 0;
  padding: 10px;
  background-color: #fff;
  border: 2px solid #ddd;
}

JSBin地址

PC頁(yè)面布局

(略,見(jiàn)后實(shí)例)

完美居中

.parent {
  height: 400px;
  background-color: #ccc;
  display: flex;
  justify-content: conter;
  align-items: center
}

一些實(shí)例

注:多行文本溢出顯示省略號(hào)

webkit的可以參考:
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;/* 第幾行想開(kāi)始省略诊笤,就填幾 */
  overflow: hidden;
不保證有效果系谐,私有前綴的屬性屬于實(shí)驗(yàn)屬性,可能隨著瀏覽器的升級(jí)移除讨跟。
  1. 導(dǎo)航欄
    導(dǎo)航欄-float
    導(dǎo)航欄-flex
  2. 兩欄布局
    兩欄布局-float
    兩欄布局-flex
  3. 三欄布局
    三欄布局-float
    三欄布局-flex
  4. 列表
    列表
  5. 圖文
    圖文
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末纪他,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子晾匠,更是在濱河造成了極大的恐慌茶袒,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凉馆,死亡現(xiàn)場(chǎng)離奇詭異薪寓,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)澜共,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)向叉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嗦董,你說(shuō)我怎么就攤上這事母谎。” “怎么了京革?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵奇唤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我匹摇,道長(zhǎng)咬扇,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任廊勃,我火速辦了婚禮懈贺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘供搀。我一直安慰自己隅居,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布葛虐。 她就那樣靜靜地躺著胎源,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屿脐。 梳的紋絲不亂的頭發(fā)上涕蚤,一...
    開(kāi)封第一講書(shū)人閱讀 49,985評(píng)論 1 291
  • 那天宪卿,我揣著相機(jī)與錄音,去河邊找鬼万栅。 笑死佑钾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的烦粒。 我是一名探鬼主播休溶,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼扰她!你這毒婦竟也來(lái)了兽掰?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤徒役,失蹤者是張志新(化名)和其女友劉穎孽尽,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體忧勿,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杉女,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸳吸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熏挎。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖晌砾,靈堂內(nèi)的尸體忽然破棺而出婆瓜,到底是詐尸還是另有隱情,我是刑警寧澤贡羔,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站个初,受9級(jí)特大地震影響乖寒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜院溺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一楣嘁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧珍逸,春花似錦逐虚、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至漱病,卻和暖如春买雾,著一層夾襖步出監(jiān)牢的瞬間把曼,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工漓穿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嗤军,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓晃危,卻偏偏與公主長(zhǎng)得像叙赚,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子僚饭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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