* { margin: 0; padding: 0; }
星號符會選擇頁面每一個元素。不少開發者用它把全部margin和padding歸零。這固然是快捷測試方法。不過我建議你不使用它,它給瀏覽器帶來太多的負擔,這沒必要要。
通配選擇器也能夠用到子選擇器上。css
/* 選中容器中 全部子元素*/html
#container * { border: 1px solid black; }
#container { width: 960px; margin: auto; }
.error { color: red; }
這是類選擇器。ID選擇器與類選擇器的差異是,後者能夠用於多個元素。使用類選擇器能夠把一樣的樣式賦予一羣元素,相反,id選擇器只能做用於特定的單一元素。
es6
li a { text-decoration: none; }
後代選擇器是使用不少的選擇器。它做用處於X元素內的全部的y元素。不過若是你的選擇器像X Y Z A B.error,那你的方法就錯了。這開銷太大了
瀏覽器
a { color: red; } ul { margin-left: 0; }
類型選擇器會選擇頁面中同一類型的標籤。好比說ul{…}會選擇頁面中全部的ul。
app
a:link { color: red; } a:visted { color: purple; }
:link做用於沒有訪問過的連接,:visited做用於訪問過的連接。
測試
ul + p { color: red; }
相信選擇器只做用於同一父級元素下的第一個元素。例子中的只有緊鄰ul中的第一個p的字體會是紅色的。
字體
div#container > ul { border: 1px solid black; }
X Y和X>Y不一樣的地方後者只選擇X的第一級子元素。例以下面網站
<div id="container"> <ul> <li> List Item <ul> <li> Child </li> </ul> </li> <li> List Item </li> <li> List Item </li> <li> List Item </li> </ul> </div>
選擇器#container>ul只選擇直接位於#container層下的ul,不會做用於li中的ul。
url
ul ~ p { color: red; }
這個相鄰選擇器與X+Y類似,不一樣的是,ul+p只選擇與ul相鄰的第一個p,而x~Y選擇全部與ul相鄰的P。
a[title] { color: green; }
一種屬性選擇器。上例中,只選擇帶有title屬性的連接標籤。
a[href="http://net.tutsplus.com"] { color: #1f6053; /* nettuts green */ }
a[href*="tuts"] { color: #1f6053; /* nettuts green */ }
a[href^="http"] { background: url(path/to/external/icon.png) no-repeat; padding-left: 10px; }
有些網站用這個方法在某些連接上加一些圖標說明這些連接到其餘網站。它常常用於表達式中顯示字符串的開始。若是咱們想選擇那樣帶有http的a標籤連接,咱們可使用相似上面的CSS。(這不是搜索http://,這沒必要要,對https://沒起做用)。
a[href$=".jpg"] { color: red; }
又一次,咱們使用了一個表達式的符號,$,查找字符串的尾部。這個例子中,咱們查找全部連接到圖片的連接,或許說以.jpg結尾的連接。這固然不對gif和png格式的起做用。
a[data-filetype="image"] { color: red; }
回到第8個(?感受第8個和這個有點風馬牛不相及);咱們怎麼補償不一樣圖片格式:png,jpeg,jpg,gif? 咱們可使用多重選擇器,好比:
a[href$=".jpg"], a[href$=".jpeg"], a[href$=".png"], a[href$=".gif"] { color: red; }
回到第8個(?感受第8個和這個有點風馬牛不相及);咱們怎麼補償不一樣圖片格式:png,jpeg,jpg,gif? 咱們可使用多重選擇器,好比:
<a href="path/to/image.jpg" data-filetype="image"> Image Link </a>
在適當的地方加上鉤後,咱們就可使用一個標準的屬性選擇器選擇這些標籤。
a[data-filetype="image"] { color: red; }
a[data-info~="external"] { color: red; } a[data-info~="image"] { border: 1px solid black; }
這是一個讓人印象深入的選擇器。瞭解這個技巧的人很少。~符號容許咱們選擇帶有有空白間隔屬性的標籤。
就像第15個選擇器同樣,這裏,咱們可使用能用間隔符列出須要瓢東東的data-info屬性。舉例來講,咱們給外鏈些記號吧。
"<a href="path/to/image.jpg" data-info="external image"> Click Me, Fool </a>
在適當地方使用標記,而後就能夠選擇任何帶有這些屬性的標籤。
/* Target data-info attr that contains the value "external" */ a[data-info~="external"] { color: red; } /* And which contain the value "image" */ a[data-info~="image"] { border: 1px solid black; }
input[type=radio]:checked { border: 1px solid black; }
這個僞類選擇器只會做用於被選中的用戶界面元素(user interface element),好比說單選按鈕,或者複選框。
這個僞類和:before同樣,主要是用來清除浮動的。不過如今人們都能在它們身上找到新的用法。
.clearfix:after { content: ""; display: block; clear: both; visibility: hidden; font-size: 0; height: 0; } .clearfix { *display: inline-block; _height: 1%; }
div:hover { background: #e3e3e3; }
這是一個動態僞類。當元素有鼠標移在其上面時樣式就會起做用。通常用於連接。好比a:hover{border-bottom:1px solid black;}(border-bottom:1px solid black;效果比text-decoration:underline;好)。
a:hover { border-bottom: 1px solid black; }
此處爲css3選擇器
div:not(#container) { color: blue; }
這個否認僞類很是有用。好比要選擇除#container層外的全部層。上面的代碼就很是有效。
又好比我要選擇除了段落標籤外的全部元素(不建議這樣作),能夠這樣作:
*:not(p) { color: green; }
p::first-line { font-weight: bold; font-size: 1.2em; }
使用這類僞類(用::指定)能夠設計一個元素的一片段,好比說第一行,或者第一個字。須要記住的事,這僞類只能做用於塊元素。
p::first-letter { float: left; font-size: 2em; font-weight: bold; font-family: cursive; padding-right: 2px; }
這代碼片段先提取頁面中的全部段落,而後再查找段落中的第一個字。
這方法常常用於製做報紙風格的頁面。
p::first-line { font-weight: bold; font-size: 1.2em; }
li:nth-child(3) { color: red; }
過去咱們沒法從一堆元素中選擇具體的幾個。nth-child僞類能夠解決這種問題。
nth-child接受整數參數,不過它不是基於零開始,若是你要選擇列表中的第二個,就使用li:nth-child(2)。
咱們還可使用這個僞類選擇幾個子類。好比,用li:nth-child(4n)來選擇4倍數的列表。
li:nth-last-child(2) { color: red; }
若是列表項很是多,但只是須要選擇倒數第三個。使用li:nth-child(397)不如使用nth-last-child方便。
和上面的用法不同,nth-last-child是從後面倒着數。
ul:nth-of-type(3) { border: 1px solid black; }
選擇子類也許不如根據類型選擇元素更方便。好比說如今有5個無序列表,但只需選擇第三個,這時可使用ul:nth-of-type(3)。
ul:nth-last-of-type(3) { border: 1px solid black; }
對了,咱們也可使用nth-last-of-type選擇倒數第幾個元素。
ul li:first-child { border-top: none; }
這個結構性僞類選擇父級元素的第一個子對象。這個常常用於移除列表的第一個和最後一個元素的邊框。
ul > li:last-child { color: green; }
這個僞類選擇父級元素的最後一個對象。
用一個簡單的例子來講明這樣選擇器,首先,咱們製做一個列表。
<ul> <li> List Item </li> <li> List Item </li> <li> List Item </li> </ul>
很簡單的列表
ul { width: 200px; background: #292929; color: white; list-style: none; padding-left: 0; } li { padding: 10px; border-bottom: 1px solid black; border-top: 1px solid #3c3c3c; }
設置好背景,去掉ul默認的內邊距,再給每一個li加上邊。
就像圖片中顯示的同樣,咱們須要去掉第一個和最後一個的邊。這時就可使用:first-child和:last-child。
li:first-child { border-top: none; } li:last-child { border-bottom: none; }
Yep – IE8 supported :first-child
, but not :last-child
. Go figure.
div p:only-child { color: red; }
確實,這個你可能不多用。不過這個真的頗有用。
在下面的例子,只有第一層中的p標籤會變色。父級元素下的子類多於一個時這個僞類效果就中止了。
<div><p> My paragraph here. </p></div> <div> <p> Two paragraphs total. </p> <p> Two paragraphs total. </p> </div>
li:only-of-type { font-weight: bold; }
和28個結構性僞類類似,這個僞類只會在父級元素下只有一個子級元素X的狀況下起做用。這種狀況,你也可使用ul li,不過這樣就會選擇全部列表項了。
ul > li:only-of-type { font-weight: bold; }
爲便於理解,作個測試。複製下面的標籤
<div> <p> My paragraph here. </p> <ul> <li> List Item 1 </li> <li> List Item 2 </li> </ul> <ul> <li> List Item 3 </li> <li> List Item 4 </li> </ul> </div>
如今,嘗試去選擇list Item 2,當你找到方法或者放棄時,請接着看一下。
有幾種的不一樣的方法。咱們評審其中幾個。首先用first-of-type
ul:first-of-type > li:nth-child(2) { font-weight: bold; }
這個代碼的意思是,在頁面中找到第一個無序列表,而後再找到其直接的子級元素(也就是li),最後找到第二個li。
p + ul li:last-child { font-weight: bold; }
在這個例子,先查找與p標籤直接相鄰的ul標籤,而後再找倒數第一個li(也就是第二個li)。
ul:first-of-type li:nth-last-child(1) { font-weight: bold; }
關於 css樣式查詢修改 附贈網址
http://www.css88.com/book/css/