CSS 盒子模型(CSS重點(diǎn))

其實(shí)魂奥,CSS就三個(gè)大模塊: 盒子模型 、 浮動(dòng) 易猫、 定位耻煤,其余的都是細(xì)節(jié)。要求這三部分准颓,無論如何也要學(xué)的非常精通厕妖。?

所謂盒子模型就是把HTML頁面中的元素看作是一個(gè)矩形的盒子答憔,也就是一個(gè)盛裝內(nèi)容的容器且改。每個(gè)矩形都由元素的內(nèi)容澜共、內(nèi)邊距(padding)、邊框(border)和外邊距(margin)組成样勃。


盒子模型(Box Model)

所有的文檔元素(標(biāo)簽)都會(huì)生成一個(gè)矩形框吠勘,我們成為元素框(element box),它描述了一個(gè)文檔元素再網(wǎng)頁布局匯總所占的位置大小峡眶。因此剧防,每個(gè)盒子除了有自己大小和位置外,還影響著其他盒子的大小和位置辫樱。


盒子邊框(border)

邊框就是那層皮峭拘。 橘子皮。狮暑。柚子皮鸡挠。。橙子皮心例。宵凌。鞋囊。

語法:

border : border-width || border-style || border-color

邊框?qū)傩浴O(shè)置邊框樣式(border-style)

邊框樣式用于定義頁面中邊框的風(fēng)格止后,常用屬性值如下:

????none:沒有邊框即忽略所有邊框的寬度(默認(rèn)值)

????solid:邊框?yàn)閱螌?shí)線(最為常用的)

????dashed:邊框?yàn)樘摼€

????dotted:邊框?yàn)辄c(diǎn)線

????double:邊框?yàn)殡p實(shí)線


表格的細(xì)線邊框

以前學(xué)過的html表格邊框很粗,這里只需要CSS一句話就可以美觀起來。 讓我們真的相信译株,CSS就是我們的白馬王子(白雪公主)瓜喇。

table{ border-collapse:collapse; }

border-collapse:collapse; 表示邊框合并在一起。


盒子邊框總結(jié)表

設(shè)置內(nèi)容? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?樣式屬性? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????? ?常用屬性值

上邊框????border-top-style:? ? ? ? ? ? ? ? 樣式; border-top-width:寬度;border-top-color:顏色;border-top:? ? ? ? ? ? ? ? ? ? ? ?寬度 樣式 顏色;

下邊框????border-bottom-style:? ? ? ? ? 樣式;border- bottom-width:寬度;border- bottom-color:顏色;border-bottom:????寬度 樣式 顏色;

左邊框????border-left-style? ? ? ? ? ? ? ? ?:樣式; border-left-width:寬度;border-left-color:顏色;border-left:? ? ? ? ? ? ? ? ? ? ? ?寬度 樣式 顏色;

右邊框????border-right-style:? ? ? ? ? ? ? ?樣式;border-right-width:寬度;border-right-color:顏色;border-right:? ? ? ? ? ? ? ? ? ?寬度 樣式 顏色;

樣式綜合設(shè)置????border-style:上邊 [右邊 下邊 左邊];none無(默認(rèn))歉糜、solid單實(shí)線乘寒、dashed虛線、dotted點(diǎn)線匪补、double雙實(shí)線

寬度綜合設(shè)置????border-width:上邊 [右邊 下邊 左邊];像素值

顏色綜合設(shè)置????border-color:上邊 [右邊 下邊 左邊];顏色值伞辛、#十六進(jìn)制、rgb(r,g,b)夯缺、rgb(r%,g%,b%)

邊框綜合設(shè)置????border:四邊寬度 四邊樣式 四邊顏色;


圓角邊框(CSS3)

從此以后蚤氏,我們的世界不只有矩形。

語法格式:

Border-radius: 水平半徑/垂直半徑踊兜;

一般我們垂直半徑都是省略的默認(rèn)和水平半徑一樣竿滨。

border-radius: 左上角? 右上角? 右下角? 左下角;

代碼案例:

<style>

? div {

? ? width:200px;

? ? height:200px;

? ? border:1px solid red;

? ? margin:10px 40px;

? ? text-align: center;

? ? line-height: 200px;

? }

? div:first-child {

? ? border:10px solid red;

? ? border-radius: 20px/50px;

? }

? div:nth-child(2) {

? ? border-radius: 20px;

? }

? div:nth-child(3) {

? ? border-radius: 15px 0;

? }

? div:nth-child(4) {

? ? border-radius:100px;

? }

? div:nth-child(5) {

? ? border-radius: 50%;

? }

? div:nth-child(6) {

? ? border-radius: 100px 0;

? }

? div:nth-child(7) {

? ? border-radius: 200px 0 0 0;

? }

? div:nth-child(8) {

? ? border-radius: 100px 100px 0 0;

? ? height:100px;? /*高度減半*/

? }

? div:nth-child(9) {

? ? border-radius: 100px;

? ? height:100px;

? }

? div:nth-child(10) {

? ? border-radius: 100%;

? ? height:100px;

? }

</style>


內(nèi)邊距(padding)

padding屬性用于設(shè)置內(nèi)邊距。 是指 邊框與內(nèi)容之間的距離捏境。

????padding-top:上內(nèi)邊距

????padding-right:右內(nèi)邊距

????padding-bottom:下內(nèi)邊距

????padding-left:左內(nèi)邊距

注意: 后面跟幾個(gè)數(shù)值表示的意思是不一樣的于游。

值的個(gè)數(shù)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表達(dá)意思

1個(gè)值? ? ? ? ? ? padding:上下左右邊距 比如padding: 3px;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?表示上下左右都是3像素

2個(gè)值? ? ? ? ? ? padding: 上下邊距 左右邊距 比如 padding: 3px 5px;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?表示 上下3像素 左右 5像素

3個(gè)值? ? ? ? ? ? padding:上邊距 左右邊距 下邊距 比如 padding: 3px 5px 10px;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 表示 上是3像素 左右是5像素 下是10像素

4個(gè)值????????????padding:上內(nèi)邊距 右內(nèi)邊距 下內(nèi)邊距 左內(nèi)邊距 比如: padding: 3px 5px 10px 15px; 表示 上3px 右是5px 下 10px 左15px 順時(shí)針


外邊距(margin)

margin屬性用于設(shè)置外邊距。 設(shè)置外邊距會(huì)在元素之間創(chuàng)建“空白”垫言, 這段空白通常不能放置其他內(nèi)容贰剥。

margin-top:上外邊距

margin-right:右外邊距

margin-bottom:下外邊距

margin-left:左外邊距

margin:上外邊距 右外邊距? 下外邊距? 左外邊

取值順序跟內(nèi)邊距相同。


外邊距實(shí)現(xiàn)盒子居中

可以讓一個(gè)盒子實(shí)現(xiàn)水平居中筷频,需要滿足一下兩個(gè)條件:

必須是塊級(jí)元素鸠澈。? ?

盒子必須指定了寬度(width)

然后就給左右的外邊距都設(shè)置為auto,就可使塊級(jí)元素水平居中截驮。

實(shí)際工作中常用這種方式進(jìn)行網(wǎng)頁布局笑陈,示例代碼如下:

.header{ width:960px; margin:0 auto;}


清除元素的默認(rèn)內(nèi)外邊距

為了更方便地控制網(wǎng)頁中的元素,制作網(wǎng)頁時(shí)葵袭,可使用如下代碼清除元素的默認(rèn)內(nèi)外邊距:

* {

????padding:0;/* 清除內(nèi)邊距 */

????margin:0;/* 清除外邊距 */

}

注意:? 行內(nèi)元素是只有左右內(nèi)外邊距的涵妥,是沒有上下內(nèi)外邊距的。


外邊距合并

使用margin定義塊元素的垂直外邊距時(shí)坡锡,可能會(huì)出現(xiàn)外邊距的合并蓬网。

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

當(dāng)上下相鄰的兩個(gè)塊元素相遇時(shí),如果上面的元素有下外邊距margin-bottom鹉勒,下面的元素有上外邊距margin-top帆锋,則他們之間的垂直間距不是margin-bottom與margin-top之和,而是兩者中的較大者禽额。這種現(xiàn)象被稱為相鄰塊元素垂直外邊距的合并(也稱外邊距塌陷)锯厢。

解決方案: 避免就好了皮官。

嵌套塊元素垂直外邊距的合并:

對(duì)于兩個(gè)嵌套關(guān)系的塊元素,如果父元素沒有上內(nèi)邊距及邊框实辑,則父元素的上外邊距會(huì)與子元素的上外邊距發(fā)生合并捺氢,合并后的外邊距為兩者中的較大者,即使父元素的上外邊距為0剪撬,也會(huì)發(fā)生合并摄乒。

解決方案:

可以為父元素定義1像素的上邊框或上內(nèi)邊距。

可以為父元素添加overflow:hidden残黑。


content寬度和高度

使用寬度屬性width和高度屬性height可以對(duì)盒子的大小進(jìn)行控制馍佑。

????width和height的屬性值可以為不同單位的數(shù)值或相對(duì)于父元素的百分比%,實(shí)際工作中最常用的是像素值梨水。

????大多數(shù)瀏覽器挤茄,如Firefox、IE6及以上版本都采用了W3C規(guī)范冰木,符合CSS規(guī)范的盒子模型的總寬度和總高度的計(jì)算原則是:

????盒子的總寬度= width+左右內(nèi)邊距之和+左右邊框?qū)挾戎?左右外邊距之和

????盒子的總高度= height+上下內(nèi)邊距之和+上下邊框?qū)挾戎?上下外邊距之和

注意:

1穷劈、寬度屬性width和高度屬性height僅適用于塊級(jí)元素,對(duì)行內(nèi)元素?zé)o效( img 標(biāo)簽和 input除外)踊沸。

2歇终、計(jì)算盒子模型的總高度時(shí),還應(yīng)考慮上下兩個(gè)盒子垂直外邊距合并的情況逼龟。


三個(gè)計(jì)算題

1. .demo{width:200px;height:200px;border:1px solid red; padding:20px;}评凝, 盒子最終占有的空間是多大?

2. 一個(gè)盒子需要占用的空間是 400像素腺律, 但是盒子又有 padding:25px, border: 1px solid red; 問奕短,我們需要改動(dòng)盒子寬度為多少?

3. 如何讓一個(gè)200 * 200像素的盒子匀钧, 在一個(gè)400 * 400的盒子里面水平居中翎碑,垂直居中。


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

盒子模型之斯,最大的困惑就是日杈, 分不清內(nèi)外邊距的使用,什么情況下使用內(nèi)邊距佑刷,什么情況下使用外邊距莉擒?

答案是:? 其實(shí)他們大部分情況下是可以混用的。? 就是說瘫絮,你用內(nèi)邊距也可以涨冀,用外邊距也可以。 你覺得哪個(gè)方便麦萤,就用哪個(gè)鹿鳖。

但是扁眯,總有一個(gè)最好用的吧,我們根據(jù)穩(wěn)定性來分栓辜,建議如下:

按照 優(yōu)先使用? 寬度 (width)? 其次 使用內(nèi)邊距(padding)? ? 再次? 外邊距(margin)。?

? width >? padding? > ? margin ?

原因:

margin 會(huì)有外邊距合并 還有 ie6下面margin 加倍的bug(討厭)所以最后使用垛孔。

padding? 會(huì)影響盒子大小藕甩, 需要進(jìn)行加減計(jì)算(麻煩) 其次使用。

width? 沒有問題(嗨皮)我們經(jīng)常使用寬度剩余法 高度剩余法來做周荐。


CSS3盒模型

CSS3中可以通過box-sizing 來指定盒模型狭莱,即可指定為content-box、border-box概作,這樣我們計(jì)算盒子大小的方式就發(fā)生了改變腋妙。

可以分成兩種情況:

1、box-sizing: border-box? 盒子大小為 width

2讯榕、box-sizing: content-box? 盒子大小為 width + padding + border

注:上面的標(biāo)注的width指的是CSS屬性里設(shè)置的width: length骤素,content的值是會(huì)自動(dòng)調(diào)整的。

div {

? width: 100px;

? height: 100px;

? background: skyblue;

? margin: 0 auto;

? border: 1px solid gray;

? /*

? 默認(rèn)的設(shè)置 如果我們添加了 border屬性 該容器的大小會(huì)發(fā)生改變

? 因?yàn)樗獌?yōu)先保證內(nèi)部的內(nèi)容所占區(qū)域 不變

? */

? /*?

? box-sizing? 如果不設(shè)置 默認(rèn)的值 就是

? content-box: 優(yōu)先保證內(nèi)容的大小 對(duì)盒子進(jìn)行縮放;

? border-box: 讓 盒子 優(yōu)先保證自己所占區(qū)域的大小,對(duì)內(nèi)容進(jìn)行壓縮;

? */

? box-sizing: border-box;

}


盒子陰影

語法格式:

box-shadow:水平陰影 垂直陰影 模糊距離 陰影尺寸 陰影顏色 內(nèi)/外陰影愚屁;


1. 前兩個(gè)屬性是必須寫的济竹。其余的可以省略。

2. 外陰影 (outset) 但是不能寫? ? 默認(rèn)? ? ? 想要內(nèi)陰影? inset

img {

? border:10px solid orange;

? box-shadow:3px 3px 5px 4px rgba(0,0,0,1);

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末霎槐,一起剝皮案震驚了整個(gè)濱河市送浊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌丘跌,老刑警劉巖袭景,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異闭树,居然都是意外死亡耸棒,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門报辱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榆纽,“玉大人,你說我怎么就攤上這事捏肢∧巫眩” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵鸵赫,是天一觀的道長衣屏。 經(jīng)常有香客問我,道長辩棒,這世上最難降的妖魔是什么狼忱? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任膨疏,我火速辦了婚禮,結(jié)果婚禮上钻弄,老公的妹妹穿的比我還像新娘佃却。我一直安慰自己,他們只是感情好窘俺,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布饲帅。 她就那樣靜靜地躺著,像睡著了一般瘤泪。 火紅的嫁衣襯著肌膚如雪灶泵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天对途,我揣著相機(jī)與錄音赦邻,去河邊找鬼。 笑死实檀,一個(gè)胖子當(dāng)著我的面吹牛惶洲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播膳犹,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼湃鹊,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了镣奋?” 一聲冷哼從身側(cè)響起币呵,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎侨颈,沒想到半個(gè)月后余赢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哈垢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年妻柒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片耘分。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡举塔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出求泰,到底是詐尸還是另有隱情央渣,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布渴频,位于F島的核電站芽丹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏卜朗。R本人自食惡果不足惜拔第,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一咕村、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚊俺,春花似錦懈涛、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至暂殖,卻和暖如春价匠,著一層夾襖步出監(jiān)牢的瞬間当纱,已是汗流浹背呛每。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坡氯,地道東北人晨横。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像箫柳,于是被迫代替她去往敵國和親手形。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案悯恍? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,748評(píng)論 1 92
  • 一库糠、CSS入門 1、css選擇器 選擇器的作用是“用于確定(選定)要進(jìn)行樣式設(shè)定的標(biāo)簽(元素)”涮毫。 有若干種形式的...
    寵辱不驚丶?xì)q月靜好閱讀 1,594評(píng)論 0 6
  • 引言 這次給大家?guī)砹薈SS-盒子模型部分的筆記瞬欧,大家一同交流?? 認(rèn)識(shí)盒子模型之前,先來了解一下CSS元素的分類吧...
    zhaolion閱讀 4,306評(píng)論 9 85
  • 盒子模型簡介 所有HTML元素可以看作盒子罢防,在CSS中艘虎,"box model"這一術(shù)語是用來設(shè)計(jì)和布局時(shí)使用。CS...
    IOLG閱讀 1,181評(píng)論 0 0
  • 親愛的77班的奇跡班戰(zhàn)友咒吐,大家晚上好野建!很高興大家能在百忙之中能來參加我們的值月生交接儀式,在這首先要和大家說聲抱歉...
    曦冉持續(xù)行動(dòng)成長記閱讀 408評(píng)論 1 1