CSS MDN文檔閱讀筆記-CSS介紹

因?yàn)楣厩岸诵枰然痍?duì)員,所以臨危受命履婉,擺正心態(tài)煤篙,閱讀第一手資料,從MDN文檔入手毁腿。

定義

CSS: (Cascading Style Sheets) 是用來樣式化和排版你的網(wǎng)頁的辑奈,是一種用于向用戶指定文檔如何呈現(xiàn)的語言 — 它們?nèi)绾伪恢付邮健⒉季值?/p>

CSS是如何工作的已烤?

當(dāng)瀏覽器顯示文檔時(shí)鸠窗,它分為兩個(gè)階段處理文檔:

  1. 瀏覽器將HTML和 CSS 轉(zhuǎn)化成 DOM。DOM在計(jì)算機(jī)內(nèi)存中表示文檔胯究。它把文檔內(nèi)容和其樣式結(jié)合在一起稍计。
  2. 瀏覽器顯示 DOM 的內(nèi)容


CSS引用方式

  • 外部樣式表
    保存為.css文件,如何用<link>元素引用裕循。這種方法可以說是最好的臣嚣,因?yàn)槟憧梢允褂靡粋€(gè)樣式表來設(shè)置多個(gè)文檔的樣式,并且需要更新 CSS 的時(shí)候只要在一個(gè)地方更新剥哑。
  • 內(nèi)部樣式表
    CSS 放置在<style>元素中茧球,該元素包含在 HTML head 內(nèi)。
  • 內(nèi)聯(lián)樣式
    <p style="color:red;">This is my first CSS example</p> 如非必要不要這樣做星持,很難維護(hù)。

CSS語法 (這部分需要?jiǎng)邮志?+ 隨時(shí)查詢文檔)

CSS聲明

如果使用了未知屬性弹灭,或者給屬性賦予了無效值督暂,該聲明會(huì)被視為無效,瀏覽器的 CSS 引擎會(huì)完全忽略它

CSS聲明塊

CSS 選擇器和規(guī)則

如果鏈或組中的某個(gè)選擇器無效穷吮,比如使用了未知的偽元素或偽類逻翁,整個(gè)組的選擇器仍然是有效的,除了這個(gè)無效的將被忽略的選擇器捡鱼。

CSS 語句

CSS 規(guī)則是樣式表的主要組成塊 —— 是你在 CSS 中最常見的塊八回。但這有一些其它類型的塊,你以后偶爾會(huì)碰上 —— CSS 規(guī)則只是被稱為 CSS 語句中的一種
@-規(guī)則(At-rules)在CSS中被用來傳遞元數(shù)據(jù)驾诈、條件信息或其它描述性信息缠诅。它由(@)符號(hào)開始,緊跟著一個(gè)表明它是哪種規(guī)則的描述符乍迄,之后是這種規(guī)則的語法塊闯两,并最終由一個(gè)半角分號(hào)(;)結(jié)束。每種由描述符定義的@-規(guī)則饥臂,都有其特有的內(nèi)部語法和語義隅熙。一些例子如下:
@charset 和 @import (元數(shù)據(jù))
@media 或 @document (條件信息猛们,又被稱為嵌套語句弯淘,見下方庐橙。)
@font-face (描述性信息)

簡(jiǎn)寫

比如 font ,background,padding,border,magin允許一行設(shè)置多個(gè)屬性态鳖,使代碼簡(jiǎn)潔浆竭。

/* 在padding和margin這樣的簡(jiǎn)寫屬性中邦泄,值賦值的順序是top顺囊、right、bottom午乓、left硅瞧。它們還有其他簡(jiǎn)寫方式腕唧,例如給padding兩個(gè)值枣接,則第一個(gè)值表示top/bottom耳鸯,第二個(gè)值表示left/right */
padding: 10px 15px 15px 5px;

等同于

padding-top: 10px;
padding-right: 15px;
padding-bottom: 15px;
padding-left: 5px;

再比如:

background: red url(bg-graphic.png) 10px 10px repeat-x fixed;
等同于

background-color: red;
background-image: url(bg-graphic.png);
background-position: 10px 10px;
background-repeat: repeat-x;
background-scroll: fixed;

選擇器

  • 簡(jiǎn)單選擇器(Simple selectors):通過元素類型、class或者id匹配一個(gè)或多個(gè)元素财喳。
  • 屬性選擇器(Attribute selectors):通過 屬性 / 屬性值 匹配一個(gè)或多個(gè)元素耳高。
[attr]:該選擇器選擇包含 attr 屬性的所有元素泌枪,不論 attr 的值為何碌燕。
[attr=val]:該選擇器僅選擇 attr 屬性被賦值為 val 的所有元素陆蟆。
[attr~=val]:該選擇器僅選擇具有 attr 屬性的元素改鲫,而且要求 val 值是 attr
[attr|=val] : 選擇attr屬性的值是 val 或值以 val- 開頭的元素(注意,這里的 “-” 不是一個(gè)錯(cuò)誤,這是用來處理語言編碼的)截歉。
[attr^=val] : 選擇attr屬性的值以 val 開頭(包括 val)的元素瘪松。
[attr$=val] : 選擇attr屬性的值以 val 結(jié)尾(包括 val)的元素宵睦。
[attr*=val] : 選擇attr屬性的值中包含子字符串 val 的元素(一個(gè)子字符串就是一個(gè)字符串的一部分而已桐智,例如说庭,”cat“ 是 字符串 ”caterpillar“ 的子字符串)刊驴。

值包含的被空格分隔的取值列表里中的一個(gè)。

  • 偽類(Pseudo-classes):匹配處于確定狀態(tài)的一個(gè)或多個(gè)元素攻礼,比如被鼠標(biāo)指針懸停的元素,或當(dāng)前被選中或未選中的復(fù)選框太伊,或元素是DOM樹中一父節(jié)點(diǎn)的第一個(gè)子節(jié)點(diǎn)。
a:link { color: blue } /* 未訪問鏈接 */
a:visited { color: purple } /* 已訪問鏈接 */
a:hover { font-weight: bold } /* 用戶鼠標(biāo)懸停 */
a:active { color: lime } /* 激活鏈接 */
  • 偽元素(Pseudo-elements):匹配處于相關(guān)的確定位置的一個(gè)或多個(gè)元素芳悲,例如每個(gè)段落的第一個(gè)字,或者某個(gè)元素之前生成的內(nèi)容肮韧。
q::before { 
  content: "?";
  color: blue;
}
q::after { 
  content: "?";
  color: red;
}
  • 組合器(Combinators):這里不僅僅是選擇器本身弄企,還有以有效的方式組合兩個(gè)或更多的選擇器用于非常特定的選擇的方法淋纲。例如,你可以只選擇divs的直系子節(jié)點(diǎn)的段落,或者直接跟在headings后面的段落为障。
名稱 組合器 選擇
選擇器組 A,B 匹配滿足A(和/或)B的任意元素
后代選擇器 A B 匹配B元素,滿足條件:B是A的后代結(jié)點(diǎn)(B是A的子節(jié)點(diǎn),或者A的子節(jié)點(diǎn)的子節(jié)點(diǎn))
子選擇器 A > B 匹配B元素侦香,滿足條件:B是A的直接子節(jié)點(diǎn)
相鄰兄弟選擇器 A + B 匹配B元素污朽,滿足條件:B是A的下一個(gè)兄弟節(jié)點(diǎn)(AB有相同的父結(jié)點(diǎn)矾睦,并且B緊跟在A的后面)
通用兄弟選擇器 A ~ B 匹配B元素柬赐,滿足條件:B是A之后的兄弟節(jié)點(diǎn)中的任意一個(gè)(AB有相同的父節(jié)點(diǎn)州藕,B在A之后毁涉,但不一定是緊挨著A)
  • 多重選擇器(Multiple selectors):這些也不是單獨(dú)的選擇器待牵;這個(gè)思路是將以逗號(hào)分隔開的多個(gè)選擇器放在一個(gè)CSS規(guī)則下面, 以將一組聲明應(yīng)用于由這些選擇器選擇的所有元素蛤袒。
h1, h2, h3, h4, h5, h6 {
  font-family: helvetica, 'sans serif';
}

CSS數(shù)值與單位

數(shù)值

像素 (px) 是一種絕對(duì)單位(absolute units)询一, 因?yàn)闊o論其他相關(guān)的設(shè)置怎么變化,像素指定的值是不會(huì)變化的。其他的絕對(duì)單位如下:

  • mm, cm, in: 毫米(Millimeters),厘米(centimeters),英寸(inches)
  • pt, pc: 點(diǎn)(Points (1/72 of an inch))及皂, 十二點(diǎn)活字( picas (12 points.))

也有相對(duì)單位又跛,他們是相對(duì)于當(dāng)前元素的字號(hào)( font-size )或者視口尺寸。

  • em:1em與當(dāng)前元素的字體大小相同(更具體地說济丘,一個(gè)大寫字母M的寬度)。CSS樣式被應(yīng)用之前峡碉,瀏覽器給網(wǎng)頁設(shè)置的默認(rèn)基礎(chǔ)字體大小是16像素近哟,這意味著對(duì)一個(gè)元素來說1em的計(jì)算值默認(rèn)為16像素。但是要小心—em單位是會(huì)繼承父元素的字體大小鲫寄,所以如果在父元素上設(shè)置了不同的字體大小吉执,em的像素值就會(huì)變得復(fù)雜。現(xiàn)在不要過于擔(dān)心這個(gè)問題地来,我們將在后面的文章和模塊中更詳細(xì)地介紹繼承和字體大小設(shè)置戳玫。em是Web開發(fā)中最常用的相對(duì)單位
  • ex, ch: 分別是小寫x的高度和數(shù)字0的寬度未斑。這些并不像em那樣被普遍使用或很好地被支持咕宿。
  • rem: REM(root em)和em以同樣的方式工作,但它總是等于默認(rèn)基礎(chǔ)字體大小的尺寸蜡秽;繼承的字體大小將不起作用府阀,所以這聽起來像一個(gè)比em更好的選擇,雖然在舊版本的IE上不被支持(查看關(guān)于跨瀏覽器支持 Debugging CSS.)
  • vw, vh: 分別是視口寬度的1/100和視口高度的1/100芽突,其次试浙,它不像rem那樣被廣泛支持。
  • 0為無單位數(shù)值

百分比

針對(duì)父元素的百分比

顏色

  • 關(guān)鍵詞
  • 十六進(jìn)制值 如:#e0b0ff
  • RGB 如 rgb(255,0,0)
  • HSL 如 hsl(0,100%,50%)
  • RGBA 和 HSLA 多了透明度 如rgba(255,0,0,0.5) hsla(240,100%,50%,0.5);
  • 不透明度(Opacity)

函數(shù)

每當(dāng)你看到一個(gè)名字后跟著括號(hào),括號(hào)里包含用逗號(hào)分隔的一個(gè)或多個(gè)值,那么你所使用的就是一個(gè)函數(shù)寞蚌。例如:

/* calculate the new position of an element after it has been rotated by 45 degress */
transform: rotate(45deg);
/* calculate the new position of an element after it has been moved across 50px and down 60px */
transform: translate(50px, 60px);
/* calculate the computed value of 90% of the current width minus 15px */
width: calc(90%-15px);
/* fetch an image from the network to be used as a background image */
background-image: url('myimage.png');

層疊和繼承

層疊性 : 就近原則

一般情況下田巴,如果出現(xiàn)樣式?jīng)_突力细,則會(huì)按照CSS書寫的順序,以最后的樣式為準(zhǔn)固额。

  1. 樣式?jīng)_突,遵循的原則是就近原則煞聪。 那個(gè)樣式離著結(jié)構(gòu)近斗躏,就執(zhí)行那個(gè)樣式。
  2. 樣式不沖突昔脯,不會(huì)層疊
  3. 貢獻(xiàn)值
    關(guān)于CSS權(quán)重啄糙,我們需要一套計(jì)算公式來去計(jì)算,這個(gè)就是 CSS Specificity云稚,我們稱為CSS 特性或稱非凡性隧饼,它是一個(gè)衡量CSS值優(yōu)先級(jí)的一個(gè)標(biāo)準(zhǔn) 具體規(guī)范入如下:

specificity用一個(gè)四位的數(shù) 字串(CSS2是三位)來表示,更像四個(gè)級(jí)別静陈,值從左到右燕雁,左面的最大,一級(jí)大于一級(jí)鲸拥,數(shù)位之間沒有進(jìn)制拐格,級(jí)別之間不可超越。

繼承或者* 的貢獻(xiàn)值 0,0,0,0
每個(gè)元素(標(biāo)簽)貢獻(xiàn)值為 0,0,0,1
每個(gè)類刑赶,偽類貢獻(xiàn)值為 0,0,1,0
每個(gè)ID貢獻(xiàn)值為 0,1,0,0
每個(gè)行內(nèi)樣式貢獻(xiàn)值 1,0,0,0
每個(gè)!important貢獻(xiàn)值 重要的 ∞ 無窮大

權(quán)重是可以疊加的

比如的例子:

div ul  li   ------>      0,0,0,3

.nav ul li   ------>      0,0,1,2

a:hover      -----—>      0,0,1,1

.nav a       ------>      0,0,1,1   

#nav p       ----->       0,1,0,1

繼承性: 子承父業(yè)

所謂繼承性是指書寫CSS樣式表時(shí)捏浊,子標(biāo)簽會(huì)繼承父標(biāo)簽的某些樣式,如文本顏色和字號(hào)撞叨。想要設(shè)置一個(gè)可繼承的屬性金踪,只需將它應(yīng)用于父元素即可。

恰當(dāng)?shù)厥褂美^承可以簡(jiǎn)化代碼牵敷,降低CSS樣式的復(fù)雜性胡岔。子元素可以繼承父元素的樣式(text-,font-劣领,line-這些元素開頭的都可以繼承姐军,以及color屬性)

CSS為處理繼承提供了四種特殊的通用屬性值:

  • inherit: 該值將應(yīng)用到選定元素的屬性值設(shè)置為與其父元素一樣。
  • initial :該值將應(yīng)用到選定元素的屬性值設(shè)置為與瀏覽器默認(rèn)樣式表中該元素設(shè)置的值一樣尖淘。如果瀏覽器默認(rèn)樣式表中沒有設(shè)置值奕锌,并且該屬性是自然繼承的,那么該屬性值就被設(shè)置為 inherit村生。
  • unset :該值將屬性重置為其自然值惊暴,即如果屬性是自然繼承的,那么它就表現(xiàn)得像 inherit趁桃,否則就是表現(xiàn)得像 initial辽话。
  • revert :如果當(dāng)前的節(jié)點(diǎn)沒有應(yīng)用任何樣式肄鸽,則將該屬性恢復(fù)到它所擁有的值。換句話說油啤,屬性值被設(shè)置成自定義樣式所定義的屬性(如果被設(shè)置)典徘, 否則屬性值被設(shè)置成用戶代理的默認(rèn)樣式。

注意: initialunset 不被IE支持益咬。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逮诲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子幽告,更是在濱河造成了極大的恐慌梅鹦,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冗锁,死亡現(xiàn)場(chǎng)離奇詭異齐唆,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)冻河,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門箍邮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叨叙,你說我怎么就攤上這事媒殉。” “怎么了摔敛?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵廷蓉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我马昙,道長(zhǎng)桃犬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任行楞,我火速辦了婚禮攒暇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘子房。我一直安慰自己形用,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布证杭。 她就那樣靜靜地躺著田度,像睡著了一般。 火紅的嫁衣襯著肌膚如雪解愤。 梳的紋絲不亂的頭發(fā)上镇饺,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音送讲,去河邊找鬼奸笤。 笑死惋啃,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的监右。 我是一名探鬼主播边灭,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼健盒!你這毒婦竟也來了存筏?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤味榛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后予跌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體搏色,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年券册,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了频轿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烁焙,死狀恐怖航邢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骄蝇,我是刑警寧澤膳殷,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站九火,受9級(jí)特大地震影響赚窃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜岔激,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一勒极、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧虑鼎,春花似錦辱匿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽江兢。三九已至乐尊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間划址,已是汗流浹背扔嵌。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國打工限府, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人痢缎。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓胁勺,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親独旷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子署穗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,753評(píng)論 1 92
  • 轉(zhuǎn)載請(qǐng)聲明 原文鏈接地址 關(guān)注公眾號(hào)獲取更多資訊 第一部分 HTML 第一章 職業(yè)規(guī)劃和前景 職業(yè)方向規(guī)劃定位...
    程序員poetry閱讀 16,553評(píng)論 32 459
  • 學(xué)會(huì)使用CSS選擇器熟記CSS樣式和外觀屬性熟練掌握CSS各種選擇器熟練掌握CSS各種選擇器熟練掌握CSS三種顯示...
    七彩小鹿閱讀 6,314評(píng)論 2 66
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5嵌洼? 答:HTML5是最新的HTML標(biāo)準(zhǔn)案疲。 注意:講述HT...
    kismetajun閱讀 27,486評(píng)論 1 45
  • 感賞孩子回到餐桌就餐,昨晚下班回家孩子喊著我餓了麻养,我趕緊做飯褐啡,孩子吃著說著,就餐時(shí)間讓愛的流動(dòng)了鳖昌。 感賞孩子昨晚比...
    愛君2005閱讀 142評(píng)論 0 0