整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          CSS的選擇器

          CSS的選擇器

          本選擇器

          類選擇器 .

          class屬性的值與類選擇器一一對應

          ID選擇器 #

          id選擇器的名字是唯一的,雖然兩個一樣的不報錯,但不能那么寫

          通配符選擇器 *

          通配符選擇器: 定位當前HTML頁面中所有元素

          * 應用: 用來設置當前HTML頁面的默認樣式

          * 問題: 該選擇器的性能不好

          屬性選擇器 []

          可以為擁有指定屬性的 HTML 元素設置樣式,而不僅限于 class 和 id 屬性。


          層級選擇器

          HTML元素之間的關系分為三種:

          • 父級與子級的關系:如下所示,<ul>元素是<li>元素的父級元素,那么<li>元素就是<ul>元素的子級元素。 <ul id="u1">
            <li id="l1"></li>
            </ul>
          • 兄弟之間的關系:如下所示,<ul>是兩個<li>的父級,即兩個<li>是<ul>的子級,那么兩個<li>之間就是兄弟元素。 <ul id="u1">
            <li id="l1"></li>
            <li id="l2"></li>
            </ul>
          • 祖先與后代之間的關系:如下所示,<div>是<ul>和<li>元素的祖先元素,那么<ul>和<li>就是<div>的后代元素 <div>
            <ul id="u1">
            <li id="l1"></li>
            <li id="l2"></li>
            </ul>
            </div>

          后代選擇器

          后代選擇器包含該元素中所有包裹的元素 如下圖所示

           
             <style>
               .C {
                 width: 500px;
                 height: 300px;
               }
               .C1 {
                 width: 300px;
                 height: 200px;
               }
               .C2 {
                 width: 200px;
                 height: 100px;
               }
               /* 
                 定位的是 .ancestor 的后代為 div 的元素
                 * 后代選擇器包含該元素中所有包裹的元素
                */
               .C div {
                 background-color: lightcoral;
               }
             </style>
           </head>
           
           <body>
             <div class="C">
               18級啟嘉班
               <div class="C1">
                 19級啟嘉班
                 <div class="C2">20級啟嘉班</div>
               </div>
             </div>
           </body>

          效果: C1和C2都是C的后代,所以C1和C2都有顏色



          子級選擇器

          子級選擇器 定位的是為子級的元素 如下所示:

           ?
             <style>
               .C {               /*C的顏色覆蓋區域*/
                 width: 500px;
                 height: 30px;
               }
           ?
               .C1 {              /*C1的顏色覆蓋區域*/
                 width: 300px;
                 height: 20px;
               }
           ?
               .C2 {               /*C2的顏色覆蓋區域*/
                 width: 200px;
                 height: 20px;
               }
           ?
               /*
                 定位的是 .C 的子級為 div 的元素
               */
               .ancestor>div {
                 background-color: lightcoral;
               }
             </style>
           </head>
           ?
           <body>
             <div class="C">
               18級啟嘉班
               <div class="C1">
                 19級啟嘉班
                 <div class="C2">20級啟嘉班</div>
               </div>
             </div>
           </body>

          效果: C的子級是C1所以,C1的地方有顏色



          相鄰兄弟選擇器

          相鄰兄弟選擇器(只能找后面的div,不能找前面的)如下所示

           ?
             <style>
               .C {
                 width: 500px;
                 height: 20px;
               }
           ?
               .C1 {
                 width: 300px;
                 height: 20px;
               }
           ?
               .C2 {
                 width: 200px;
                 height: 20px;
               }
           ?
               /*
                 定位的是 .C2 的子級為 div 的元素
               */
               .C2+div {
                 background-color: lightcoral;
               }
             </style>
           </head>
           ?
           <body>
             <div class="C">
               18級啟嘉班
               <div class="C1">
                 19級啟嘉班
                 <div class="C2">20級啟嘉班</div>
                 <div class="C2">21級啟嘉班</div>
                 <div class="C2">22級啟嘉班</div>
               </div>
             </div>
           </body>

          效果如下: 相鄰兄弟選擇器只能找后面的,C2相鄰的是C3,所以C3有顏色

          普通兄弟選擇器

          普通兄弟選擇器 (找到后面所有的兄弟)

             <style>
               .C {
                 width: 500px;
                 height: 20px;
               }
           ?
               .C1 {
                 width: 300px;
                 height: 20px;
               }
           ?
               .C2 {
                 width: 200px;
                 height: 20px;
               }
           ?
               
                /* 定位的是 .C3 的后面兄弟為 div 的元素 */
               .C3~div {
                 background-color: lightcoral;
               }
             </style>
           </head>
           ?
           <body>
             <div class="C">
               18級啟嘉班
               <div class="C1">
                 19級啟嘉班
                 <div class="C2">20級啟嘉班</div>
                 <div class="C3">21級啟嘉班</div>
                 <div class="C4">22級啟嘉班</div>
                 <div class="C5">23級啟嘉班</div>
                 <div class="C6">24級啟嘉班</div>
               </div>
             </div>
           </body>

          效果:

          并集選擇器

          給所有的選擇器選中的標簽設置屬性。以","隔開,如下所示

           ?
             <style>
               /* 為 <h1> ~ <h4> 元素的文本內容設置相同顏色 */
               /* h1 {
                 color: lightcoral;
               }
           ?
               h2 {
                 color: lightcoral;
               }
           ?
               h3 {
                 color: lightcoral;
               }
           ?
               h4 {
                 color: lightcoral;
               }
               */
                 
               /* 通過并集選擇器進行改寫 */
               h1,h2, h3, h4{
                           color: lightcoral;
                   }
             </style>
           ?
           <body>
             <h1>標題一</h1>
             <h2>標題二</h2>
             <h3>標題三</h3>
             <h4>標題四</h4>
           </body>

          效果:h1~h4顏色相同,可以用并集選擇器集合起來


          交集選擇器

           <!DOCTYPE html>
           <html lang="en">
           ?
           <head>
             <meta charset="UTF-8">
             <meta name="viewport" content="width=device-width, initial-scale=1.0">
             <title>交集選擇器</title>
             <style>
               p {
                 color: lightcoral;
               }
           ?
               .cls {
                 color: lightskyblue;
               }
           ?
               /* 交集選擇器 */
               p.cls {
                 color: magenta;
               }
             </style>
           </head>
           ?
           <body>
             <p>18級啟嘉班</p>
             <p class="cls">19級啟嘉班</p>
             <p>20級啟嘉班</p>
             <div class="cls">啟嘉網</div>
           </body>
           ?
           </html>

          效果:交集改變了19級啟嘉班的顏色


          下一節更新CSS的其他的選擇器

          SS 的偽類選擇器和偽元素選擇器,讓 CSS 有了更為強大的功能。

          偽類大家聽的多了,偽元素可能聽到的不是那么頻繁,其實 CSS 對這兩個是有區分的。

          有個錯誤有必要每次講到偽類都提一下,有時你會發現偽類元素使用了兩個冒號 (::) 而不是一個冒號 (:),這是 CSS3 規范中的一部分要求,目的是為了區分偽類和偽元素,大多數瀏覽器都支持下面這兩種表示方式。

          通常而言,

          符合標準而言,單冒號(:)用于 CSS3 偽類,雙冒號(::)用于 CSS3 偽元素。

          當然,也有例外,對于 CSS2 中已經有的偽元素,例如 :before,單冒號和雙冒號的寫法 ::before 作用是一樣的。

          所以,如果你的網站只需要兼容 webkit、firefox、opera 等瀏覽器或者是移動端頁面,建議對于偽元素采用雙冒號的寫法,如果不得不兼容低版本 IE 瀏覽器,還是用 CSS2 的單冒號寫法比較安全。

          偽類選擇器 :focus-within

          言歸正傳,今天要說的就是:focus-within 偽類選擇器。

          它表示一個元素獲得焦點,或,該元素的后代元素獲得焦點。劃重點,它或它的后代獲得焦點。

          這也就意味著,它或它的后代獲得焦點,都可以觸發 :focus-within。

          :focus-within 的冒泡性

          這個屬性有點類似 Javascript 的事件冒泡,從可獲焦元素開始一直冒泡到根元素 html,都可以接收觸發 :focus-within 事件,類似下面這個簡單的例子這樣:

          就是這樣:

          這個選擇器的存在,讓 CSS 有了進一步的讓元素持久停留在一種新狀態的的能力。

          下面幾個例子,看看 :focus-within 可以提供什么能力,做些什么事情。

          感應用戶聚焦區域

          它或它的后代獲得焦點,這一點使得讓感知獲焦區域變得更大,所以,最常規的用法就是使用 :focus-within 感應用戶操作聚焦區域,高亮提醒。

          下面的效果沒有任何 JS 代碼:

          這里是什么意思呢?:focus-within 做了什么呢?

          • 我們無須去給獲焦的元素設置 :focus 偽類,而是可以給需要的父元素設置,這樣當元素獲焦時,我可以一并控制它的父元素的樣式

          核心思想用 CSS 代碼表達出來大概是這樣:

          運用上面思想,我們可以把效果做的更炫一點點,在某些場景制作一些增強用戶體驗的效果:

          TAB導航切換

          在之前的一篇文章里,介紹了兩種純 CSS 實現的 TAB 導航欄切換方法:

          純CSS的導航欄Tab切換方案

          現在又多了一種方式,利用了 :focus-within 可以在父節點獲取元素獲得焦點的特性,實現的TAB導航切換:

          主要的思路就是通過獲焦態來控制其他選擇器,以及最重要的是利用了父級的 :not(:focus-within) 來設置默認樣式:

          配合 :placeholder-shown 偽類實現表單效果

          :focus-within 一個人能力有限,通常也會配合其他偽類實現一些不錯的效果。這里要再簡單介紹的是另外一個有意思的偽類 :placeholder-shown。

          • :placeholder-shown:The :placeholder-shown CSS pseudo-class represents any or <textarea> element that is currently displaying placeholder text.
          • 另外,劃重點,這個偽類是仍處于實驗室的方案。也就是未納入標準,當然我們的目的是探尋有意思的 CSS 。

          意思大概就是,當 input 類型標簽使用了 placeholder 屬性有了默認占位的文字,會觸發此偽類樣式。配合:not()偽類,可以再改變當默認文字消失后的樣式,再配合本文的主角,我們可以實現表單的一系列效果。

          CSS 代碼大概呈現成這樣:

          實際效果如下:

          可以看到,上面的效果沒有用到任何 JS,可以實現:

          1. 整個 input(包括父元素所在區域)獲焦與非獲焦樣式控制
          2. placeholder 屬性設置的文字出現與消失后樣式控制

          實現離屏導航

          這個是其他很多文章都有提到過的一個功能,利用 focus-within 便捷的實現離屏導航,可以說將這個屬性的功能發揮的淋漓盡致:

          實現掘金登錄動效切換

          juejin.im是我很喜歡的一個博客網站,它的登錄有一個小彩蛋,最上面的熊貓在你輸入帳號密碼的時候會有不同的狀態,效果如下:

          利用本文所講的 focus-within ,可以不借助任何 Javascript,實現這個動效:

          兼容性

          好了,例子舉例的也差不多了,下面到了殺人誅心的兼容性時刻,按照慣例,這種屬性大概率是一片紅色,看看 CANIUSE,截圖日期(2018/08/02),其實也還不算特別慘淡。

          原文出處:https://www.cnblogs.com/coco1s/p/9406413.html 作者:ChokCoco

          于現在Win11系統已經正式推出了,不少小伙伴都更新了Win11系統,但是Win11系統有不少地方和Win10系統不一樣,因此有不少小伙伴不清楚Win11如何更改默認打開方式,那么今天讓小編來教一教大家要怎么操作吧。

            Win11更改默認打開方式的方法

            1、鼠標單擊需要更改的文件,找到Properties屬性選項。

            2、在打開的菜單窗口中找到change按鈕。

            3、選擇新的打開方式,點擊OK鍵確定保存即可。

          以上是來自小白官網的一篇文章(www.xiaobaixitong.com)


          主站蜘蛛池模板: 又硬又粗又大一区二区三区视频| 国产伦精品一区二区三区视频猫咪| 欧洲精品码一区二区三区免费看 | 国产对白精品刺激一区二区| 中日av乱码一区二区三区乱码| 久久精品国产一区二区三区| 成人免费区一区二区三区 | 无码人妻精品一区二区蜜桃| 国产成人一区二区动漫精品| 国产精品乱码一区二区三区 | 国产人妖视频一区二区破除| 亚洲一区二区视频在线观看| 日韩中文字幕精品免费一区| 国产精品男男视频一区二区三区| 任你躁国产自任一区二区三区| 国产一区二区三区高清视频| 亚洲国产一区在线观看| 国产激情精品一区二区三区| 麻豆天美国产一区在线播放| 日韩精品一区二区三区视频| 色一情一乱一伦一区二区三欧美 | 国产一区三区三区| 国模私拍福利一区二区| 亚洲AV无码一区二区三区性色| 一区二区三区www| 精品国产一区AV天美传媒| 国产亚洲综合精品一区二区三区 | 精品国产一区二区三区在线观看| 久久精品无码一区二区无码| 中日韩一区二区三区| 精品国产AⅤ一区二区三区4区 | 亚洲av无码不卡一区二区三区| 精品福利视频一区二区三区| 国产品无码一区二区三区在线蜜桃| 日本韩国黄色一区二区三区 | 国产福利无码一区在线| 99精品国产高清一区二区| 亚洲av不卡一区二区三区| 国产午夜福利精品一区二区三区| 中文字幕亚洲一区二区va在线| 免费萌白酱国产一区二区|