CSS學(xué)習(xí)筆記3 CSS三大特性

CSS三大特性:盒子模型、浮動(dòng)、定位。其余都是細(xì)節(jié)

1. 盒子模型

盒子模型就是把HTML頁面中的元素看作是一個(gè)矩形盒子,也就是一個(gè)容器。每個(gè)盒子都由元素的內(nèi)容、內(nèi)邊距、邊框、外邊距組成。

1.1 盒子邊框?

1.1.1 整體邊框border

border的所有樣式

border屬性可以單獨(dú)選取設(shè)置,也可以連寫且沒有順序

border: solid 1px #000

border-style屬性


1.1.2 盒子單獨(dú)邊框

查看手冊:

border-top

border-right

border-bottom

border-left


1.1.3 常用案例

表單中實(shí)現(xiàn)下面效果:


1.1.4 邊框綜合設(shè)置(高級用法)


1.1.5 表格細(xì)線邊框設(shè)置 border-collapse

表格HTML

效果1:

這個(gè)效果我們發(fā)現(xiàn)table的邊框和td的邊框可以分開設(shè)置,并且默認(rèn)有間隔

效果1
效果1樣式


效果2:

去掉table和td之間所有的空隙,只能在table標(biāo)簽中設(shè)置,不是CSS樣式

效果2,去掉空隙,非細(xì)線邊框
效果2


效果3:

效果2還不是細(xì)線邊框的效果,因?yàn)槊總€(gè)td的邊框都使用了3px,

因此td與td之間加起來就是6px。

效果3會(huì)合并td之間的邊框,使td之間只有3px(是用border-collapse)

效果3 細(xì)線邊框,比效果2的邊框細(xì)了一倍
效果3


1.2 內(nèi)邊距 padding

padding屬性用于設(shè)置內(nèi)邊距,是指border與content之間的距離

1.2.1 設(shè)置不同內(nèi)容大小的導(dǎo)航欄樣式

之前做的導(dǎo)航欄樣式都是導(dǎo)航欄內(nèi)容字?jǐn)?shù)相同的,往往項(xiàng)目中的導(dǎo)航欄內(nèi)的文字字?jǐn)?shù)不盡相同

新浪首頁每個(gè)導(dǎo)航欄寬度不同,但是文字都是居中顯示
簡單不同寬度導(dǎo)航欄樣式


1.2.2 新浪導(dǎo)航欄例子


1.2.3 padding的2個(gè)問題

1. padding參數(shù)個(gè)數(shù)

4個(gè)值遵循順時(shí)針原則


*2. 設(shè)置了padding的值為非0后,會(huì)撐大盒子,需要重新計(jì)算width和height

3. 清除元素默認(rèn)外邊距:

清除瀏覽器默認(rèn)的margin和padding:

*{

? ? margin: 0;

????padding: 0;

}

但是上面的樣式對瀏覽器來說解析效率太低了,最好使用并集解釋器:

body, div, dl, dt, ......{

? ? margin: 0;

? ? padding: 0;

}


1.3 外邊距 margin

1.3.1 盒子水平居中

限制條件:

1. 必須是塊級元素

2. 盒子必須指定了width

如果盒子設(shè)置了width比瀏覽器的寬度小,又想讓盒子居中,通過margin來設(shè)置:

方法一:

margin: 0 auto /* 上下為0, 左右為auto */

方法二:

margin: auto /* 上下默認(rèn)為0, 左右為auto */

方法三:

margin-left: auto

margin-right: auto


1.3.2 background-image 和 img 使用的時(shí)機(jī)

插入圖片:產(chǎn)品展示類

背景圖片:小圖標(biāo)背景 或者 logo圖片 或者 超大背景圖片


1.3.3 外邊距合并

使用margin定義快原酸的垂直外邊距時(shí),可能會(huì)出現(xiàn)外邊距的合并

1.3.3.1 相鄰塊元素垂直外邊距合并

注意2個(gè)條件:

1. 相鄰塊元素

2. 垂直外邊距(水平不會(huì)出現(xiàn)問題)

合并時(shí)默認(rèn)為最大的那個(gè)magin值

這是瀏覽器的bug,不需要解決,只需要計(jì)算好margin值就可以避免


*1.3.3.2 嵌套塊元素垂直外邊距合并

注意2個(gè)條件:

1. 相鄰塊元素

2. 垂直外邊距(水平不會(huì)出現(xiàn)問題)

目標(biāo):

想讓子盒子在父盒子中垂直移動(dòng)位置。

問題:

常見做法一(可以實(shí)現(xiàn)):

在父盒子設(shè)置padding-top,但是padding會(huì)撐大盒子,需要減少父盒子的height值

*常見做法二(沒有實(shí)現(xiàn)):

子盒子中設(shè)置margin-top, 但是會(huì)發(fā)現(xiàn)父盒子的位置也會(huì)被子盒子代跑

解決辦法:

1. 在父盒子角度出發(fā),使用padding-top

2. 從子盒子角度出發(fā),設(shè)置margin-top, 但是需要給父盒子設(shè)置一個(gè)border

3. 為父盒子添加:overflow: hidden;


*1.3.4 content內(nèi)容的width和height

在嵌套的2個(gè)盒子情況下

1. 如果子盒子不設(shè)置width,則會(huì)占滿父盒子的寬度

2. 如果子盒子沒有給定寬度,則即使padding也不會(huì)影響父盒子大小


1.3.5 盒子模型布局穩(wěn)定性

width > padding > margin


1.3.6 盒子圓角邊框(CSS3)

略,查手冊


1.3.7 盒子陰影

略,查手冊



2. 浮動(dòng) float

2.1 普通流 (normal flow)



2.2 浮動(dòng) float

2.2.1 什么是float

定義


前面學(xué)了嵌套盒子,實(shí)現(xiàn)子盒子在父盒子中任意移動(dòng)

其實(shí)不通過嵌套的方式,可以用float來實(shí)現(xiàn)嵌套的效果

體會(huì)浮動(dòng):

最簡單浮動(dòng)效果
簡單浮動(dòng)代


float能做什么?:

float的重要功能


如果不用float來做上面的功能,我們只能用display: inline-block

缺點(diǎn)一:需要解決div之間間隙的問題

缺點(diǎn)二:當(dāng)需要所有div右對齊排列的時(shí)候,每個(gè)div都需要計(jì)算magin-right

而float用簡單的語法就能解決上面的2個(gè)問題


2.2.2 浮動(dòng)詳細(xì)內(nèi)幕特性

1. 浮動(dòng)脫離標(biāo)準(zhǔn)流,不占位置,會(huì)影響標(biāo)準(zhǔn)流。且浮動(dòng)只有左右浮動(dòng),沒有上下浮動(dòng)

2. 下面做一個(gè)常見浮動(dòng)樣式:

需要給one、two2個(gè)盒子設(shè)置一個(gè)父盒子,才能達(dá)到這個(gè)效果:


3. 浮動(dòng)首先創(chuàng)建包含塊的概念(包裹),就是說,浮動(dòng)的元素總是找離他最近的父級元素對齊。但是不會(huì)超過內(nèi)邊距padding的范圍

在2中,one和two有一個(gè)父級塊級元素

嵌套子父級浮動(dòng),子盒子不會(huì)超過父盒子padding的范圍


4. 浮動(dòng)元素排列位置,跟上一個(gè)元素(塊級元素)有關(guān)系。如果上一個(gè)元素有浮動(dòng),則A元素頂部會(huì)和上一個(gè)元素的頂部對齊;如果上一個(gè)元素是標(biāo)準(zhǔn)流,則A元素的頂部會(huì)和上一個(gè)元素的底部對齊

因?yàn)槿绻患痈?dòng),則是標(biāo)準(zhǔn)流,標(biāo)準(zhǔn)流獨(dú)占一行

也就是說浮動(dòng)影響的僅僅是后面的盒子


5. 浮動(dòng) 可以默認(rèn)讓元素轉(zhuǎn)換為inline-block元素

也就是,如果行內(nèi)元素設(shè)置了浮動(dòng),就可以給該盒子設(shè)置width和height了


浮動(dòng)特點(diǎn)總結(jié):



3. 版心和布局

3.1 版心

版心就是網(wǎng)頁可視區(qū),只網(wǎng)頁中主題內(nèi)容所在區(qū)域。一般在瀏覽器窗口中水平居中顯示,常見寬度值為:960px, 980px, 1000px, 1200px等等


3.2 布局

3.2.1 一列固定寬度且居中型


3.2.2 兩列左窄右寬型


3.2.3 通欄平均分布型

下面的代碼還需要精調(diào)。。。


3.2.4 通欄平均分布型例子



4. 清除浮動(dòng)

在2.2.2的2中,我們要實(shí)現(xiàn)布局,需要給one、two使用浮動(dòng),必須給one、two加一個(gè)父級盒子才能實(shí)現(xiàn)效果。

這種方式不僅要計(jì)算父級盒子的寬高,還要計(jì)算子集盒子浮動(dòng)后的padding,比較麻煩(會(huì)影響其他盒子)。

而且如果one、two的高度是動(dòng)態(tài)的話,父級盒子沒辦法給合理的height

這一節(jié)主要介紹一種方法(清除浮動(dòng)),在不設(shè)置父級盒子height的情況下,子級盒子能夠自動(dòng)撐開父級盒子,達(dá)到動(dòng)態(tài)撐開父級盒子的效果!

4.1 清除浮動(dòng)的原理

清除浮動(dòng)主要是為了解決父級元素因?yàn)樽蛹壐?dòng)引起內(nèi)部高度為0的問題

不清除浮動(dòng)帶來的問題
子盒子不浮動(dòng)
子盒子浮動(dòng)帶來的問題


4.2 清除浮動(dòng)的方法

4.2.1 額外標(biāo)簽法

增加一個(gè)自定義類選擇器,使用clear屬性設(shè)置為both來清除浮動(dòng)。


4.2.2 父級添加overflow屬性方法

這種方法叫:子不教,父之過,教不嚴(yán),師之惰。責(zé)任在于父和師


4.2.3 使用after偽元素清除浮動(dòng)

略,做兼容性時(shí)候再查

定義一個(gè)類名選擇器,并在father中使用多類名選擇

<div class="father clearfix">


4.2.4 使用before和after雙偽元素清除浮動(dòng)

略,做兼容性時(shí)候再查



5. 定位(position)

5.1 概述:為什么要用定位

用于跟JS配合做特效,使用沒有float多,但是是CSS三大特性中最難的知識(shí)點(diǎn),也是最后一個(gè)知識(shí)點(diǎn)!


5.2 元素的定位屬性:定位模式 和 邊偏移

5.2.1 邊偏移


5.2.2 定位模式


5.2.2.1 靜態(tài)定位(static)


*5.2.2.2 相對定位(relative)


*5.2.2.3 絕對定位(absolute)


*5.2.2.4 綜合問題

子絕父相:綜合5.2.2.2和5.2.2.3

兩個(gè)問題

定位盒子居中對齊


*5.2.2.5 固定定位(fixed)




fdsf

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,748評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,165評論 3 414
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,595評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,633評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,435評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,943評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,035評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,175評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,713評論 1 333
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,599評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,788評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,303評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,034評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,412評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,664評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,408評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,747評論 2 370

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

  • 1.CSS基本概念 1.1 CSS的定義 CSS(Cascading Style Sheets)層疊樣式表,主要用...
    寥寥十一閱讀 1,857評論 0 6
  • 一、CSS入門 1、css選擇器 選擇器的作用是“用于確定(選定)要進(jìn)行樣式設(shè)定的標(biāo)簽(元素)”。 有若干種形式的...
    寵辱不驚丶?xì)q月靜好閱讀 1,610評論 0 6
  • 什么是盒子? CSS處理網(wǎng)頁時(shí),它認(rèn)為每個(gè)元素都包含在一 個(gè)不可見的盒子里。 我們只需要將相應(yīng)的盒子擺放到網(wǎng)頁中相...
    咻咻咻滴趙大妞閱讀 931評論 0 0
  • 盒子模型 所有HTML元素可以看作盒子,在CSS中,"box model"這一術(shù)語是用來設(shè)計(jì)和布局時(shí)使用。 不同部...
    吾皇PIPA丘閱讀 642評論 0 0
  • 概述 在網(wǎng)易云課堂學(xué)習(xí)李南江老師的《從零玩轉(zhuǎn)HTML5前端+跨平臺(tái)開發(fā)》時(shí),所整理的筆記。筆記內(nèi)容為根據(jù)個(gè)人需求所...
    墨荀閱讀 2,356評論 0 7