廢話很少說,po代碼css
<div class="a"> <div class="b"></div> <div class="c"></div> <div class="d">111</div> <div class="d">222</div> </div>
*{ margin: 0; padding: 0 } .a{ width:100px; height:100px; border:1px solid red } .c+.d{ width:30px; height: 30px; background-color: green }
實現圖css3
在這裏,.c+.d的意思就是選擇一個名爲d的類,而且這個類的前面"鄰居"有個類c這樣就找到咱們要求的類了,若是前面的類不是c那麼d類就不符合要求(看包裹"222"的類就不符合要求).佈局
再po一段代碼flex
*{ margin: 0; padding: 0 } .a{ width:100px; height:100px; border:1px solid red } .c~.d{ width:30px; height: 30px; background-color: green }
這時候咱們把+號換成~就變成這樣編碼
爲何會這樣呢,由於.c~.d的意思就是找到名爲d的類,而且在d類前面能找到c類.
若是用集合表示的話".c+.d"是包含在".c~.d"的spa
<div class="a"> <div class="b"> </div> </div> *** <div class="q"> qqqq <div class="w"> www <div class="e"> eee <div class="r"> rrr </div> </div> </div> </div>
*{ margin: 0; padding: 0 } .a{ width: 100px; height: 100px; border: 1px solid red; } .a > .b{ width: 30px; height: 30px; background-color: green }
這是子選擇器基礎語法,接下來作個改動3d
*{ margin: 0; padding: 0 } .a{ width: 100px; height: 100px; border: 1px solid red; } div > div{ width: 30px; height:30px; background-color: green }
在這裏div>div能夠嵌套,也就是說只要知足這個關係就能夠嵌套,因此w,e,r類知足這個條件樣式就能夠改變樣式code
c3的僞類分爲6種 -->動態僞類選擇器,目標僞類選擇器,語言僞類選擇器,UI狀態僞類選擇器,結構僞類選擇器,否認僞類選擇器orm
僞類對元素進行分類是基於特徵而不是它們的名字、屬性或者內容;原則上特徵是不能夠從文檔樹上推斷獲得的。
僞類寫法:E : pseodu { property : value }, E -->選擇器,pseodu -->僞類名字,property -->屬性,value -->值
1.動態僞類選擇器分爲2種:
a. 連接僞類選擇器 : E:link-->已經連接未訪問 E:visited-->已經連接已經訪問
b. 用戶行爲僞類選擇器 : E:active-->目標被激活 E:hover-->目標被鼠標懸停E:focus目標得到焦點
2.目標僞類選擇器
寫法:E:target,意思是匹配E元素而且E元素被相關uri(也就是a標籤)指向blog
<style> p:target { border: 2px solid #D4D4D4; background-color: #e5eecc; } </style> </head> <body> <h1>這是標題</h1> <p><a href="#news1">跳轉至內容 1</a></p> <p><a href="#news2">跳轉至內容 2</a></p> <p>請點擊上面的連接,:target 選擇器會突出顯示當前活動的 HTML 錨。</p> <p id="news1"><b>內容 1...</b></p> <p id="news2"><b>內容 2...</b></p>
3.語言僞類選擇器-->根據元語言編碼匹配元素
<style> p:lang(en) { background:yellow; } </style> </head> <body> <p>我是555。</p> <p lang="en">I live in 555.</p>
4.UI狀態選擇器 -->form表單元素狀態的篩選
E:checked -->被選中的元素
E:enable -->啓用狀態的選擇器
E:disable -->禁用狀態的選擇器
<style media="screen"> *{ margin: 0; padding: 0 } input:checked{ margin-right: 30px } input:disabled{ margin-left: 30px } </style> </head> <body> <form action=""> <input type="radio" name="sex" value="male" checked>Male <br> <input type="radio" name="sex" value="female" disabled>Female </form> </body>
5.結構僞類選擇器 -->經過文檔樹結構進行匹配
參數n爲整數,當小於0表示不選擇元素,當變形爲4-n或者是2n+1時,n的取值範圍是0,1,2,3....,當n爲even表示偶數,odd表示奇數,廢話很少說,po一些常常用到的代碼
<style media="screen"> *{ margin: 0; padding: 0 } ul{ display:flex; } ul>li{ width: 30px; height: 30px; border: 1px solid red; list-style: none; border-radius: 15px; display: flex; align-items: center; justify-content: center; } </style> </head> <body> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> <li>7</li> <li>8</li> <li>9</li> </ul> </body>
效果以下:
如今添加以下
li:first-child{ background-color: red } li:last-child{ background-color: blue } li:nth-child(2){ background-color: green } li:nth-last-child(2){ background-color: black }
關於奇數偶數
li:nth-child(even){ background-color: red } li:nth-of-type(odd){ background-color: green }
效果等同於
li:nth-child(2n){ background-color: red } li:nth-of-type(2n+1){ background-color: green }
在這裏我麼注意到關於n的減法n不能被減只能轉換爲負數相加
li:nth-child(-n+5){ background-color: red }
下面是錯誤示範
li:nth-child(5-n){ background-color: red }
6.否認僞類選擇器 -->能夠起過濾做用
<style media="screen"> *{ margin: 0; padding: 0 } ul{ display:flex; } ul>li{ width: 30px; height: 30px; border: 1px solid red; float: left; list-style: none; border-radius: 15px; display: flex; align-items: center; justify-content: center; } li:not([class=demo]){ background-color: red } </style> </head> <body> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li class="demo">5</li> <li>6</li> <li>7</li> <li>8</li> <li>9</li> </ul> </body>
僞元素用於定位文檔中包含的文本,但沒法在文檔樹種定位,咱們能夠這樣理解,僞類元素和僞元素的區別是單冒號和雙冒號的區別
1 ::first-letter -->用來選擇文本的第一個字母
<style media="screen"> *{ margin: 0; padding: 0 } p::first-letter{ color:red } </style> </head> <body> <p>i am tony</p> </body>
2 ::first-line -->用於選擇第一行文本
<style media="screen"> *{ margin: 0; padding: 0 } div{ /* width: 150px */ } div::first-line{ color:red } </style> </head> <body> <div> 關於inline-block可能不少人都不熟悉,佈局這方面不少人用的都是flex或者浮動,flex很強大毋庸</div> </body>
3 ::before和::after,這兩個很是常見的僞元素
<style media="screen"> *{ margin: 0; padding: 0 } p{ color: red } p::before{ content:"before" } p::after{ content:"after" } </style> </head> <body> <p> ------ </p> </body>
4 ::selection -->咱們右鍵按下鼠標時文本的樣式
<style media="screen"> *{ margin: 0; padding: 0 } p{ color: red } p::before{ content:"before" } p::after{ content:"after" } p::selection{ color: yellow; background-color: red } </style> </head> <body> <p> ------ </p> </body>
如圖,咱們用鼠標選擇文本的樣式就變了
顧名思義,屬性選擇器就是過濾選擇器嘛~
接下來就看圖po代碼吧
1,
*{ margin: 0; padding: 0 } ul>li{ width: 30px; height: 30px; border: 1px solid red; list-style: none; border-radius: 15px; display: flex; align-items: center; justify-content: center; } li[id]{ background-color: blue } </style> </head> <body> <ul> <li>1</li> <li>2</li> <li class="three-eee">3</li> <li id="four">4</li> <li title="i am programmer">5</li> <li title="iamyou">6</li> <li title="youami">7</li> <li title="hellocss3">8</li> <li>9</li> </ul> </body>
2,
li[class=three-eee]{ background-color: blue }
3,
li[class|=three]{ background-color: blue }
4,
li[title~=am]{ background-color: blue }
5,
li[title^=iam]{ background-color: green }
li[title$=ami]{ background-color: green }
li[title*=llo]{ background-color: green }
最後補充下