css —— 選擇器優先順序及jQuery遍歷元素常用方法
一、部分常用css選擇器
1、子元素選擇器:>
作用:只選取直接子元素。
優點:使html元素層次很清晰的呈現。
2、相鄰兄弟元素選擇器:+
作用:選取相鄰兄弟元素中的第二個。適用於兄弟元素(可以是不同元素)第一個與後面的(某個或所有)樣式不一樣的場合。
例:
<div>
<a>背景1</a>
<span>背景2</span>
</div>
擇若為div內部兩個標籤設定不同背景,css可為:
div a { background:url();}
div > a+ span{ background:url();}
3、屬性選擇器:[attribute]、[attribute=value]
(1)、[attribute]:選取具有某個屬性的元素,元素範圍可在中括號前新增,但不能有空格,如a[title]:選取具有title屬性的a標籤。
(2)、[attribute=value]:選取某個屬性值為value的標籤(value沒有引號)。同樣可有元素範圍限制。
二、jQuery遍歷元素常用方法(參考w3cshool)
1、祖先元素
(1)、parent():被選元素直接父元素。
(2)、parents():被選元素的所有父元素。可加元素範圍,如:parents("ul"),選取父類元素中的所有ul元素。
(3)、parentsUntil("x"):返回所有介於被選元素與x元素之間(不包含)的所有元素。
2、後代元素
(1)、children():返回被選元素的所有直接子元素,同樣可加元素範圍,如children("p .red")。
(2)、find("x"):返回被選元素的所有後代元素中的x元素,範圍x必填,可為*。與children()不同之處,children()只找直接子元素。
3、同胞元素
(1)、prev():前一個同胞元素。
(2)、prevAll():前面所有同胞元素。
(3)、next():緊跟的後一個同胞元素。
(4)、nextAll():後面所有同胞元素。
(5)、siblings():返回被選元素的所有同胞元素。
4、過濾
(1)、eq();
(2)、filter(過濾條件):返回符合過濾條件的被選元素,如filter(".red"),返回帶有類red的被選元素。
(3)、first();
(4)、last();
(5)、not(條件):與filter相反。
三、css選擇器優先順序
(1)、:hover等偽類高於自定義的class,若定義了:hover,則無法通過增刪class達到實現相應的mouseenter、mouseover等事件。
解決方法,不用:hover,也將本來的hover效果定義為class,通過js控制。
(2)、若有多處同名的class,尋找某處的具有該class的元素應該在前面新增某個父類元素作定位。
四、css體會
(1)、對於同級的具有同種class或相同的元素,其基本樣式一般相同,也正因此,可單獨定義為一個class,或通過派生查詢規定統一樣式。若此時個別元素具有特殊樣式,可將特殊樣式單獨分離(不寫在統一樣式中,此時統一樣式的此樣式值為預設值),單獨設定另一個class,並通過該class設定特殊樣式。
如,假設有一個水平的列表:
<ul>
<li class="floatLeft"><li>
<li class="floatLeft"><li>
<li class="marginLeft"><li>
</ul>
ul{
list-style:none;
width:206px;
height:52px;
line-height:30px;
}
對應公有屬性設定:
.ul>li{
/*公有屬性中不設定私有屬性設定,結構清晰同時也避免一些錯誤*/
width: 50px;
height: 30px;
border:1px solid #ccc;
}
對應私有屬性設定:
.floatLeft{
float: left;
}
.marginLeft{
margin-left:150px;
}
五、css注意事項
(1)、使用元素名與class名或屬性等組合查詢時,元素名與class的點號之間不能有空格,否則查詢不到!!!如:
div.panel{/*找class為panel的div並設定樣式*/}
div#panel{/*找id為panel的div並設定樣式*/}
div[style]{/*找具有style屬性的div並設定樣式*/}
。。。