css 取偶數節點 css節點擊擇器

2021-10-17 04:44:54 字數 2368 閱讀 9106

基礎選擇器

基礎選擇器是選擇器的所有選擇器的基本組成元素,也最簡單,包含如下5個類別:

id選擇器

標籤選擇器

類選擇器

屬性選擇器:類選擇器算是乙個特殊的屬性選擇器,通用的屬性選擇器舉例如下:

#css**

[href=""]

#html**

通配選擇器:就是特殊符號*,一般不建議單獨使用,因為這個匹配效率很低

組合選擇器

a b:後代選擇器,a的所有兒子孫子等後代中匹配b的節點

a > b:兒子選擇器,只選a的兒子節點中匹配b的節點

a + b:相鄰兄弟選擇器,a的兄弟選擇器中的第乙個滿足b的兄弟節點,注意只選擇第乙個

a ~ b: 普通兄弟選擇器,跟b類似,只不過是所有滿足b的兄弟節點,而不只是相鄰的第乙個

偽類選擇器

最常見的選擇器有如下幾個類別:

跟滑鼠有關的幾個選項:

hover:滑鼠滑動到元件上面的時候的狀態

active:滑鼠單擊左鍵放下到鬆開左鍵這段時間的狀態

跟聚焦有關的幾個選項

這個類別主要是指表單的各種輸入元件,當某個輸入元件獲得焦點的時候狀態

focus:當某個元件獲得焦點

focus-within:當所有的兒子孫子節點中有乙個節點獲得焦點的狀態

跟節點動態選擇的幾個選項

first-child:當乙個節點是父親所有直系兒子的第乙個節點,且前面的匹配條件

first-of-type:所有節點中第乙個滿足前面的匹配條件的節點,跟上面first-child的區別在於及時滿足節點的條件不是_長子_也能匹配

nth-child(an+b);所有兒子節點都挑出來,逐個匹配前面的條件,如果匹配上了,在根據節點的offset資訊進行(offste-b%a == 0)的判斷,看是否能匹配上

1. 通過這個屬性,我們可以設定第幾個兒子節點(0n+b),前幾個兒子節點(-1n+b),奇數(2n+1)或者偶數(2n)節點的選擇;

1. 跟這個類似的還有nth-last-child:從後往前數的意思;

nth-of-type(an+b):這個跟上面是類似的,唯一不同的是offset的演算法,這個屬性是先進行條件匹配,將節點進行一輪篩選過後的index再執行數值判斷,感覺這個會比較常用;

1. 通過這個屬性,我們可以設定第幾個兒子節點,前幾個兒子節點,奇數或者偶數節點的選擇;

1. 跟這個屬性類似的還會有first-of-type和last-of-type的屬性

其他幾個常見選項

empty:當節點中內容為空,連空格都沒有的時候,就能匹配

target:當節點包含id,並且url是通過http://host/params#id來訪問的時候,該id對應的節點就能命中

checked:用於radiobutton、checkbox、select選項當選項被選中的時候,就能命中

enable/disable:當節點是enable或者disable的時候的就能命中

偽節點擊擇器

偽節點擊擇器常見的有如下幾個:

::before:在指定元素的最前面建立乙個子元素;

::after:在指定元素的最後面建立乙個子元素;

::first-letter:指定元素的第乙個字母;

::first-line:指定元素的第一行文字;

選擇器優先順序

如果某個html節點的某個屬性命中了多個css的選擇器,那麼就需要乙個衝突解決機制來確保到底使用哪個規則。

css的優先順序選擇有三個規則:

如果css的某個屬性後面加了!important的話,就一定會使用他,他是優先順序最高的

如果都沒指定!important,就用精確度匹配演算法計算出規則的優先順序得分,得分高的使用

如果優先順序得分一樣,就採用出現在文字最後的那個規則,即跟文字的先後順序相關

可以看到,如上三個規則中,最重要的就是第二個規則精確度匹配演算法,該演算法的大概邏輯如下:

首先,優先順序演算法有乙個原則,就是精細度越高的規則,優先順序就越高,比如id選擇器 > 類選擇器 > 標籤選擇器。

然後,由於乙個選擇器可能會有多個基礎選擇器組合而來的,所以需要有乙個組合計算器的計算方法,計算方法如下:

priority_score =

100 * count(id選擇器) + // 百位數

10 * count(類選擇器|屬性選擇器|偽類選擇器) + // 十位數

1 * count(標籤選擇器|偽元素選擇器) // 個位數

注意兩點

在所有基礎選擇器當中,通配選擇器、組合符合(>, +, ~)、以及否定偽類(div:not(.my_content)) 不參與到優先順序計算當中;

屬性選擇器的例子,div[id="my_div"],這個會按照屬性參與,而不是id選擇器;且該選擇器中,標籤選擇器和屬性選擇器計數都會+1;

easyui treegrid節點擊擇

easyui treegrid本身不能實現選中父節點子節點全選,必須通過另外的方法來實現,這裡說下如何通過修改節點樣式新增checkbox來實現級聯選擇效果 首先需要格式化節點的樣式 formatter function value,row,index show方法如下 function show ...

CTreeCtrl 節點擊擇問題

一 問題說明 樹形控制項,單擊某個節點彈出相應的對話方塊 二 問題處理 起先使用了ctreectrl的onselchangedoperate這個事件,實際操作中出現了問題 二次單擊時對話方塊不能顯示,上網查詢資料,才明白二次單擊並不能觸發onselchangedoperate事件 所以最後選擇了on...

jQuery節點擊擇 操作

避免複雜的選擇器操作,而採用find操作 ul find li ul li 新增html形式的操作與元素形式的操作 可以新增篩選條件 find ele 方法在 dom 樹中搜尋這些元素的後代 子子孫孫 並用匹配元素來構造乙個新的 jquery 物件。children 方法在dom 樹中只遍歷一層 兒...