使用CSS屬性選擇器來拼接HTML的DNA的方法
CSS屬性選擇器非常神奇,它們可以幫你避免添加數不勝數的類名,從另一方面來指出你代碼里的一些問題。但是大家不用慌,雖然屬性選擇器復雜且強大,但是很易于學習和使用。在這篇文章,我們將討論它們是如何運行起來的,再教大家一些使用方面的技巧。
一般我們最普遍的使用方法是將HTML屬性放進一個方括號中,稱之為屬性選擇器。例如:
[href] {
color: chartreuse;
}
任何具有href屬性且沒有更具體的選擇器的html元素現(xiàn)在都會變成黃綠色。屬性選擇器的特性和類選擇器一致
但是你可以使用屬性選擇器做更多的事情。就像你的DNA一樣,它們具有嵌入式的邏輯,可幫助您選擇各種屬性組合和值。 它們不僅可以精確的匹配標簽,類或id選擇器,而且可以匹配屬性中的任何屬性甚至字符串值。
屬性選擇
屬性選擇器可以獨立存在或更具體一點,比如我們需要選擇具有title屬性的所有div標簽。
div[title]
也可以通過下面操作來選擇具有title屬性的div的子元素:
div [title]
需要明確的是,中間的空格代表著是后臺選擇器,即選擇具有該屬性的元素的子元素。我們也可以更精確一點,來選擇想要的屬性值:
div[title="dna"]
大多數情況下,屬性選擇器不需要引號,但我會使用它們,因為我相信它可以提供可讀性并確保具有良好的兼容性
如果你想從經過空格分割后的列表里選擇具有"dna"字符的屬性值,比如“my beautiful dna”或“mutating dna is fun!”,可以在等號前添加一個波浪號`~`:
div[title~="dna"]
您可以選擇“dontblamemeblamemydna”或“his-stupidity-is-from-upbringing-not-dna”之類的標題,然后使用美元符號`$`來匹配title的結尾:
[title$="dna"]
要匹配屬性值的前面,例如“dnamutants”或“dna-splicing-for-all”的標題,就用插入符號`^`。
[title^="dna"]
如果你想完全匹配一個值開頭的完整單詞,可以使用管道符來做。比如你不想選擇一個“genealogy”的title,但仍然想選擇“gene”和“gene-data”:
[title|="gene"]
還有一個匹配任何子字符串的模糊搜索屬性運算符`*`:
[title*="dna"]
最后要知道的是,您可以添加一個標志,讓屬性搜索不區(qū)分大小寫。 在結束方括號之前添加`i`:
[title*="DNA" i]
使這些屬性選擇器更加強大的原因是它們是可堆疊的 —— 允許您選擇具有多個匹配因子的元素。
比如你需要找到 a 標簽,它有一個title屬性,并且有一個以“genes”結尾的class類,該如何寫呢?
a[title][class$="genes"]
我們不僅可以選擇HTML元素的屬性,還可以使用偽“科學”(即偽元素和內容聲明)來打印出文本:
<span class="joke" title="Gene Editing!">What’s the first thing a biotech journalist does after finishing the first draft of an article?</span>
.joke:hover:after {
content: "Answer:" attr(title);
display: block;
}
上面的代碼在鼠標懸停時將顯示一串自定義的字符串。
現(xiàn)在我們已經看到了如何使用屬性選擇器進行選擇,讓我們看看一些用例。我把它們分為兩類: 一般使用技巧 和 診斷 。
一般使用技巧
輸入類型的設置
您可以不同地設置輸入類型,例如電子郵件與電話:
input[type="email"] {
color: papayawhip;
}
input[type="tel"] {
color: thistle;
}
顯示手機號碼鏈接
您可以隱藏特定尺寸的電話號碼并顯示電話鏈接,以便在電話上輕松撥打電話:
span.phone {
display: none;
}
a[href^="tel"] {
display: block;
}
內部鏈接vs外部鏈接,安全鏈接vs非安全鏈接
您可以區(qū)別對待內部和外部鏈接,并將安全鏈接設置為與不安全鏈接不同:
a[href^="http"]{
color: bisque;
}
a:not([href^="http"]) {
color: darksalmon;
}
a[href^="http://"]:after {
content: url(unlock-icon.svg);
}
a[href^="https://"]:after {
content: url(lock-icon.svg);
}
下載圖標
HTML5給我們的一個屬性是“下載”,它告訴瀏覽器,你猜對了,下載該文件而不是試圖打開它。這對于您希望人們訪問但不希望它們立即打開的PDF和DOC非常有用。它還使得連續(xù)下載大量文件的工作流程更加容易。下載屬性的缺點是沒有默認的視覺效果將其與更傳統(tǒng)的鏈接區(qū)分開來。通常這是你想要的,但如果不是,你可以做類似下面的事情:
a[download]:after {
content: url(download-arrow.svg);
}
您還可以使用不同的圖標(如PDF與DOCX與ODF等)來傳達文件類型:
a[href$="pdf"]:after {
content: url(pdf-icon.svg);
}
a[href$="docx"]:after {
content: url(docx-icon.svg);
}
a[href$="odf"]:after {
content: url(open-office-icon.svg);
}
您還可以通過堆疊屬性選擇器確保這些圖標僅在可下載鏈接上:
a[download][href$="pdf"]:after {
content: url(pdf-icon.svg);
}
覆蓋或重新使用已廢棄/棄用的代碼
我們都遇到了過時代碼的舊網站,在HTML5之前,您可能需要覆蓋甚至重新應用作為屬性實現(xiàn)的樣式:
<div bgcolor="#000000" color="#FFFFFF">Old, holey genes</div>
div[bgcolor="#000000"] { /*override*/
background-color: #222222 !important;
}
div[color="#FFFFFF"] { /*reapply*/
color: #FFFFFF;
}
顯示文件類型
默認情況下,文件類型輸入標簽的可接受文件列表是不可見的。通常,我們使用偽元素來公開它們,雖然你不能在大多數輸入標簽上(或者在Firefox或Edge中)使用偽元素,但是你可以在文件輸入上使用它們:
<input type="file" accept="pdf,doc,docx">
[accept]:after {
content: "Acceptable file types: " attr(accept);
}
html手風琴菜單
details 和 summary 標簽是一種只用HTML做擴展/手風琴菜單的方法, details 包括了 summary 標簽和手風琴打開時要展示的內容。點擊 summary 會展開 details 標簽并添加 open 屬性,我們可以通過open屬性輕松地為打開的 details 標簽設置樣式:
<details>
<summary>List of Genes</summary>
Roddenberry
Hackman
Wilder
Kelly
Luen Yang
Simmons
</details>
details[open] {
background-color: hotpink;
}
打印鏈接
a[href]:after {
content: " (" attr(href) ") ";
}
自定義工具
使用屬性選擇器創(chuàng)建自定義工具提示既有趣又簡單:
[title] {
position: relative;
display: block;
}
[title]:hover:after {
content: attr(title);
color: hotpink;
background-color: slateblue;
display: block;
padding: .225em .35em;
position: absolute;
right: -5px;
bottom: -5px;
}
診斷
這些選項用于幫助我們在構建過程中或在嘗試修復問題時在本地識別問題。將這些內容放在我們的生產網站上會使用戶產生錯誤。
沒有controls屬性的audio
我不經常使用音頻標簽,但是當我使用它時,我經常忘記包含controls屬性。 結果:沒有顯示任何內容。如果您在Firefox中工作,如果您隱藏了音頻元素,或者語法或其他一些問題阻止它出現(xiàn)(僅適用于Firefox),此代碼可以幫助您解決問題:
audio:not([controls]) {
width: 100px;
height: 20px;
background-color: chartreuse;
display: block;
}
沒有alt替代文字
沒有alt屬性的圖片是可訪問性的噩夢,只需查看頁面就很難找到它們,但如果添加它們,它們就會彈出來(當頁面圖片加載失敗時,alt文字可以更好的解釋圖片的作用):
img:not([alt]) { /* no alt attribute */
outline: 2em solid chartreuse;
}
img[alt=""] { /* alt attribute is blank */
outline: 2em solid cadetblue;
}
異步Javascript文件
web頁面可以是內容管理系統(tǒng)和插件,框架和代碼的集合,Ted 在度假時寫道,確定哪些JavaScript異步加載以及哪些不加載可以幫助您專注于提高頁面性能:
script[src]:not([async]) {
display: block;
width: 100%;
height: 1em;
background-color: red;
}
script:after {
content: attr(src);
}
Javascript事件
您還可以突出顯示具有JavaScript事件屬性的元素,我在這里舉例OnMouseOver屬性,但它適用于任何JavaScript事件屬性:
[OnMouseOver] {
color: burlywood;
}
[OnMouseOver]:after {
content: "JS: " attr(OnMouseOver);
}
總結
以上所述是小編給大家介紹的使用CSS屬性選擇器來拼接HTML的DNA的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
相關文章
CSS 選擇器在實踐中是非常常用的,無論是在寫樣式上或是在 JS 中選擇 DOM 元素都需要用到。在 CSS Selectors Level 4 中,工作組繼續(xù)為選擇器標準添加了更豐富的選擇器。需2018-12-24- 這篇文章主要介紹了css選擇器設置標簽樣式的實例代碼,需要的朋友可以參考下2018-11-22
- 這篇文章主要介紹了CSS中的屬性選擇符和結構化偽類,是CSS入門學習中的基礎知識,需要的朋友可以參考下2015-08-01
CSS first-chjld偽類屬性匹配一個序列的第一個元素
:first-child偽類用于匹配一個序列的第一個元素,主要用它來實現(xiàn)一個序列的第一個元素或最后一個元素的上(下)邊框,下面有個不錯的示例,感興趣的朋友不要錯過2014-01-14css對邊框的屬性控制和鏈接的偽類選擇器-CSS教程-網頁制作-網頁教學網
原文:http://jorux.com/archives/property-3-if-you-love-css/ 本篇主要介紹css對邊框(border)的屬性控制和鏈接(link)的偽類選擇器. 邊框(border): css控制的邊框屬2008-10-17- 這篇文章主要介紹了css選擇器四大類:基本、組合、屬性、偽類的相關知識,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-14


