CSS3選擇器的研究,案例

来源:http://www.cnblogs.com/pssp/archive/2016/09/17/5878069.html
-Advertisement-
Play Games

在上一篇CSS3選擇器的研究中列出了幾乎所有的CSS3選擇器,和偽類選擇器,當是並沒有做案例的研究,本想在那篇文章裡面寫,但想想如果把案例都寫在那篇文章裡面,對於查找來說就不是很方便,所有另開一篇來講實例。 屬性選擇器 [title]:選擇帶有title屬性的元素 [title='hello']:選 ...


  在上一篇CSS3選擇器的研究中列出了幾乎所有的CSS3選擇器,和偽類選擇器,當是並沒有做案例的研究,本想在那篇文章裡面寫,但想想如果把案例都寫在那篇文章裡面,對於查找來說就不是很方便,所有另開一篇來講實例。

 

屬性選擇器

[title]:選擇帶有title屬性的元素

  


[title='hello']:選擇屬性是title並且值是hello的元素

  


[title~='hello']:選擇屬性是title並且部分值是hello的元素,hello需要是單獨的值,以空格分開

  
[title*='hello']:選擇屬性是title並且其中包含了hello的元素

  
[title|='hello']:選擇屬性是title並且值是以hello開頭並且允許hello後面以-的任意字元

  
[title^='hello']:屬性以hello開頭的任意字元

  
[title$='hello']:屬性以hello結束的任意字元

  
[title^='hello'][title$='.py']:選擇屬性以hello開頭並且以.py結束的元素

  

連結符


h1~p:選擇h1元素後面的所有同級p元素

  


p~p:選擇p元素後面的所有同級p元素,除了第一個p元素

  


h1+p:選擇h1元素後面的第一個同級p元素

  

如果span在第一個p標簽前面是不行的,因為+是選擇的第一個同級元素。如果你不想限制類型,只要選擇第一個,那麼可以這樣。

  

 

偽類選擇器


  nth系列,數字

 

nth-child():按照位置來算數

  


nth-of-type():按照類型來算數

  


nth-last-child():從末尾按照位置開始算

  
nth-last-of-type():從末尾按照類型來算數

  
通過(-n+number)來指定選擇前幾個元素

-n會向負數方向增加先從0開始,-1,-2,-3...

  

  

使用:nth-child(odd)或:nth-child(even)實現隔行變色。

  odd

  

even

    

單個選擇


first-child:選擇第一個元素,按位置

  
first-of-type:選擇第一個元素,按類型

   

last-child:選擇最後一個元素,按位置

  
last-of-type:選擇最後一個元素,按類型

   

only-child:沒有其他兄弟元素的時候會被選中

  
only-of-type:可以有兄弟元素但要類型不同

  
使用only-of-type可以讓你從其他類型元素中挑選出一個元素來,反之only-child需要元素單獨存在才行。這個肯定有大作用,待發現。

 

 

偽類

:target

  1.   通過:target來模擬點擊事件
  2.   <a href="#a" id="a"></a>
  3.   利用target實現tab欄切換
  4.   使用target偽類,可以輕鬆地突出顯示用戶要閱讀的評論

利用target製作的tab切換,當然它還是有很多缺陷的,不過大家可以通過它擴展擴展。

:empty
  選擇沒有子元素並且沒有文本節點的元素

  利用:empty給預設提示。

  

  

  不過這個得註意一下,ul不能換行必須這樣寫<ul></ul>如果有換行就匹配不了了。其實購物車也可以利用這個來做預設提示。

:root
  選擇根元素,在HTML中root永遠是html元素

  

  和用html是一樣的,其他用處暫時沒想到。

:not
  參數支持傳遞一個元素甚至其他偽類選擇器,但不支持傳遞連結符以及偽元素
  選擇除了指定參數以外的任意元素

 

案例1:除了span

  

案例2:除了第一個元素

案例3:除了第一個和最後一個

還有其他妙用自行開發。

 

:optional

  選擇不是必須填寫的input元素

  也就是獲取到input沒有加required屬性的元素

  

:required

  選擇有加required屬性的元素

  

:read-write

  獲取可讀寫的input元素

  

:read-only

  獲取只可讀的input元素

  

:out-of-range

  當input元素的值是超出範圍時,max和min限定的範圍,註意類型要是number

  

:valid

  選擇所有合法的輸入,適用於表單元素有限制,如最小輸入元素和屬性的最大值,電子郵件具有合法的電子郵件,或者數值等數字欄位。

   

案例1:我們可以利用它給輸入錯誤的給個提示。

取個反就好,預設給它錯誤的顏色。

 

案例2:結合:not來使用


元素狀態偽類

:checked
  當checkbox被選中時

  

:disabled
  當元素被禁用時

  

:enabled
  當元素沒有被禁用時

  

 

偽元素

::first-line
  選擇第一行文字

  

::first-letter
  選擇第一個字

  

::after
  在元素末尾添加一個偽元素

  

::before
  在元素開頭添加一個偽元素

  

 

我們在製作一些小圖標時就完全可以使用::after和::before,就不必再使用其他標簽了。

 

::selection
  應用到選中的文本上

  

 

合理利用這些選擇器,可以幫你解決很多問題,目前還在研究中,本篇內容長期更新。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 題目: 在一個2^k x 2^k 個方格組成的棋盤中,若恰有一個方格與其他方格不同,則稱該方格為一特殊方格,且稱該棋盤為一特殊棋盤。現在要用4種不同形態的L型骨牌覆蓋一個給定的特殊棋盤上除特殊方格以外的所有方格,且任意2個L型骨牌不得重疊覆蓋。 解釋一下什麼是L型骨牌:就是由三個方格組成的一個角,可 ...
  • Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given 1->2->3->4->5->NULL, m = 2 and n = 4, return 1->4->3->2- ...
  • 1.字典。 字典是python中的映射的數據類型,由鍵值對構成,幾乎所有類型的python對象都可以用作鍵,不過一般還是以數字或是字元串最為常見。值可以是任意類型的python對象,字典元素用{}來包裹。 (1)要註意“鍵值對”的相關概念。 假設字典為dics = {0:'a', 1:'b', 'c ...
  • 一.預備知識 最近開始嘗試做一些tornado商城項目,在開始之前需要引入一些項目設計知識,如介面,抽象方法抽象類,組合,程式設計原則等,個人理解項目的合理設計可增加其靈活性,降低數據之間的耦合性,提高穩定性,下麵介紹一些預備知識 1.介面 其實py中沒有介面這個概念。要想實現介面的功能,可以通過主 ...
  • 在進行列表排序時,有個“上移”和“下移”操作,這個一般在記憶體里完成,然後統一提交到資料庫中,對於上移與下移的設計,大叔在LIND.DDD.DOMAIN里有一個ISortBehavor介面,主要是說,如果實體對象支持排序功能,可以實現這個介面,而在擴展庫中,將有為本地結果集動態排序(上移和下移)的方法 ...
  • 架構目標 業務系統 架構設計原則 應用架構 基礎架構 資料庫架構 分散式資料庫特性 • 支持MySQL,MariaDB,MongoDB等資料庫 • 服務高可用,主庫故障,從庫自動切換 • 數據高可靠,定期快照備份,增量備份 • 數據自動拆分,一鍵無縫遷移擴容 • 針對特殊業務需求,定製優化特殊的數據... ...
  • 職責鏈模式(Chain of responsibility),就是使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關係。通過職責鏈模式,簡單地使用JavaScript模擬了冒泡事件。 ...
  • leonaScroll-1.1最新版-豎向 leonaScroll-1.1.js歡迎使用leonaScroll-1.1.js,此滾動條僅支持豎向滾動,如您在使用過程中發現更多問題,歡迎指正! 更新:1.1版本1、修複了前面初始版本中的一些bug,比如不能自適應用戶的文本內容,css文件繁雜2、用戶只 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...