1.偽類與偽元素的區別?
1) 定義區別
偽類 偽類用於選擇DOM樹之外的資訊,或是不能用簡單選擇器進行表示的資訊。 前者包含那些匹配指定狀態的元素,比如:visited,:active;後者包含那些滿足一定邏輯條件的DOM樹中的元素,比如:first-child,:first-of-type,:target。 偽元素 偽元素為DOM樹沒有定義的虛擬元素。不同於其他選擇器,它不以元素為最小選擇單元,它選擇的是元素指定內容。 比如::before表示選擇元素內容的之前內容,也就是"";::selection表示選擇元素被選中的內容。
2) 語法區別
在CSS3中,偽類與偽元素在語法上也有所區別,偽元素修改為以::開頭。 但因為歷史原因,瀏覽器對以:開頭的偽元素也繼續支援,但建議規範書寫為::開頭。
3) 偽類/偽元素一覽表
<偽類如下> :active 選擇正在被啟用的元素 1 :hover 選擇被滑鼠懸浮著元素 1 :link 選擇未被訪問的元素 1 :visited 選擇已被訪問的元素 1 :first-child 選擇滿足是其父元素的第一個子元素的元素 2 :lang 選擇帶有指定 lang 屬性的元素 2 :focus 選擇擁有鍵盤輸入焦點的元素 2 :enable 選擇每個已啟動的元素 3 :disable 選擇每個已禁止的元素 3 :checked 選擇每個被選中的元素 3 :target 選擇當前的錨點元素 3 <偽元素如下> ::first-letter 選擇指定元素的第一個單詞 1 ::first-line 選擇指定元素的第一行 1 ::after 在指定元素的內容後面插入內容 2 ::before 在指定元素的內容前面插入內容 2 ::selection 選擇指定元素中被使用者選中的內容 3
2. css樣式優先順序,各自的權重
優先順序別: 通用選擇器(*) < 元素(型別)選擇器 < 類選擇器 < 屬性選擇器 < 偽類 < ID 選擇器 < 內聯樣式 權重: 第一等:代表內聯樣式,如: style=””,權值為1000。 第二等:代表ID選擇器,如:#content,權值為100。 第三等:代表偽類和屬性選擇器,如.content,權值為10。 第四等:代表型別選擇器和偽元素選擇器,如div p,權值為1。
3.常見的DOM操作有哪些?
主要操作包括:
查詢節點,新建節點,新增節點,刪除節點,修改節點;
開發中,我們用到最多的是element型別,
用於表現HTML元素,提供了對元素標籤名、子節點及特性的訪問。
1)DOM常用操作舉例:
// 查詢節點
document.getElementById(`id屬性值`); // 返回擁有指定id的第一個物件的引用
document.getElementsByClassName(`class屬性值`); // 返回擁有指定class的物件集合
2)新建節點:
// 建立新的元素節點
document.createElement(`元素名`);
// 建立新的屬性節點
document.createAttribute(`屬性名`);
// 建立新的文字節點
document.createTextNode(`文字內容`);
// 建立新的註釋節點
document.createComment(`註釋節點`);
3)新增節點:
var element = document.getElementsByTagName(`p`)[0];
element.innerHTML=`新增文字內容`; //插入文字內容
4)刪除節點:
parentNode.removeChild( existingChild ); //刪除已有的子節點,返回值為刪除節點
element.removeAttribute(`屬性名`); // 刪除具有指定屬性名稱的屬性,無返回值
element.removeAttributeNode( attrNode ); // 刪除指定屬性,返回值為刪除的屬性
5)修改節點:
// 新增屬性節點,修改屬性值
element.setAttribute( attributeName, attributeValue );
6)屬性節點:
// 增添id屬性,並修改class屬性值
var element = document.getElementsByTagName(`p`)[0];
// 新增屬性節點
var attr = document.createAttribute(`id`);
attr.value = `idValue`;
element.setAttributeNode(attr);
// 修改屬性值
var attr = document.createAttribute(`class`);
attr.value = `classNewValue`;
element.setAttributeNode(attr);
7)DOM事件:
允許 JavaScript 對 HTML 事件作出反應,主要包括:
onclick 事件——當使用者點選時
onload 事件——使用者進入
onunload 事件——使用者離開
onmouseover事件——滑鼠移入
onmouseout事件——滑鼠移出
onmousedown事件——滑鼠按下
onmouseup 事件——滑鼠抬起
4.判斷資料型別有哪些方法?
1)typeof
typeof 是一個操作符,其右側跟一個一元表示式,並返回這個表示式的資料型別。
返回的結果用該型別的字串(全小寫字母)形式表示,
包括以下 7 種:number、boolean、symbol、string、object、undefined、function 等。
2) instanceof
instanceof 是用來判斷 A 是否為 B 的例項,
表示式為:A instanceof B,如果 A 是 B 的例項,則返回 true,否則返回 false。
在這裡需要特別注意的是:instanceof 檢測的是原型
3) constructor
當一個函式 F被定義時,JS引擎會為F新增 prototype 原型,
然後再在 prototype上新增一個 constructor 屬性,並讓其指向 F 的引用。
4)toString
toString() 是 Object 的原型方法,呼叫該方法,預設返回當前物件的 [[Class]]點選並拖拽以移動 。這是一個內部屬性,其格式為 [object Xxx] ,其中 Xxx 就是物件的型別。對於 Object 物件,直接呼叫 toString() 就能返回 [object Object] 。而對於其他物件,則需要通過 call / apply 來呼叫才能返回正確的型別資訊。
5.介紹一下 JS 的基本資料型別?
Undefined、Null、Boolean、Number、String
6.介紹一下 JS 有哪些內建物件?
Object 是 JavaScript 中所有物件的父物件;
資料封裝類物件:Object、Array、Boolean、Number、String
其他物件:Function、Argument、Math、Date、RegExp、Error
7.push()-pop()-shift()-unshift()分別是什麼功能?
// push 方法
// 將新元素新增到一個陣列中,並返回陣列的新長度值。
var a=[1,2,3,4];
a.push(5);
// pop 方法
// 移除陣列中的最後一個元素並返回該元素。
var a=[1,2,3,4];
a.pop();
// shift 方法
// 移除陣列中的第一個元素並返回該元素。
var a=[1,2];
a.shift();
// unshift 方法
// 將指定的元素插入陣列開始位置並返回該陣列。
var a=[1,2];
a.unshift(0);
8.null 和 undefined 有何區別?
1) null 表示一個物件被定義了,值為“空值”;
undefined 表示不存在這個值。
typeof undefined //"undefined"
2) undefined :是一個表示"無"的原始值或者說表示"缺少值",就是此處應該有一個值,但是還沒有定義。
當嘗試讀取時會返回 undefined; 例如變數被宣告瞭,但沒有賦值時,就等於undefined。
typeof null //"object" null : 是一個物件(空物件, 沒有任何屬性和方法);
3) 注意: 在驗證null時,一定要使用 === ,因為 == 無法分別 null 和 undefined
9.new操作符具體幹了什麼?
1) 建立一個空物件,並且 this 變數引用該物件。
2) 屬性和方法被加入到 this 引用的物件中。
3) 新建立的物件由 this 所引用。
10.你對 JSON 瞭解嗎?
1) JSON(JavaScript Object Notation)是一種輕量級的資料交換格式。
2) 它是基於JavaScript的一個子集。資料格式簡單,易於讀寫,佔用頻寬小。
如:{"age":"12", "name":"back"}
1.偽類與偽元素的區別?
1) 定義區別
偽類
偽類用於選擇DOM樹之外的資訊,或是不能用簡單選擇器進行表示的資訊。
前者包含那些匹配指定狀態的元素,比如:visited,:active;後者包含那些滿足一定邏輯條件的DOM樹中的元素,比如:first-child,:first-of-type,:target。
偽元素
偽元素為DOM樹沒有定義的虛擬元素。不同於其他選擇器,它不以元素為最小選擇單元,它選擇的是元素指定內容。
比如::before表示選擇元素內容的之前內容,也就是"";::selection表示選擇元素被選中的內容。
2) 語法區別
在CSS3中,偽類與偽元素在語法上也有所區別,偽元素修改為以::開頭。
但因為歷史原因,瀏覽器對以:開頭的偽元素也繼續支援,但建議規範書寫為::開頭。
3) 偽類/偽元素一覽表
<偽類如下>
:active 選擇正在被啟用的元素 1
:hover 選擇被滑鼠懸浮著元素 1
:link 選擇未被訪問的元素 1
:visited 選擇已被訪問的元素 1
:first-child 選擇滿足是其父元素的第一個子元素的元素 2
:lang 選擇帶有指定 lang 屬性的元素 2
:focus 選擇擁有鍵盤輸入焦點的元素 2
:enable 選擇每個已啟動的元素 3
:disable 選擇每個已禁止的元素 3
:checked 選擇每個被選中的元素 3
:target 選擇當前的錨點元素 3
<偽元素如下>
::first-letter 選擇指定元素的第一個單詞 1
::first-line 選擇指定元素的第一行 1
::after 在指定元素的內容後面插入內容 2
::before 在指定元素的內容前面插入內容 2
::selection 選擇指定元素中被使用者選中的內容 3
2. css樣式優先順序,各自的權重
優先順序別:
通用選擇器(*) < 元素(型別)選擇器 < 類選擇器 < 屬性選擇器 < 偽類 < ID 選擇器 < 內聯樣式
權重:
第一等:代表內聯樣式,如: style=””,權值為1000。
第二等:代表ID選擇器,如:#content,權值為100。
第三等:代表偽類和屬性選擇器,如.content,權值為10。
第四等:代表型別選擇器和偽元素選擇器,如div p,權值為1。
3.常見的DOM操作有哪些?
主要操作包括:
查詢節點,新建節點,新增節點,刪除節點,修改節點;
開發中,我們用到最多的是element型別,
用於表現HTML元素,提供了對元素標籤名、子節點及特性的訪問。
1)DOM常用操作舉例:
// 查詢節點
document.getElementById(`id屬性值`); // 返回擁有指定id的第一個物件的引用
document.getElementsByClassName(`class屬性值`); // 返回擁有指定class的物件集合
2)新建節點:
// 建立新的元素節點
document.createElement(`元素名`);
// 建立新的屬性節點
document.createAttribute(`屬性名`);
// 建立新的文字節點
document.createTextNode(`文字內容`);
// 建立新的註釋節點
document.createComment(`註釋節點`);
3)新增節點:
var element = document.getElementsByTagName(`p`)[0];
element.innerHTML=`新增文字內容`; //插入文字內容
4)刪除節點:
parentNode.removeChild( existingChild ); //刪除已有的子節點,返回值為刪除節點
element.removeAttribute(`屬性名`); // 刪除具有指定屬性名稱的屬性,無返回值
element.removeAttributeNode( attrNode ); // 刪除指定屬性,返回值為刪除的屬性
5)修改節點:
// 新增屬性節點,修改屬性值
element.setAttribute( attributeName, attributeValue );
6)屬性節點:
// 增添id屬性,並修改class屬性值
var element = document.getElementsByTagName(`p`)[0];
// 新增屬性節點
var attr = document.createAttribute(`id`);
attr.value = `idValue`;
element.setAttributeNode(attr);
// 修改屬性值
var attr = document.createAttribute(`class`);
attr.value = `classNewValue`;
element.setAttributeNode(attr);
7)DOM事件:
允許 JavaScript 對 HTML 事件作出反應,主要包括:
onclick 事件——當使用者點選時
onload 事件——使用者進入
onunload 事件——使用者離開
onmouseover事件——滑鼠移入
onmouseout事件——滑鼠移出
onmousedown事件——滑鼠按下
onmouseup 事件——滑鼠抬起
4.判斷資料型別有哪些方法?
1)typeof
typeof 是一個操作符,其右側跟一個一元表示式,並返回這個表示式的資料型別。
返回的結果用該型別的字串(全小寫字母)形式表示,
包括以下 7 種:number、boolean、symbol、string、object、undefined、function 等。
2) instanceof
instanceof 是用來判斷 A 是否為 B 的例項,
表示式為:A instanceof B,如果 A 是 B 的例項,則返回 true,否則返回 false。
在這裡需要特別注意的是:instanceof 檢測的是原型
3) constructor
當一個函式 F被定義時,JS引擎會為F新增 prototype 原型,
然後再在 prototype上新增一個 constructor 屬性,並讓其指向 F 的引用。
4)toString
toString() 是 Object 的原型方法,呼叫該方法,預設返回當前物件的 [[Class]]點選並拖拽以移動 。這是一個內部屬性,其格式為 [object Xxx] ,其中 Xxx 就是物件的型別。對於 Object 物件,直接呼叫 toString() 就能返回 [object Object] 。而對於其他物件,則需要通過 call / apply 來呼叫才能返回正確的型別資訊。
5.介紹一下 JS 的基本資料型別?
Undefined、Null、Boolean、Number、String
6.介紹一下 JS 有哪些內建物件?
Object 是 JavaScript 中所有物件的父物件;
資料封裝類物件:Object、Array、Boolean、Number、String
其他物件:Function、Argument、Math、Date、RegExp、Error
7.push()-pop()-shift()-unshift()分別是什麼功能?
// push 方法
// 將新元素新增到一個陣列中,並返回陣列的新長度值。
var a=[1,2,3,4];
a.push(5);
// pop 方法
// 移除陣列中的最後一個元素並返回該元素。
var a=[1,2,3,4];
a.pop();
// shift 方法
// 移除陣列中的第一個元素並返回該元素。
var a=[1,2];
a.shift();
// unshift 方法
// 將指定的元素插入陣列開始位置並返回該陣列。
var a=[1,2];
a.unshift(0);
8.null 和 undefined 有何區別?
1) null 表示一個物件被定義了,值為“空值”;
undefined 表示不存在這個值。
typeof undefined //"undefined"
2) undefined :是一個表示"無"的原始值或者說表示"缺少值",就是此處應該有一個值,但是還沒有定義。
當嘗試讀取時會返回 undefined; 例如變數被宣告瞭,但沒有賦值時,就等於undefined。
typeof null //"object" null : 是一個物件(空物件, 沒有任何屬性和方法);
3) 注意: 在驗證null時,一定要使用 === ,因為 == 無法分別 null 和 undefined
9.new操作符具體幹了什麼?
1) 建立一個空物件,並且 this 變數引用該物件。
2) 屬性和方法被加入到 this 引用的物件中。
3) 新建立的物件由 this 所引用。
10.你對 JSON 瞭解嗎?
1) JSON(JavaScript Object Notation)是一種輕量級的資料交換格式。
2) 它是基於JavaScript的一個子集。資料格式簡單,易於讀寫,佔用頻寬小。
如:{"age":"12", "name":"back"}