盒模型和定位

一、盒模型

頁面上每一個HTML元素都是一個矩形盒子,每個矩形盒子都由heightweight組成灼舍,也可能包括內(nèi)邊距(padding)、邊框(border)和外邊距(margin)涨薪。
分解一個元素骑素,包括盒模型的總寬,使用如下公式:
margin-right + border-right + padding-right + width+ padding-left + border-left + margin-left
類似的尤辱,總高公式:
margin-top + border-top + padding-top + height + padding-bottom + border-bottom + margin-bottom

1.度量單位

相對度量單位:

  • %
    表示包含元素的百分比砂豌;
  • em
    表示元素的字體大小厢岂,不會隨所選字體的改變而改變;
  • rem
    表示文檔的字體大醒艟唷(即:html元素)

絕對度量單位:

  • px
    表示像素塔粒,但在不同設(shè)備上,不是完全一致的筐摘;
  • in,cm,mm
    表示英寸卒茬、厘米、毫米咖熟,但在不同設(shè)備上圃酵,不是完全一致的;
  • pt
    表示磅馍管,一般在印刷設(shè)計中較為常見郭赐;

2.高度與寬度

元素默認(rèn)的height屬性由其內(nèi)容決定。在垂直方向上所有元素都會盡可能的伸縮來適應(yīng)內(nèi)容确沸。給一個塊級元素設(shè)置一個特定的高度則需要使用height屬性捌锭。

div {
    height:100px;
}

一個元素的width屬性取決于它的顯示類型。塊級元素的width屬性值默認(rèn)為100%,高度則是其包含內(nèi)容所需要的高度罗捎,它會鋪滿可用的整個橫向空間观谦。行內(nèi)元素則是在橫向方向盡可能的伸來適應(yīng)內(nèi)容。因為行內(nèi)元素尺寸不可更改桨菜,CSS中width和height值只能在塊級元素上起作用豁状。

div {
    weight:400px;
}

3.外邊距和內(nèi)邊距

給元素設(shè)置margin屬性,即在元素的四周設(shè)置了一段空間倒得。margin的值即外邊距泻红,處在邊框的外面,完全透明霞掺〕星牛可以用margin來將元素定位到頁面中特定的位置或者是將所有的元素隔開,給元素提供一個呼吸的空間根悼。
padding和margin十分相像,只是padding處于元素邊框的里面蜀撑。padding值也就是內(nèi)邊距繼承元素的背景挤巡,用來給元素內(nèi)部提供空間,并不和margin一樣用來定位元素酷麦。
元素的4個邊都可以有不同的內(nèi)矿卑、外邊距值,順序為:上沃饶、右母廷、下轻黑、左。

div {
     padding:1px 2px 3px 4px;
     margin:1px 2px 3px 4px;
}

4.邊框

在申明一個邊框時琴昆,需要制定邊框的寬度(border-width)氓鄙、樣式(border-style)和顏色(border-color),邊框?qū)挾韧ǔR?strong>像素(px)為單位申明业舍。

div {border:2px solid red;}

等價于

div {border-width:2px;}
div {border-style:solid;}
div {border-color:red;}

5.盒子大小

內(nèi)邊距抖拦、邊框、外邊距是否被作為元素的一部分計算在內(nèi)舷暮,需要視情況而定态罪。
CSS中有個新屬性box-sizing,允許你在它的值border-boxcontent-box之間選擇其一。
對于border-box下面,一旦你設(shè)置了塊級元素的寬度复颈,你對內(nèi)邊距、邊框沥割、外邊距設(shè)置的寬度都將計算在內(nèi)耗啦;相反,對于默認(rèn)值的content-box驯遇,內(nèi)邊距芹彬、邊框和外邊距都不計算在盒子的寬度中。
這個屬性并不完全被所有的瀏覽器支持叉庐,IE和 Opera已經(jīng)支持此屬性舒帮,我們只需要針對WebKit和 Mozilla使用前綴屬性:

div {
    -webkit-box-sizing:border-box;
    -moz-box-sizing:border-box;
    box-sizing:border-box;
}

二、定位

默認(rèn)的定位方式 是static(靜態(tài))定位陡叠,表示維持元素在正常的文檔流中玩郊。
relative(相對)定位是相對于它自身原來在文檔流中的位置來進行定位的,瀏覽器會保留元素原來所占用的空間枉阵∫牒欤可以使用盒子的偏移屬性(top,right兴溜,bottom侦厚,left)。
absolute(絕對)定位瀏覽器是使用包含該元素的第一個非靜態(tài)定位的元素來對其進行定位的**拙徽,瀏覽器不會在保留元素原來所占的空間刨沦。可以配合盒子的偏移屬性使用膘怕。
fixed (固定)定位與絕對定位非常相似想诅,但它是相對于整個頁面來定位的,而不是相對于它的包含元素。

html代碼:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <div class="box1">
    <p class="box2">
      This is a paragraph with a fixed width,
      and left and right margins set to auto,
      So it's centered.<br>
    </p>
  </div>
</body>
</html>

CSS代碼:

.box1 {
  background-color:pink;
  width:500px;
  height:200px;
  position:relative;
}

.box2 {
  background-color:green;
  width:450px;
  height:80px;
  position:absolute;
  left:50px;
  top:50px;
}

output:

position.png

在上圖的例子中来破,div指定了postion屬性值為relative篮灼,它便作為一個靜態(tài)的容器,其內(nèi)的絕對定位子元素p便基于它定位徘禁。因此絕對定位的p元素上下相對于靜態(tài)容器div向右偏移50px诅诱,向下偏移50px。

三晌坤、浮動和清除

使用float(浮動)屬性可以將元素浮動到它的包含元素(父元素)的左邊或右邊逢艘,后繼的元素不論是塊級元素還是行內(nèi)元素都將環(huán)繞浮動的元素。
如果想取消浮動骤菠,僅需將clear屬性應(yīng)用于要取消浮動的第一個元素(元素將新起一行)它改。當(dāng)應(yīng)用clear屬性時,left或right屬性值需要與前面的float屬性值想匹配商乎。

html代碼:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <div class="box1">
    <p class="box2">
      This is a paragraph with a fixed width,
      and left and right margins set to auto,
      So it's centered.<br>
    </p>
    <p class="box3">
      I believe that natural history has lost much by 
      the vague general treatment that is so common.
    </p>
    <p class="box4">
      What satisfaction would be derived from a ten-page
      sketch of the habits and customs of Man?
    </p>
  </div>
</body>
</html>

CSS代碼:

.box1 {
  background-color:pink;
  width:500px;
  height:200px;
}

.box2 {
  background-color:green;
  width:260px;
  height:80px;
  float:left;
}

.box3 {
  background-color:blue;
  width:200px;
  height:100px;
  float:right;
}

.box4 {
  background-color:red;
  width:400px;
  height:80px;
  clear:both;
}

output:

float&clear.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末央拖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鹉戚,更是在濱河造成了極大的恐慌鲜戒,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抹凳,死亡現(xiàn)場離奇詭異遏餐,居然都是意外死亡,警方通過查閱死者的電腦和手機赢底,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門失都,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人幸冻,你說我怎么就攤上這事粹庞。” “怎么了洽损?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵庞溜,是天一觀的道長。 經(jīng)常有香客問我碑定,道長流码,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任延刘,我火速辦了婚禮旅掂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘访娶。我一直安慰自己,他們只是感情好觉阅,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布崖疤。 她就那樣靜靜地躺著秘车,像睡著了一般。 火紅的嫁衣襯著肌膚如雪劫哼。 梳的紋絲不亂的頭發(fā)上叮趴,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機與錄音权烧,去河邊找鬼眯亦。 笑死,一個胖子當(dāng)著我的面吹牛般码,可吹牛的內(nèi)容都是我干的妻率。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼板祝,長吁一口氣:“原來是場噩夢啊……” “哼宫静!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起券时,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤孤里,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后橘洞,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捌袜,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年炸枣,在試婚紗的時候發(fā)現(xiàn)自己被綠了虏等。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡抛虏,死狀恐怖博其,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情迂猴,我是刑警寧澤慕淡,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站沸毁,受9級特大地震影響峰髓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜息尺,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一携兵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搂誉,春花似錦徐紧、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拂檩。三九已至,卻和暖如春嘲碧,著一層夾襖步出監(jiān)牢的瞬間稻励,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工愈涩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留望抽,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓履婉,卻偏偏與公主長得像煤篙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谐鼎,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

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