我有一段時間沒有更新FCC前端教程了,這一週就繼續寫完CSS與CSS3基礎的教程。最近工做和生活都比較繁忙因此文章更新也受到了必定的影響。不過技術文章寫做再忙也不會放棄的。我會繼續努力堅持着一週一篇文章的進度,繼續爲你們帶來我學習到的知識。讓咱們一塊兒繼續終身學習吧!css
這一篇文章是上一篇《44關學習CSS與CSS3基礎「一」》的第二部分,一共闖了44關。廢話少說,讓咱們一塊兒來闖關吧!html
關卡名:
Use Attribute Selectors to Style Elements
前端
id
和class
屬性選擇器給特定的元素改變樣式;ID
和CLASS
選擇器;[attr=value]
(屬性=值)這種屬性選擇器來給咱們的 checkboxes (複選框)添加樣式;好比一下例子,全部type
屬性值爲radio
的元素加入 margin(外邊距)作出改變:面試
[type='radio'] {
margin: 20px 0px 20px 0px;
}
複製代碼
type
屬性爲複選框的元素;type
屬性選擇器必須用來選中全部複選框;這關卡主要教會咱們:算法
關卡名:
Understand Absolute versus Relative Units
後端
px
單位以外,還可使用其餘可選的單位;in
(英寸) 和 mm
(釐米),絕對長度單位近似於屏幕上的實際測量值,可是根據屏幕的分辨率會有一些差別;em
或者 rem
, 二者分別都是相對單位,都會根據一個相對的元素轉換本身的大小;那麼 em
和 rem
有什麼區別呢?瀏覽器
EM是相對長度,它是相對於當前元素的字體大小,若是當前元素沒有設置字體大小就會一直往父級找,而後相對於父級字體大小來轉換。數據結構
EM特性:框架
- em的值並非固定的;
- em會基層父級元素的字體大小;
- 若是父級也是使用了 em 長度單位,那當前元素的 em 換算就會使用父級 em 換算後的結果進行換算。(好比父級使用了1.2em,換算後是12px,那當前元素用的 1em 就是 12px,可是咱們想要的是 1em = 10px,這種狀況用 em 就會出現大小錯誤。)
REM是CSS3新增的一個相對單位,它是 root em 的縮寫,顧名思義就是根em。ide
REM特性:
- 它與EM不同的是,由於是"根"em,因此它永遠都是相對於HTML根元素的字體大小;
- 與EM相同的就是值並非固定的,都是相對一個元素的字體大小;
- 由於REM的特性是相對於HTML根元素,因此只要改變根元素的字體大小,就會對全部REM單位的元素髮生大小變化;
- 除了IE8及更早版本的瀏覽器內核,全部瀏覽器均支持REM;
- 對於不支持的瀏覽器來講,咱們就須要加入一個 px 單位的 font-size屬性,若是瀏覽器發現沒法使用 rem 即會使用 px 單位的 font-size 值;
- 這個單位可謂集合相對和絕對單位的優勢與一身,因此此單位引發了普遍的使用,特別是在作移動端網頁時,用於響應不一樣手機屏幕大小和分辨率大小;
這些相對單位的使用會在《響應式頁面開發》的關卡中詳細介紹使用場景。
red-box
類的元素加入 padding
屬性,值爲 1.5em
;red-box
類元素必須含有 padding
屬性;red-box
類元素的padding
屬性值必須爲1.5em
;這關卡主要教會咱們:
em
,這種相對單位;關卡名:
Style the HTML Body Element
body
元素;background-color
屬性給body
元素一個背景顏色爲black
;body
元素的;如下例子演示如何給body
應用一個黑色背景的代碼:
body {
background-color: black;
}
複製代碼
body
元素的背景色變成黑色;body
元素;body
元素必須擁有background-color
屬性,而且值爲black
;這關卡主要教會咱們:
body
元素;關卡名:
Inherit Styles from the Body Element
body
元素;body
元素也是可使用CSS給它定製樣式的;記住:
body
元素與其餘HTML中的元素同樣,都是可使用CSS給予樣式控制的。不一樣的就是,body
元素中的樣式會被HTML中其餘元素默認繼承。意思就是說,任何在 body 中的樣式都會攜帶到其餘元素中,若是 body 中給予了背景顏色是黑色,那咱們加入一個div
元素,默認也是黑色背景。
h1
元素,內容填入文字 「Hello World」;body
元素中加入color: green
便可;body
元素定義字體爲monospace
,咱們只須要在body
樣式中加入font-family: monospace
屬性值便可;h1
元素;h1
元素內容是 Hello World;h1
元素有關閉標籤;body
元素應該有color
屬性,而且值爲green
;body
元素應該有font-family
屬性,而且值爲monospace
;h1
元素的字體應該繼承body
元素的字體定義;h1
元素的字體顏色應該繼承body
元素的字體顏色;這關卡主要教會咱們:
關卡名:
Prioritize One Style Over Another
h1
元素沒法同時擁有綠色和粉紅色字體顏色的屬性;body
元素中的color: green
CSS屬性;pink-text
;pink-text
加入字體顏色color: pink
;pink-text
類賦予h1
元素;h1
元素必須擁有pink-text
類;<style>
標籤中必須含有pink-text
類樣式,而且含有改變字體顏色的屬性;h1
元素的字體應該是粉紅色(pink);這關卡主要教會咱們:
body
元素的樣式;關卡名:
Override Styles in Subsequent CSS
pink-text
類覆蓋了body
元素的CSS樣式;body
元素的CSS;pink-text
類的樣式呢?<div class="class1 class2"></div>
複製代碼
注意:元素中多個CSS類的擺放順序是不會影響CSS樣式的權重的。真正決定CSS樣式的權重的是在CSS樣式表中的順序,CSS樣式表的樣式規則會從上往下寫,越是在後面的權重越高。由於
.blue-text
的樣式在.pink-text
的後面,因此最後.blue-text
的樣式會覆蓋.pink-text
。
blue-text
,而後賦予這個類藍色字體樣式;blue-text
類在樣式表中必須放在pink-text
以後;pink-text
類的h1
元素上疊加blue-text
類;h1
元素中須要有pink-text
類;h1
元素中須要有blue-text
類;blue-text
和pink-text
都須要賦予給h1
元素;h1
元素中的字體應該是藍色的;這關卡主要教會咱們:
關卡名:
Override Class Declarations by Styling ID Attributes
h1
元素中,把pink-text
放在blue-text
的前面,blue-text
類中的CSS屬性權重也是更大,會覆蓋pink-text
的CSS屬性;h1
元素添加一個ID
名爲orange-text
,而後在CSS樣式表中給這個ID橙色字體顏色的樣式,從而覆蓋掉blue-text
類和pink-text
類的樣式;給一個元素加入ID屬性須要使用如下寫法:
<h1 id="orange-text"></h1>
複製代碼
在CSS樣式表中定義ID屬性須要使用如下寫法:
#brown-text {
color: brown;
}
複製代碼
h1
元素一個ID屬性,值爲orange-text
;blue-text
類和pink-text
類在h1
元素中;orange-text
的CSS聲明,而且給予color: orange
的屬性;h1
元素須要有一個pink-text
類;h1
元素須要有一個blue-text
類;h1
元素須要有一個orange-text
ID;h1
元素;orange-text
ID須要聲明好CSS的屬性;h1
元素不該該有任何style
屬性;h1
元素中的字體應該是橙色的;這關卡主要教會咱們:
關卡名:
Override Class Declarations with Inline Styles
style
屬性;不記得行內樣式的寫法的同窗,能夠看看如下例子:
<h1 style="color: green"></h1>
複製代碼
h1
元素中的字體變成白色(color: white
);h1
元素中的blue-text
類,pink-text
類和orange-text
ID屬性;h1
元素須要有一個pink-text
類;h1
元素須要有一個blue-text
類;h1
元素須要有一個orange-text
ID;h1
元素須要有一個style
屬性;h1
元素中的字體是白色的;這關卡主要教會咱們:
關卡名:
Override All Other Styles by using Important
!important
,顧名思義就是「重要」的意識,也是表達着這個樣式有最高優先級;爲什麼要強制覆蓋CSS樣式?又有何時須要咱們這麼作呢?
在不少狀況下,咱們須要使用到CSS庫,甚至是某UI框架。由於是使用別的開發者寫好的樣式,天然就有可能咱們寫的樣式是被原有庫或者框架的樣式所覆蓋了。因此當咱們須要保證咱們編寫的CSS擁有最高優先級,而且絕對有效,這個時候咱們就可使用
!important
。
pink-text
類樣式聲明,一開始咱們使用了寫在後面的blue-text
類覆蓋了它的樣式;orange-text
ID屬性覆蓋它;因此樣式聲明的優先級順序就是:
CSS類聲明順序 < ID屬性樣式 < 行內樣式
pink-text
類的顏色聲明後面加入!important
;pink-text
類的樣式聲明獲得最大優先級;!important 的使用例子:
.brown-text {
color: brown !important;
}
複製代碼
h1
元素須要有一個pink-text
類;h1
元素須要有一個blue-text
類;h1
元素須要有一個orange-text
ID;h1
元素中應該有行內屬性爲color: white
;pink-text
類樣式聲明中應該有 !important
結尾;h1
元素中的字體應該是粉紅色;這關卡主要教會咱們:
!important
;關卡名:
Use Hex Code for Specific Colors
什麼是十六進制?
學過計算機的同窗應該都知道,一般用小數,或者以10爲底的數,那就是用數字0到9。十六進制,顧名思義就是用16爲底的數。也就是說須要使用16個不一樣的符號。符號0到9用來表明數字中的零到九,而後A,B,C,D,E,F就是第十到十五的符號。從0到9,A到F一共就有16個符號組成十六進制的代碼。
紅(R)
,綠(G)
,藍(B)
三種色系。#000000
的黑色做爲例子,若是紅,綠,藍都調到最低,天然就是沒有顏色,那就是黑色了;#000000
就等同於三盞燈都關掉,天然是黑色了。若是三盞燈都調到最亮,那就會是白色了,也就是咱們用的#FFFFFF
;顏色碼使用例子以下:
body {
color: #000000;
}
複製代碼
body
元素中的black
屬性值爲#000000
;body
元素的背景顏色應該是黑色;black
,而且使用Hex顏色碼;這關卡主要教會咱們:
關卡名:
Use Hex Code to Mix Colors
紅(R)
,綠(G)
,藍(B)
三種色系;#FFA500
;0
在Hex碼中是最低的數值,等同於把這個顏色調到沒有爲止;F
就是Hex碼中最大值,等同於把這個顏色調到最亮值;顏色 | Hex 碼 |
---|---|
Dodger Blue | #1E90FF |
Green | #00FF00 |
Orange | #FFA500 |
Red | #FF0000 |
h1
元素的字體I am red!
須要是紅色;hex 碼
替換顏色值red
;h1
元素的字體I am green!
須要是綠色;hex 碼
替換顏色值green
;h1
元素的字體I am dodger blue!
須要是寶藍色;hex 碼
替換顏色值dodgerblue
;h1
元素的字體I am orange!
須要是橙色;hex 碼
替換顏色值orange
;這關卡主要教會咱們:
關卡名:
Use Abbreviated Hex Code
#FF0000
能夠被縮寫爲 #F00
,這個縮寫版只給紅色一個數值,綠色一個數值和藍色一個數值;#F00
和 #FF0000
爲同一個顏色;顏色 | 縮寫Hex碼 |
---|---|
Cyan | #0FF |
Green | #0F0 |
Red | #F00 |
Fuchsia | #F0F |
h1
元素的字體I am red!
須要是紅色;hex 碼
替換顏色值#FF0000
;h1
元素的字體I am green!
須要是綠色;hex 碼
替換顏色值#00FF00
;h1
元素的字體I am cyan!
須要是寶青色;hex 碼
替換顏色值#00FFFF
;h1
元素的字體I am fuchsia!
須要是櫻紅色;hex 碼
替換顏色值#FF00FF
;這關卡主要教會咱們:
關卡名:
Use RGB values to Color Elements
RGB
值;rgb(0, 0, 0)
;rgb(255, 255, 255)
;紅(R)
,綠(G)
,藍(B)
三種色系的亮度來混合出1600萬種顏色;RGB
使用的是0到255,若是咱們計算一下,其實16 x 16 就是256,而計算機都是從0開始,因此 ;RGB
和十六進制都是擁有同樣的顏色種數,而且都是調整三種色系來變換顏色的;如下是把背景顏色換成橙色的CSS代碼:
body {
background-color: rgb(255, 165, 0);
}
複製代碼
body
元素的背景顏色換成RGB
中的黑色值:rgb(0, 0, 0)
;h1
元素的字體I am red!
須要是紅色;RGB
值替換Hex顏色值;h1
元素的字體I am orchid!
須要是淡紫色;RGB
值替換Hex顏色值;h1
元素的字體I am blue!
須要是藍色;RGB
替換Hex顏色值;h1
元素的字體I am sienna!
須要是赭色;RGB
替換Hex顏色值;這關卡主要教會咱們:
關卡名:
Change the Color of Text
RGB
值來混合出各類顏色;RGB
值來替換CSS中的Hex顏色代碼:顏色 | RGB值 |
---|---|
Blue | rgba(0, 0, 255) |
Red | rgb(255, 0 , 0) |
Orchid | rgb(218, 112, 214) |
Sienna | rgb(160, 82, 45) |
h2
元素中須要有style
屬性;h2
元素的color
樣式屬性應該賦予red
這個值;style
屬性值裏的樣式屬性應該以;
符號結束;這關卡主要教會咱們:
RGB
混合顏色;關卡名:
Use CSS Variables to change several elements at once
penguin
類中,改變一下內容:
--penguin-skin
的black
爲gray
;--penguin-belly
的gray
爲white
;--penguin-beak
的yellow
爲orange
;/* Only change code below this line */
和 /* Only change code above this line */
這兩個備註之間修改代碼;penguin
類中的--penguin-skin
CSS變量的值改成gray
;penguin
類中的--penguin-belly
CSS變量的值改成white
;penguin
類中的--penguin-beak
CSS變量的值改成orange
;這關卡主要教會咱們:
關卡名:
Create a custom CSS Variable
-
)」便可;--penguin-skin: gray;
複製代碼
--penguin-skin
,而且賦予了這個變量的值爲gray
;penguin
類中,建立一個變量名--penguin-skin
;gray
;/* Only change code below this line */
和 /* Only change code above this line */
這兩個備註之間編寫代碼;penguin
類中須要含有一個--penguin-skin
變量,而且變量值爲gray
;這關卡主要教會咱們:
關卡名:
Use a custom CSS Variable
background: var(--penguin-skin);
複製代碼
background
屬性的值,這個值咱們用了CSS變量;gray
,這個值會被關聯過來;注意:使用的變量名字必須是和定義的變量名徹底一致,要不就不會生效!
background
屬性的值都替換成--penguin-skin
CSS變量:
penguin-top
CSS類中的background
屬性值須要改成使用--penguin-skin
CSS變量;penguin-bottom
CSS類中的background
屬性值須要改成使用--penguin-skin
CSS變量;right-hand
CSS類中的background
屬性值須要改成使用--penguin-skin
CSS變量;left-hand
CSS類中的background
屬性值須要改成使用--penguin-skin
CSS變量;這關卡主要教會咱們:
關卡名:
Attach a Fallback value to a CSS Variable
注意:這個回退值並非用來提升瀏覽器兼容的,在IE瀏覽器下回退值也不會生效的。因此這個回退值只是用於當變量沒法獲取到值時,瀏覽器有一個可回退的值可用,而且能夠保證有效顯示。
以下是如何設置回退值的例子:
background: var(--penguin-skin, black);
複製代碼
--penguin-skin
變量沒法獲取到值,就會自動回退使用black
作爲背景顏色屬性的值;.penguin-top
類和.penguin-bottom
類中的背景顏色屬性的值中的變量名拼寫錯誤了,因此致使變量沒法取到變量所定義的值;.penguin-top
類和.penguin-bottom
類中的background
屬性的變量值加上回退顏色:black
;penguin-top
類中的background
屬性的變量值加入回退值black
;penguin-bottom
類中的background
屬性的變量值加入回退值black
;這關卡主要教會咱們:
關卡名:
Improve Compatibility with Browser Fallbacks
.red-box
類樣式中的background
屬性值使用了--red-color
CSS變量;background: red
,從而兼容其餘不支持CSS變量的瀏覽器;.red-box
類中的background
屬性上面添加一個background: red
的兼容屬性;這關卡主要教會咱們:
關卡名:
Inherit CSS Variables
--penguin-skin
變量下載.penguin
類選擇器中,那就能.penguin
中能夠調用這個CSS變量;.penguin
的全部子節點中使用,除外都是沒法調用的;那些纔是子節點呢?
好比如今咱們有一段這樣的HTML:
<div class="foo"><span class="bar"/></div>
這段HTML中
bar
就是foo
的子節點,他們彼此有繼承關係。
:root
元素;:root
是一個僞類(pseudo-class)選擇器,它會直接匹配HTML文檔(document)中的根元素,那就是html
元素;:root
僞類中添加咱們的CSS變量,遵循繼承關係這些變量全局均可以使用了;:root
僞類選擇器中聲明一個--penguin-belly
變量,而且給予pink
屬性值;--penguin-belly
變量須要在:root
僞類選擇器中聲明,而且屬性值是pink
;這關卡主要教會咱們:
關卡名:
Change a variable for a specific area
:root
僞類選擇器中定義CSS變量,整個頁面使用到這個變量的地方都會被影響;penguin
類中改變--penguin-belly
屬性值爲white
;penguin
類中加入--penguin-belly
屬性,而且值賦予white
;這關卡主要教會咱們:
關卡名:
Use a media query to change a variable
:root
選擇器中的media query
內,從新定義--penguin-size
的值爲200px
;--penguin-skin
變量的值爲black
;:root
中須要從新定義--penguin-size
的值爲200px
;:root
中須要從新定義--penguin-skin
的值爲black
;這關卡主要教會咱們:
這一期咱們終於完成了CSS與CSS3基礎的全部關卡,我的以爲這個FCC集訓營的關卡中的CSS知識仍是比較全面的。在編寫這些關卡的過程當中確實重溫了很多前端基礎,也是收益匪淺。在跟着個人教程一塊兒闖關的同窗們,也但願大家也有所收穫。
我是三鑽,一個在技術銀河中等大家一塊兒來終身漂泊學習。 點贊是力量,關注是承認,評論是關愛!下期再見 👋!
小夥伴們能夠查看或者訂閱相關的專欄,從而集中閱讀相關知識的文章哦。
《數據結構與算法》 --- 到了現在,若是想成爲一個高級開發工程師或者進入大廠,不論崗位是前端、後端仍是AI,算法都是重中之重。也不管咱們須要進入的公司的崗位是否最後是作算法工程師,前提面試就須要考算法。
《FCC前端集訓營》 --- 根據FreeCodeCamp的學習課程,一塊兒深刻淺出學習前端。穩固前端知識,一塊兒在FreeCodeCamp得到證書
《前端星球》 --- 以實戰爲線索,深刻淺出前端多維度的知識點。內含有多方面的前端知識文章,帶領不懂前端的童鞋一塊兒學習前端,在前端開發路上童鞋一塊兒燃起心中那團火