Web 前端開發入門級學習筆記(一)
Web前端入門級學習筆記
1.基本概念
css-cascading style sheet
2.網頁設計中HTML,CSS,JavaScript地位
HTML:內容
CSS:呈現(樣式)
JavaScript:互動(頁面的動態效果)
實現:內容與樣式與互動的分離
3.CSS的基本語法
選擇器{
k:v;
k:v;
k:v;
}
學法:多觀察、多做
必須記住這些樣式表的屬性和它對應的值
4.CSS程式碼能寫在3個地方,或者說3種用法
(1)行內樣式;堅決杜絕
(2)內連樣式;學習階段使用
(3)外鏈樣式;把樣式表程式碼移出到一個單獨的.CSS檔案中,內容與呈現的物理分離
5.樣式表的基本語法—選擇器
(1)標籤名做選擇器
只寫標籤名就行,不要加"< >"。
標籤名做選擇器會把當前頁面上的所有這個型別的標籤都選中
(2)id做選擇器
每一個頁面標籤都可以新增id屬性
標籤的id值必須遵循以下的規範:
1、只能由字母、下劃線、數字組成
2、必須是字母開頭
3、不能與標籤名同名
4、儘量使用有意義的單詞縮寫,比如:nav(導航欄)
注意:1.任何一個頁面上不能出現重名的id
通過實驗我們發現,如果出現同名的id,瀏覽器會把同名id的元素都使用相同的樣式修飾,但是不代表你可以這麼做。id是表示唯一性的:getElementById()
2.頁面上的任意一個元素,都可以同時被多個選擇器同時選中,並且這多個選擇器能同時作用於這個標籤,也就是多個選擇器選中同一個標籤,他們的樣式能疊加下來,這就是CSS為啥叫:“層疊”的一個原因
3.如果多個選擇器選中同一個元素後,他們之間的樣式有衝突,那麼這時候就存在一個選擇器優先順序問題
前臺和後臺分離,便於改版
(3)類名做選擇器
1、用類名做選擇器,必須在類名前打.
2、所有的標籤都可以有class屬性
3、class屬性的名字與id命名規範一樣
4、一個標籤的id名和class名甚至可以相同,但是千萬不要這麼做
5、不同型別的標籤可以從屬於同一個class
6、一個標籤可以從屬於多個不同的class
(1)不同的類名之間必須用“空格”隔開
(2)不允許在標籤裡出現2個class屬性,任何一個html標籤內部都不能出現相同名字的屬性
7、儘量使用原子化的類,少用大而全的類
8、樣式表中,儘量使用class,儘量不用id做選擇器:
class上樣式,,id上行為。class是為樣式表準備的,id是為你JS準備的
document.getElemetById()
document.getElemetByClass()
從語義上來講,class是表示同一類元素,但是我們在樣式表中即使這一類只有1個標籤,我們也用class,不用id做選擇器
(4)後代選擇器
注意:後代選擇器不是兒子選擇器(直接的子元素)還有孫子,重孫子...
問題:用後代選擇器還是用直接給元素上個類,使用類選擇器?
後代選擇器的意圖是:
表達出:把在頁面上的某一部分(區域)之內的所有什麼什麼元素,樣式設定為、、、、
(5)交集選擇器
語法:標記名,類名,類名...
後代選擇器是打空格,交集選擇器不要空格
(6)並集選擇器(組選擇器)
語法:多個選擇器之間用逗號隔開,表示被選中的這些元素,採用相同的樣式
(7)萬用字元*
*表示選中頁面上的所有元素(一般用來做初始化)。這麼做不好,效率太低。
6.CSS的繼承性
(1)只能把自己的樣式繼承給後代節點,但是不能影響自己的父節點和兄弟節點
(2)什麼屬效能繼承下來?修飾文字樣式的屬效能被繼承下來。color、text-、font-、line-
不是修飾文字的屬性不能被後代節點繼承下來。比如:有關盒子模型的屬性、定位的屬性、背景屬性
7.CSS的層疊性
-
層疊性指的是當CSS的樣式產生衝突時的處理機制。
-
層疊性的優先順序:算權重的演算法,誰權重大,就聽誰的,權重小的就會被覆蓋掉。
-
計算權重的描述方式(id的個數,class的個數,標籤名的個數)——比較時先比較id,然後數類、、
-
id 的優先順序最高,class 的優先順序次之,標籤名的優先順序最低。並且三者之間不存在進位。(實際上也是存在進位的,255個進一位,所以根本沒有意義)
-
如果都選中了同一個元素,並且權重計算都一樣,聽誰的? 誰寫在最後就聽誰的,後面的可以把前面的覆蓋掉
-
如果是繼承過來的樣式,權重是0(如果沒有直接選中這個標籤,你給他寫的屬性的權重是0)
-
如果大家都沒直接選中,權重是0,這個時候有一個“就近原則”
判斷哪個樣式起作用:
(1)先看有沒有直接選中
(2)如果選中了,就計算權重
(3)如果權重都一樣,誰寫在最後誰起作用
(4)如果都沒有選中,採用就近原則
注意:內連樣式無論權重多大,都幹不過行內樣式。但是,如果使用行內樣式,就違背了我們內容與呈現與互動的相分離的初衷。所以無論如何也不要使用行內樣式
8.!important 屬性
!important屬性是修飾符,它的語法是 K:V !important;
錯誤寫法:(1)K:V;!important;
(2).box1 !important{;}
!important 屬性,只能提升一條語句的優先順序,不能提升一個選擇器的優先順序。
!important 把被修飾的語句優先順序提升到無窮大。
如果被層疊的樣式都使用!important 修飾,那麼按照語句所在選擇器的權重來起作用。
如果是繼承過來的樣式,它的權重是0,!important 屬性無法提升權重為0的樣式
如果樣式都是繼承過來的,!important 能否提升 (能打破就近原則麼)? 還是就近原則管用。