1.CSS三大特性
1.1 層疊性
- 作用:相同選擇器設(shè)置相同樣式,此時(shí)一個樣式會覆蓋另一個沖突的樣式拟逮,主要解決樣式?jīng)_突問題檀头。
- 層疊性原則:
- 就近原則:樣式?jīng)_突,哪個樣式離結(jié)構(gòu)近憔古,執(zhí)行哪個樣式。
- 樣式如果不沖突淋袖,則不重疊鸿市。
顏色被后面的pink覆蓋,但是字號沒有覆蓋适贸。div{ color:black; font-size:12px; } div{ color:pink; }
1.2 繼承性
- 作用:子標(biāo)簽會繼承父標(biāo)簽的某些樣式灸芳,如文字顏色和字號涝桅。
- 恰當(dāng)使用繼承拜姿,可以簡化代碼烙样,降低CSS樣式的復(fù)雜性。
- 子元素可以繼承父元素的樣式(
text-蕊肥,font-谒获,line-
這些元素開頭的可以繼承,以及color屬性
)
1.2.1 行高的繼承性
- 行高可以不跟單位壁却,表示是當(dāng)前字號的倍數(shù)
- 如果子元素沒有設(shè)置行高批狱,會繼承父元素的行高
- 此時(shí)子元素的行高是:當(dāng)前子元素字號的倍數(shù)
body { font: 12px/1.5 "microsoft yahei"; } p{ font-size:15px; } h3{ font-size: 10px; }
p標(biāo)簽
的行高為 15px乘上1.5,為22.5px的行高展东,此時(shí)p標(biāo)簽
繼承了父元素body
的行高設(shè)置赔硫。
注意:如果子元素的字號大小小于父元素的字號,則行高不會是當(dāng)前子元素字號的倍數(shù)了盐肃,而是父元素的行高WΣ病!
1.3 優(yōu)先級
- 作用:當(dāng)同一個元素指定多個選擇器砸王,就會有 優(yōu)先級 的產(chǎn)生推盛。
- 選擇器相同,則執(zhí)行 層疊性
- 選擇器不同谦铃,則根據(jù) 選擇器權(quán)重 執(zhí)行
1.3.1 選擇器權(quán)重
選擇器 | 選擇器權(quán)重 |
---|---|
繼承 或 * | 0,0,0,0 |
元素選擇器 | 0,0,0,1 |
類選擇器 | 0,0,1,0 |
id選擇器 | 0,1,0,0 |
行內(nèi)選擇器 | 1,0,0,0 |
!important 重要的 | 無窮大 |
- 注意:
1.權(quán)重是有4組數(shù)字組成耘成,但是不會有進(jìn)位。
2.可以理解為類選擇器(10)永遠(yuǎn)大于 元素選擇器(1)驹闰,id選擇器(100) 永遠(yuǎn)大于 類選擇器(10)瘪菌,以此類推。
3.等級判斷從左到右嘹朗,若某一位數(shù)值相同师妙,則判斷下一位數(shù)值。
4.繼承的權(quán)重是0骡显,若該元素沒有直接選中疆栏,不管父元素權(quán)重多高,子元素得到的權(quán)重都是0惫谤。即有直接選中元素的樣式壁顶,就執(zhí)行該樣式。
注意:對于
a標(biāo)簽
溜歪,由于瀏覽器默認(rèn)制定了一個樣式(藍(lán)色若专,有下劃線),所以父元素的設(shè)置對它無效蝴猪。
1.3.2 權(quán)重疊加
- 權(quán)重疊加:如果是復(fù)合選擇器调衰,則會有權(quán)重疊加膊爪,需計(jì)算權(quán)重。
- 如
ul li{ ... }
和li{ ... }
嚎莉,前面的權(quán)重為0,0,0,1+0,0,0,1=0,0,0,2米酬,后面的為0,0,0,1,則選擇前面的樣式趋箩。如.div li
赃额,權(quán)重為0,0,1,0+0,0,0,1=0,0,1,1。
a:hover
叫确,權(quán)重為0,0,0,1+0,0,1,0=0,0,1,1道盏,:hover
是偽類選擇器口柳,權(quán)重為0,0,1,0励饵。
2.盒子模型(BOX Model)
- 網(wǎng)頁布局
- 首先利用CSS設(shè)置好盒子的大小肿嘲,擺放好盒子的位置
- 最后把網(wǎng)頁元素放入盒子里面
- 盒子模型由四部分組成:元素的內(nèi)容、邊框(border)次乓、內(nèi)邊距(padding)吓歇、外邊距(margin)。
- 盒子里的文字和圖片等元素是 內(nèi)容區(qū)域
- 盒子的厚度是 邊框
- 盒子內(nèi)容與邊框的距離是 內(nèi)邊距 (類似單元格的cellpadding)
- 盒子與盒子之間的距離是 外邊距 (類似單元格的cellspacing)
3.盒子邊框(border)
3.1 概念
- 語法:
border: border-width || border-style || border-color
- 邊框可以綜合設(shè)置:如
border:2px solid red;
(沒有順序)
- 邊框可以綜合設(shè)置:如
和
font屬性
的綜合寫法不一樣檬输,font:font-style font-weight font-size font-family;
是固定順序照瘾。
- 屬性:
- border-width:邊框的粗細(xì),單位是px
- border-style:邊框的樣式
- border-color:邊框的顏色
- 邊框的樣式:
- none:(默認(rèn)值)沒有邊框丧慈,忽略邊框的寬度
- solid:單實(shí)線
- dashed:虛線
- dotted:點(diǎn)線
3.2 盒子四個邊框分別設(shè)置
- 盒子邊框分為4個:上邊框(border-top)析命、下邊框(border-bottom)、左邊框(border-left)逃默、右邊框(border-right)鹃愤。
- 可以分別對 邊框的粗細(xì)、樣式完域、顏色設(shè)置软吐,如
border-top-color:red;
、border-left-style:solid;
等吟税。 - 可以進(jìn)行綜合設(shè)置:如
border-top:2px solid red;
注意:要想只設(shè)置一邊的邊框凹耙,首先用
border:none
讓所有邊框取消,再用border-bottom: ;
設(shè)置自己需要的那一邊的邊框肠仪。
3.3 表格的細(xì)線邊框
- 原因:在表格的設(shè)置中肖抱,通過表格的
cellspacing="0px"
,將單元格與單元格之間的距離設(shè)置為0px异旧,但是兩個單元格之間的邊框會出現(xiàn)重疊意述,是邊框變粗。 - 解決:通過CSS中的
table {border-collapse:collapse; }
來取消重疊現(xiàn)象。- collapse 是合并的意思
- border-collapse:collapse;表示相鄰邊框合并在一起
3.4 邊框會影響盒子實(shí)際大小
- 當(dāng)設(shè)置邊框?qū)挾?code>border-width屬性時(shí)荤崇,會在原有的盒子大小上往外擴(kuò)大一定范圍拌屏。如
div{width:200px; height:200px; border:20px solid red;}
,此時(shí)盒子的整體大小為240px * 240px. - 解決:
1.測量盒子大小的時(shí)候术荤,不量邊框倚喂。(即只量內(nèi)部大小)
2.如果測量的時(shí)候包含了邊框喜每,需要width/height減去邊框?qū)挾?/strong>务唐。
4.內(nèi)邊距
4.1 概念
-
padding屬性
設(shè)置內(nèi)邊距雳攘,是指 內(nèi)容與邊框之間的距離带兜。
4.2 設(shè)置
- 屬性:
- padding-left:左內(nèi)邊距
- padding-right:右內(nèi)邊距
- padding-top:上內(nèi)邊距
- padding-bottom:下內(nèi)邊距
注意:設(shè)置
padding值
后,盒子會變大吨灭。
這有“利”也有“弊”:
“利”: 可以利用padding內(nèi)邊距
會撐開盒子刚照,保證里面的文字一直是在盒子居中顯示。
“弊”: 要想使盒子大小固定喧兄,就要減去內(nèi)邊距的大小无畔。是兩邊的距離哦
- 簡寫:
- 1個值:
padding: 上下左右 內(nèi)邊距;
- 2個值:
padding: 上下內(nèi)邊距 左右內(nèi)邊距;
- 3個值:
padding: 上內(nèi)邊距 左右內(nèi)邊距 下內(nèi)邊距;
- 4個值:
padding: 上內(nèi)邊距 右內(nèi)邊距 下內(nèi)邊距 左內(nèi)邊距;
- 1個值:
4.3 內(nèi)邊距不會撐開盒子的情況
- 當(dāng)盒子本身沒有直接指定
width/height屬性
時(shí),此時(shí)padding不會撐開盒子吠冤。
注意:
1.誰沒有被指定浑彰,誰就不變化。若width
沒被指定拯辙,height
被指定了郭变,則寬度不變,高度變化涯保。
2.子元素繼承的父元素大小诉濒,不屬于被直接指定。因此即使有內(nèi)邊距夕春,子元素的大小還是父元素的大小未荒。
5.外邊距
5.1 概念
margin屬性
用于設(shè)置外邊距,控制盒子與盒子之間的距離及志。
5.2 設(shè)置
- 屬性:
- margin-top: 上外邊距
- margin-right: 右外邊距
- margin-bottom: 下外邊距
- margin-left: 左外邊距
- 簡寫:和
padding屬性
的簡寫一模一樣片排。
5.3 典型應(yīng)用
- 外邊距可以讓塊級盒子 水平居中,但必須滿足兩個條件:
- 盒子必須指定了寬度(width)
- 盒子左右的外邊距都設(shè)置為auto
- 常見寫法:
-
margin:0 auto;
最常見速侈。上下外邊距為0px率寡,左右居中。 -
margin:auto;
上下左右都居中锌畸。
-
注意: 以上只是讓塊級元素水平居中勇劣,對行內(nèi)元素或行內(nèi)塊級元素無效,因?yàn)檫@兩個元素無法設(shè)置寬度
- 對行內(nèi)和行內(nèi)塊的解決方法:
- 給其父元素添加
text-align:center
即可。
- 給其父元素添加
5.4 外邊距合并
- 使用
margin屬性
定義元素垂直外邊距時(shí)比默,可能會出現(xiàn)外邊距的合并幻捏。- 垂直外邊距:
margin-top
或margin-bottom
- 垂直外邊距:
- 兩種情況:
1.相鄰塊元素垂直外邊距的合并(兄弟關(guān)系)
2.嵌套塊元素垂直外邊距的塌陷(父子關(guān)系)
5.4.1 相鄰塊元素垂直外邊距的合并
- 概念:當(dāng)上下兩個塊元素(兄弟關(guān)系),分別設(shè)置
margin-bottom
和margin-top
時(shí)命咐,垂直的間距并不是兩者的距離和篡九,而是取兩者中較大的值作為垂直的間距。 - 取兩個值中較大值的現(xiàn)象稱為相鄰塊元素垂直外邊距的合并醋奠。
- 解決:盡量只給一個盒子添加 margin 值榛臼。
5.4.2 嵌套塊元素垂直外邊距的塌陷
- 概念:對于兩個嵌套關(guān)系(父子關(guān)系)的塊元素,父元素有上外邊距同時(shí)子元素也有上外邊距窜司,此時(shí)子元素并不會相對父元素移動沛善,因?yàn)榇藭r(shí)父元素會同時(shí)塌陷較大的外邊距值。
- 解決方案:
1.給父元素添加overflow:hidden;
最常用
2.給父元素定義內(nèi)邊距塞祈。(會影響盒子大薪鸬蟆)
3.給父元素定義邊框。(會影響盒子大幸樾健)
還有其他方法尤蛮,如浮動、固定斯议,絕對定位的盒子不會有塌陷問題产捞。
6.清除內(nèi)外邊距
- 原因:網(wǎng)頁元素很多帶有默認(rèn)的內(nèi)外邊距,而且不同瀏覽器默認(rèn)的也不一致哼御。因此在布局之前坯临,首先清楚下網(wǎng)頁元素的內(nèi)外邊距。
- 方法:
*{ padding:0; /*清除內(nèi)邊距*/ margin:0; /*清除外邊距*/ }
注意: 行內(nèi)元素為了照顧兼容性艇搀,盡量只設(shè)置左右內(nèi)外邊距尿扯,不設(shè)置上下的,但是轉(zhuǎn)換成塊級和行內(nèi)塊就可以了焰雕。
7.CSS3新增屬性
7.1 圓角邊框
- 概念:
border-radius屬性
設(shè)置元素的外邊框圓角衷笋。 - 語法:
border-radius: length;
radius: 半徑(圓的半徑)- 半徑越大,圓角也就越大
- 參數(shù)可以是數(shù)值或者百分比的形式
- 如果是正方形矩屁,想設(shè)置成一個圓辟宗,把數(shù)值修改成高度或?qū)挾鹊囊话?/strong>,或者直接寫成50%
border-radius:50%;
- 這個屬性是簡寫屬性吝秕,可以分別設(shè)置4個值泊脐,分別代表左上角、右上角烁峭、右下角容客、左下角秕铛,也可以設(shè)置1個、2個缩挑、3個值但两,表示的和border屬性的簡寫差不多。
- 分開寫:
border-top-left-radius
供置。先寫上/下谨湘,再寫左/右。
- 原理:所形成的圓角芥丧,是(橢)圓與邊框的交集所形成的效 果紧阔。
7.2 盒子陰影
- 語法:
box-shadow: h-shadow v-shadow blur spread color inset;
-
h-shadow
:(必需)水平陰影的位置,允許負(fù)值续担。負(fù)值就是陰影向左移動擅耽。 -
v-shadow
:(必需)垂直陰影的位置,允許負(fù)值赤拒。負(fù)值就是陰影向上移動秫筏。 -
blur
:(可選)模糊距離,也就是陰影的虛實(shí)挎挖。0是實(shí)影,越大陰影越虛航夺。 -
spread
:(可選)陰影尺寸蕉朵。陰影范圍的大小。 -
color
:(可選)陰影的顏色阳掐。一般使用rgba()表示始衅。 -
inset
:默認(rèn)是外部陰影,即什么都不寫就是外部陰影缭保。內(nèi)部陰影為(intset)汛闸。
-
注意:
1.對于inset屬性
,不能寫outset艺骂,如果寫的話诸老,就沒有陰影效果了。默認(rèn)就是外陰影钳恕。
2.盒子陰影不占空間别伏,不影響其他盒子的排列。即陰影部分可以被其他盒子擋住忧额。
7.3 文字陰影
- 語法:
text-shadow: h-shadow v-shadow blur color
- h-shadow:(必需)水平陰影的位置厘肮,允許負(fù)值。
- v-shadow:(必需)垂直陰影的位置睦番,允許負(fù)值类茂。
- blur:(可選)模糊的距離耍属。
- color:(可選)陰影的顏色。