HTML負責結構層,網頁的結構層由HTML或者XHTML之類的標記語言負責構建
CSS負責表示層,描述頁面內容應該如何呈現。
JavaScript負責行為層,負責內容應該如何響應事件這一問題。
能利用css解決的問題不要用js去實現,能用css實現的內容不要在html中使用,每個都應該嚴格負責自己的領域。
文件裡的每個元素都是物件(一切皆物件)
文件的每個元素節點都有一個屬性style,style包含著元素的樣式,查詢這個屬性將返回一個物件而不是一個簡單的字串,樣式都放在這個style物件的屬性裡
因為每個屬性都會包含多個樣式,所以要返回一個物件才比較好對屬性進行操作!
格式:element(元素).style.property(屬性樣式)
如果要得到一個標籤的樣式:
- 從文件裡把這個元素找出來
- 利用element.style.property獲取樣式(css樣式名之間的-要用駝峰命名法來表示,否則js無法解析。例如:font-family-->fontFamily)
style屬性的一個很大的侷限性:style只能返回內嵌樣式,即只有把css style 新增到標記裡,才能用DOM style屬性去查詢那些資訊
來自外部的.css檔案已經不能再用DOM style檢索出來了。
ps:顏色:在css用顏色的英文名來命名顏色,如red,在js中會顯示red,如果用#000000類似的用法,js會顯示為RGB的格式
為內嵌樣式設定屬性:
style屬性的各個樣式,不僅可讀,還可寫。可以通過style屬性去更新樣式;
格式: element(元素).style.property(要改變的屬性樣式) = " value "(引號必加);
注意:只有在css不方便的場合,才可以使用DOM對文件的樣式做一些的小的增強,但是css始終是主體;
js特別擅長處理重複性任務,用一個while或者for迴圈就可以輕鬆地遍歷一個很長的列表
在.CSS檔案中改變樣式:(確保網頁的表示層和行為層分離的徹底)
與其使用DOM直接改變某個元素的樣式,不如通過JavaScript程式碼去更新這個元素的class屬性
技巧:在css樣式表裡寫多一個class屬性的樣式表,利用setAttribute方法來把標籤中class屬性的值改變,從而得到新的樣式。
className屬性:有一個更簡單的辦法更新class的是使用className屬性(是一個可讀,可寫的屬性),只要是元素節點都有這個屬性
獲取元素的class值,格式: element(元素).className
用className屬性和賦值操作符可以設定一個元素的class屬性值
格式: element(元素).className = "classname"
使用這個操作可以把新的class值把原先的class的值替換掉。
但有一個問題是,我們有時並不是想要替換掉這個class值,我們只是想在原來的class的值後面再追加一個class的值。
可以使用字串拼接的方法: element(元素).className += " classname" 注意:在classname前面需要有一個空格
推薦步驟:
- 檢查className屬性的值是否為空
- 如果是,則直接把class的設定值直接賦給className
- 如果不是,則把一個空格和新的class設定值追加到className上面去
對函式進行抽象可以使函式的使用範圍更廣,通過賦予引數呼叫的方式;當發現可以對一個函式進行抽象時,應該立刻就去做!!!!!!