? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?開(kāi)篇十三章
1、盒模型代碼簡(jiǎn)寫(xiě)
還記得在講盒模型時(shí)外邊距(margin)、內(nèi)邊距(padding)和邊框(border)設(shè)置上下左右四個(gè)方向的邊距是按照順時(shí)針?lè)较蛟O(shè)置的:上右下左。具體應(yīng)用在margin和padding的例子如下:
margin:10px 15px 12px 14px;/*上設(shè)置為10px、右設(shè)置為15px、下設(shè)置為12px、左設(shè)置為14px*/
通常有下面三種縮寫(xiě)方法:
1、如果top、right、bottom、left的值相同,如下面代碼:
margin:10px 10px 10px 10px;
可縮寫(xiě)為:
margin:10px;
2、如果top和bottom值相同、left和 right的值相同,如下面代碼:
margin:10px 20px 10px 20px;
可縮寫(xiě)為:
margin:10px 20px;
3、如果left和right的值相同,如下面代碼:
margin:10px 20px 30px 20px;
可縮寫(xiě)為:
margin:10px 20px 30px;
注意:padding、border的縮寫(xiě)方法和margin是一致的。
2、顏色值縮寫(xiě)
關(guān)于顏色的css樣式也是可以縮寫(xiě)的,當(dāng)你設(shè)置的顏色是16進(jìn)制的色彩值時(shí),如果每?jī)晌坏闹迪嗤?,可以縮寫(xiě)一半。
例子1:
p{color:#000000;}
可以縮寫(xiě)為:
p{color: #000;}
例子2:
p{color: #336699;}
可以縮寫(xiě)為:
p{color: #369;}
3、字體縮寫(xiě)
網(wǎng)頁(yè)中的字體css樣式代碼也有他自己的縮寫(xiě)方式,下面是給網(wǎng)頁(yè)設(shè)置字體的代碼:
body{
? ? font-style:italic;
? ? font-variant:small-caps;
? ? font-weight:bold;
? ? font-size:12px;
? ? line-height:1.5em;
? ? font-family:"宋體",sans-serif;
}
這么多行的代碼其實(shí)可以縮寫(xiě)為一句:
body{
? ? font:italic? small-caps? bold? 12px/1.5em? "宋體",sans-serif;
}
注意:
1、使用這一簡(jiǎn)寫(xiě)方式你至少要指定 font-size 和 font-family 屬性,其他的屬性(如 font-weight、font-style、font-variant、line-height)如未指定將自動(dòng)使用默認(rèn)值。
2、在縮寫(xiě)時(shí) font-size 與 line-height 中間要加入“/”斜扛。
一般情況下因?yàn)閷?duì)于中文網(wǎng)站,英文還是比較少的,所以下面縮寫(xiě)代碼比較常用:
body{
? ? font:12px/1.5em? "宋體",sans-serif;
}
只是有字號(hào)、行間距、中文字體、英文字體設(shè)置。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?開(kāi)篇14章
1、顏色值
在網(wǎng)頁(yè)中的顏色設(shè)置是非常重要,有字體顏色(color)、背景顏色(background-color)、邊框顏色(border)等,設(shè)置顏色的方法也有很多種:
1、英文命令顏色
前面幾個(gè)小節(jié)中經(jīng)常用到的就是這種設(shè)置方法:
p{color:red;}
2、RGB顏色
這個(gè)與 photoshop 中的 RGB 顏色是一致的,由 R(red)、G(green)、B(blue) 三種顏色的比例來(lái)配色。
p{color:rgb(133,45,200);}
每一項(xiàng)的值可以是 0~255 之間的整數(shù),也可以是 0%~100% 的百分?jǐn)?shù)。如:
p{color:rgb(20%,33%,25%);}
3、十六進(jìn)制顏色
這種顏色設(shè)置方法是現(xiàn)在比較普遍使用的方法,其原理其實(shí)也是 RGB 設(shè)置,但是其每一項(xiàng)的值由 0-255 變成了十六進(jìn)制 00-ff。
p{color:#00ffff;}
配色表:

2、長(zhǎng)度值
長(zhǎng)度單位總結(jié)一下,目前比較常用到px(像素)、em、% 百分比,要注意其實(shí)這三種單位都是相對(duì)單位。
1、像素
像素為什么是相對(duì)單位呢?因?yàn)橄袼刂傅氖秋@示器上的小點(diǎn)(CSS規(guī)范中假設(shè)“90像素=1英寸”)。實(shí)際情況是瀏覽器會(huì)使用顯示器的實(shí)際像素值有關(guān),在目前大多數(shù)的設(shè)計(jì)者都傾向于使用像素(px)作為單位。
2、em
就是本元素給定字體的 font-size 值,如果元素的 font-size 為 14px ,那么 1em = 14px;如果 font-size 為 18px,那么 1em = 18px。如下代碼:
p{font-size:12px;text-indent:2em;}
上面代碼就是可以實(shí)現(xiàn)段落首行縮進(jìn) 24px(也就是兩個(gè)字體大小的距離)。
下面注意一個(gè)特殊情況:
但當(dāng)給 font-size 設(shè)置單位為?em?時(shí),此時(shí)計(jì)算的標(biāo)準(zhǔn)以 p 的父元素的 font-size 為基礎(chǔ)。如下代碼:
html:
<p>以這個(gè)<span>例子</span>為例。</p>
css:
p{font-size:14px}
span{font-size:0.8em;}
結(jié)果 span 中的字體“例子”字體大小就為 11.2px(14 * 0.8 = 11.2px)。
3、百分比
p{font-size:12px;line-height:130%}
設(shè)置行高(行間距)為字體的130%(12 * 1.3 = 15.6px)。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 開(kāi)篇15章
1、水平居中設(shè)置-行內(nèi)元素
我們?cè)趯?shí)際工作中常會(huì)遇到需要設(shè)置水平居中的場(chǎng)景,比如為了美觀,文章的標(biāo)題一般都是水平居中顯示的。
這里我們又得分兩種情況:行內(nèi)元素?還是?塊狀元素,塊狀元素里面又分為定寬塊狀元素,以及不定寬塊狀元素。今天我們先來(lái)了解一下行內(nèi)元素怎么進(jìn)行水平居中?
如果被設(shè)置元素為文本、圖片等行內(nèi)元素時(shí),水平居中是通過(guò)給父元素設(shè)置text-align:center來(lái)實(shí)現(xiàn)的。(父元素和子元素:如下面的html代碼中,div是“我想要在父容器中水平居中顯示”這個(gè)文本的父元素。反之這個(gè)文本是div的子元素?)如下代碼:
html代碼:
<body>
<div? class="txtCenter">我想要在父容器中水平居中顯示。</div>
</body>
css代碼:
<style>
.txtCenter{
? ? ? ? ? ?text-align:center;
}
</style>
2、水平居中設(shè)置-定寬塊狀元素
當(dāng)被設(shè)置元素為?塊狀元素?時(shí)用 text-align:center 就不起作用了,這時(shí)也分兩種情況:定寬塊狀元素和不定寬塊狀元素。
這一小節(jié)我們先來(lái)講一講定寬塊狀元素。(定寬塊狀元素:塊狀元素的寬度width為固定值。)
滿(mǎn)足定寬和塊狀兩個(gè)條件的元素是可以通過(guò)設(shè)置“左右margin”值為“auto”來(lái)實(shí)現(xiàn)居中的。我們來(lái)看個(gè)例子就是設(shè)置?div?這個(gè)塊狀元素水平居中:
html代碼:
<body>
<div>我是定寬塊狀元素,哈哈,我要水平居中顯示。</div>
</body>
css代碼:
<style>
div{
border:1px solid red;/*為了顯示居中效果明顯為 div 設(shè)置了邊框*/?
width:200px;/*定寬*/
margin:20px auto;/* margin-left 與 margin-right 設(shè)置為 auto */
</style>
也可以寫(xiě)成:
margin-left:auto;
margin-right:auto;
注意:元素的“上下 margin” 是可以隨意設(shè)置的。
3、水平居中總結(jié)-不定寬塊狀元素方法(一)
在實(shí)際工作中我們會(huì)遇到需要為“不定寬度的塊狀元素”設(shè)置居中,比如網(wǎng)頁(yè)上的分頁(yè)導(dǎo)航,因?yàn)榉猪?yè)的數(shù)量是不確定的,所以我們不能通過(guò)設(shè)置寬度來(lái)限制它的彈性。(不定寬塊狀元素:塊狀元素的寬度width不固定。)
不定寬度的塊狀元素有三種方法居中(這三種方法目前使用的都很多):
加入?table?標(biāo)簽
設(shè)置display: inline方法:與第一種類(lèi)似,顯示類(lèi)型設(shè)為?行內(nèi)元素,進(jìn)行不定寬元素的屬性設(shè)置
設(shè)置?position:relative和 left:50%:利用相對(duì)定位?的方式,將元素向左偏移50%?,即達(dá)到居中的目的
這一小節(jié)我們來(lái)講一下第一種方法:
為什么選擇方法一加入table標(biāo)簽? 是利用table標(biāo)簽的長(zhǎng)度自適應(yīng)性---即不定義其長(zhǎng)度也不默認(rèn)父元素body的長(zhǎng)度(table其長(zhǎng)度根據(jù)其內(nèi)文本長(zhǎng)度決定),因此可以看做一個(gè)定寬度塊元素,然后再利用定寬度塊狀居中的margin的方法,使其水平居中。
第一步:為需要設(shè)置的居中的元素外面加入一個(gè) table 標(biāo)簽 ( 包括 、、?)。
第二步:為這個(gè) table 設(shè)置“左右 margin 居中”(這個(gè)和定寬塊狀元素的方法一樣)。
舉例如下:
html代碼:
<div>
<table>
<tbody>
<tr><td>
<ul>
<li>11111</li>
<li>2222>/li>
<li>3333</li>
? ? ? ? ?</ul>
? ? ? ? </tr></td>
? ? ? ? ?</tbody>
? ? ? ? ? </table>
? ? ? ? ?</div>
css代碼:
<style>
table{ border:1px solid;?
?margin:0 auto;
}
</style>
4、水平居中總結(jié)-不定寬塊狀元素方法(二)
除了上一節(jié)講到的插入table標(biāo)簽,可以使不定寬塊狀元素水平居中之外,本節(jié)介紹第2種實(shí)現(xiàn)這種效果的方法,改變?cè)氐膁isplay類(lèi)型為行內(nèi)元素,利用其屬性直接設(shè)置。
第二種方法:改變塊級(jí)元素的 display 為 inline 類(lèi)型(設(shè)置為?行內(nèi)元素?顯示),然后使用?text-align:center?來(lái)實(shí)現(xiàn)居中效果。如下例子:
html代碼:
<body>
????<div? ?class="container">
????????<ul>
????????????????<li><a? ?href="#">1</a></li>
????????????????<li><a? href="#">2</a></li>
????????????????<li><a? ?href="#">3</a></li>
????????</ul>????????
????</div>
</body>
CSS代碼:
<style>
????.container{text-align:center;}/*margin:0;padding:0(消除文本與div邊框之間的間隙)*/
????.container ul{ list-style:none; margin:0; padding:0;display:inline;}/* margin-right:8px(設(shè)置li文本之間的間隔)*/
????.container li{ margin-right:8px; display:inline;}
</style>
這種方法相比第一種方法的優(yōu)勢(shì)是不用增加無(wú)語(yǔ)義標(biāo)簽,但也存在著一些問(wèn)題:它將塊狀元素的 display 類(lèi)型改為 inline,變成了行內(nèi)元素,所以少了一些功能,比如設(shè)定長(zhǎng)度值。
5、水平居中總結(jié)-不定寬塊狀元素方法(三)
除了前兩節(jié)講到的插入table標(biāo)簽,以及改變?cè)氐膁isplay類(lèi)型,可以使不定寬塊狀元素水平居中之外,本節(jié)介紹第3種實(shí)現(xiàn)這種效果的方法,設(shè)置浮動(dòng)和相對(duì)定位來(lái)實(shí)現(xiàn)。
方法三:通過(guò)給父元素設(shè)置?float,然后給父元素設(shè)置?position:relative?和?left:50%,子元素設(shè)置?position:relative?和?left:-50%?來(lái)實(shí)現(xiàn)水平居中。
我們可以這樣理解:假想ul層的父層(即下面例子中的div層)中間有條平分線(xiàn)將ul層的父層(div層)平均分為兩份,ul層的css代碼是將ul層的最左端與ul層的父層(div層)的平分線(xiàn)對(duì)齊;而li層的css代碼則是將li層的平分線(xiàn)與ul層的最左端(也是div層的平分線(xiàn))對(duì)齊,從而實(shí)現(xiàn)li層的居中。
<body>
? ? <div? class="container">
? ????? <ul>
? ? ? ? ? ? ? ? ?<li>? <a? href="#">1</a></li>
? ????????????? <li>? <a? href="#">2</a></li>
? ????????????? <li>? <a? href="#">3</a></li>
????????</ul>
????</div>
</body>
css代碼:
<style>
.container{
? ? float:left;
? ? position:relative;
? ? left:50%}
.container ul{
? ? ? list-style:none;? ??
? ? ? margin:0;? ??
? ? ? padding:0;?
? ? ? position:relative;
? ? ? left:-50%;}
.container li{
? ? ? float:left;
? ? ? display:inline;
? ? ? ?margin-right:8px;}
</style>
這三種方法使用得都非常廣泛,各有優(yōu)缺點(diǎn),具體選用哪種方法,可以視具體情況而定。
6、垂直居中-父元素高度確定的單行文本
我們?cè)趯?shí)際工作中也會(huì)遇到需要設(shè)置垂直居中的場(chǎng)景,比如好多報(bào)紙的文章標(biāo)題在左右一側(cè)時(shí),常常會(huì)設(shè)置為垂直居中,為了用戶(hù)體驗(yàn)性好。
這里我們又得分兩種情況:父元素高度確定的單行文本,以及父元素高度確定的多行文本。
本節(jié)我們先來(lái)看第一種父元素高度確定的單行文本, 怎么設(shè)置它為垂直居中呢?
父元素高度確定的單行文本的豎直居中的方法是通過(guò)設(shè)置父元素的height和line-height?高度一致來(lái)實(shí)現(xiàn)的。(height: 該元素的高度,line-height: 顧名思義,行高(行間距),指在文本中,行與行之間的基線(xiàn)間的距離?)。
line-height?與?font-size?的計(jì)算值之差,在?CSS?中成為“行間距”。分為兩半,分別加到一個(gè)文本行內(nèi)容的頂部和底部。
這種文字行高與塊高一致帶來(lái)了一個(gè)弊端:當(dāng)文字內(nèi)容的長(zhǎng)度大于塊的寬時(shí),就有內(nèi)容脫離了塊。
如下代碼:
<div? class="container">
? ? hi,imooc!
</div>
CSS代碼:
<style>
????.container{
????????????height:100px;
????????????line-height:100px;
????????????background:#999;
????????????}
</style>
7、垂直居中-父元素高度確定的多行文本(方法一)
父元素高度確定的多行文本、圖片等的豎直居中的方法有兩種:
方法一:使用插入?table??(包括tbody、tr、td)標(biāo)簽,同時(shí)設(shè)置?vertical-align:middle。
css?中有一個(gè)用于豎直居中的屬性?vertical-align,在父元素設(shè)置此樣式時(shí),會(huì)對(duì)inline-block類(lèi)型的子元素都有用。下面看一下例子:
html代碼:
<body>
????<table><tbody><tr><td? class="wrap">
????????????<div>
????????????????<p>看我是否可以居中</p>
????????????</div>????????
? ? ? ?</td></tr></tbody></table>
</body>
css代碼:
table td{height:500px;background:#ccc}
因?yàn)?td?標(biāo)簽?zāi)J(rèn)情況下就默認(rèn)設(shè)置了?vertical-align?為?middle,所以我們不需要顯式地設(shè)置了。
8、垂直居中-父元素高度確定的多行文本(方法二)
除了上一節(jié)講到的插入table標(biāo)簽,可以使父元素高度確定的多行文本垂直居中之外,本節(jié)介紹另外一種實(shí)現(xiàn)這種效果的方法。但這種方法兼容性比較差,只是提供大家學(xué)習(xí)參考。
在?chrome、firefox?及?IE8?以上的瀏覽器下可以設(shè)置塊級(jí)元素的?display?為?table-cell(設(shè)置為表格單元顯示),激活?vertical-align?屬性,但注意?IE6、7?并不支持這個(gè)樣式,?兼容性比較差。
html代碼:
<div? class="container">
? ? <div>
? ? ? ? <p>看我是否可以居中</p>
? ? ? ? <p>看我是否可以居中</p>
? ? ? ? <p>看我是否可以居中</p>
? ? </div>
</div>
CSS代碼:
<style>
.container{?
?height:300px;?
?background:#ccc;?
?display:table-cell;/*IE8以上及Chrome、Firefox*/
vertical-align:middle;/*IE8以上及Chrome、Firefox*/
}
</style>
這種方法的好處是不用添加多余的無(wú)意義的標(biāo)簽,但缺點(diǎn)也很明顯,它的兼容性不是很好,不兼容?IE6、7而且這樣修改display的block變成了table-cell,破壞了原有的塊狀元素的性質(zhì)。
9、隱性改變display類(lèi)型
有一個(gè)有趣的現(xiàn)象就是當(dāng)為元素(不論之前是什么類(lèi)型元素,display:none?除外)設(shè)置以下?2?個(gè)句之一:
2.?float : left 或?float:right
簡(jiǎn)單來(lái)說(shuō),只要html代碼中出現(xiàn)以上兩句之一,元素的display顯示類(lèi)型就會(huì)自動(dòng)變?yōu)橐?display:inline-block(塊狀元素)的方式顯示,當(dāng)然就可以設(shè)置元素的?width?和?height?了,且默認(rèn)寬度不占滿(mǎn)父元素。
如下面的代碼,小伙伴們都知道?a?標(biāo)簽是?行內(nèi)元素?,所以設(shè)置它的width?是 沒(méi)有效果的,但是設(shè)置為?position:absolute?以后,就可以了。
<div? class="container">
? ? <a? href="#"? title="">進(jìn)入課程請(qǐng)單擊這里</a>
</div>
CSS代碼:
<style>
????.container a{
????????????position:absolute;
????????????width:200px;?
?????????????background:#ccc;
????????????}
</style>