Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
話說水是生命的源泉,喝水是生活中再平常不過的事情了,不過近幾年因為水質(zhì)問題患上各類疾病的新聞頻頻爆出,也讓人們逐漸意識到喝水也要留個心眼。尤其是在一些新建的小區(qū)凈水系統(tǒng)還不太完善,或者是像我們這里的小區(qū)根本沒有凈水一說,最直接的解決辦法就是在自己家里安裝凈水裝置。
最近幾年關(guān)注智能家居比較多,也讓我了解到云米這個品牌,云米的產(chǎn)品在傳統(tǒng)家電的功能之上加入了智能化的玩法,之前體驗的云米冰箱就是一個典型的例子。最近再次有幸通過金測評拿到一款云米MR662小白龍凈水器,借著這臺產(chǎn)品不僅解決了新房子水質(zhì)凈化的問題,也朝著我理想中的全屋智能邁進(jìn)一步。
視頻優(yōu)酷鏈接:https://v.youku.com/v_show/id_XNTA5OTcyNDQ1Ng==.html
在文章開頭先附上一個完整的視頻體驗報告,與圖文內(nèi)容互補、相輔相成。
在某種意義上凈水器也算作是大件家電產(chǎn)品了,也可以稱之為新家電。云米小白龍凈水器采用的是傳統(tǒng)的瓦楞紙包裝箱,箱子正反兩側(cè)印有產(chǎn)品名稱型號以及線條輪廓圖,右側(cè)縱向羅列有五項功能特性。
較窄的兩個側(cè)邊一側(cè)印有云米企業(yè)相關(guān)的信息以及云米互聯(lián)網(wǎng)家電的圖示,另一側(cè)標(biāo)記有預(yù)約安裝入口、產(chǎn)品序列號等內(nèi)容,靠下方貼有一張不干膠銘牌,詳細(xì)地記錄有這臺凈水器的技術(shù)參數(shù)和制造商信息。
包裝箱隨產(chǎn)品采用立式的設(shè)計,從頂部劃開膠帶打開箱子,內(nèi)有厚實的塑料泡沫填充。最上方是一個附件盒,主機(jī)放在下方,機(jī)身外側(cè)有透明塑料袋包裹。
包裝內(nèi)容還是非常豐富的,包含云米小白龍凈水器主機(jī)、純水龍頭、三條PE管、三通閥、四個卡銷以及使用指南,兩支濾芯在出廠的時候已經(jīng)安裝到機(jī)身上了。
互聯(lián)網(wǎng)品牌的產(chǎn)品在顏值方面通常都不輸傳統(tǒng)品牌,在云米小白龍凈水器上也再次印證了我的看法。機(jī)身整體是一個規(guī)整的長方體,立式的造型有些類似于ITX體積的電腦機(jī)箱,邊角處加入了圓弧形線條過度,削弱了傳統(tǒng)家電產(chǎn)品給人留下的“笨重”印象。
外殼通體以ABS材質(zhì)為主,采用純白色的配色,并輔以細(xì)微的磨砂質(zhì)感,也更進(jìn)一步拔高了它的顏值,前面板和側(cè)邊的印刷的文字為金色,多少顯出一些貴族氣息。與現(xiàn)代家居廚房風(fēng)格契合自然,即便是明裝也沒有太大的違和感。
根據(jù)官方提供的參數(shù),云米小白龍凈水器的三圍尺寸是416*128*324mm,在同類產(chǎn)品中算是中等體積。對于像我這樣戶型比較小、櫥柜也比較局促的條件來說,將其放在櫥柜里也不會占用太多的空間,為櫥柜留出更多的儲物空間。
機(jī)身前面是一塊可拆卸的蓋板,蓋板上標(biāo)標(biāo)記有云米、泉先以及小白龍系列的相關(guān)字樣,靠近底部的位置打著兩個品牌的Logo。不過這塊蓋板與機(jī)身的固定并不太牢固,建議將機(jī)身穩(wěn)定安裝好以后再蓋上。
拆掉蓋板就可以看到機(jī)身上的兩個濾芯槽,上下兩個濾芯是橫著放到機(jī)身中的,安裝好以后也比較便于更換。上面的是5合1濾芯,下面的是RO濾芯。為了便于濾芯更換,出廠的時候就設(shè)計了把手,拆裝旋轉(zhuǎn)的時候有受力點,這一點還是非常人性化的。
在濾芯槽的左側(cè)和上方標(biāo)記有解鎖和鎖定標(biāo)識,向左旋轉(zhuǎn)到解鎖標(biāo)識處就可以取下濾芯,更換好新的濾芯之后需要向右旋轉(zhuǎn)將其鎖定。
兩個濾芯槽下方是操作面板,上方的三枚指示燈分別是5合1濾芯指示燈、WiFi狀態(tài)指示燈和RO濾芯指示燈,下方有“選擇”和“復(fù)位”兩個觸摸按鍵。
蓋板內(nèi)側(cè)的不干膠標(biāo)簽上印有注意事項以及產(chǎn)品配網(wǎng)等相關(guān)說明,初次接觸的同學(xué)可以細(xì)細(xì)研究一番,老司機(jī)基本上就可以直接略過了。
機(jī)身左右兩側(cè)比較簡潔,基本上沒有多余的裝飾,右側(cè)面板右下角的位置標(biāo)記有600G字樣,表示這臺凈水器的出水量是600加侖,這部分內(nèi)容在后面的體驗環(huán)節(jié)還會詳細(xì)講到。
機(jī)身頂部靠后方的位置有三個連接的接口,分別是濃縮水、純凈水和自來水,其中自來水的接口要比其他兩個接口粗一些,出廠的時候塞著三個皮塞堵住接口,細(xì)節(jié)之處十分用心。在三個接口前方還貼有中國質(zhì)檢協(xié)會的合格標(biāo)簽以及凈水器的序列號編碼。
從機(jī)身背部下方的位置延伸出來兩條線材,一條是電源線,采用國標(biāo)兩腳插頭;另一條是龍頭引線,為專用的接口,用來與龍頭供電和傳輸信號,安裝的時候與龍頭上的接口固定。
機(jī)身底部有四個橡膠腳墊作為支撐,避免機(jī)身與櫥柜摩擦,同時設(shè)備工作時也能起到一定的減震作用。靠后方的位置貼有不干膠銘牌,標(biāo)記有這臺凈水器詳細(xì)的技術(shù)參數(shù)和制造商信息等。
附贈的龍頭采用的是304不銹鋼材質(zhì),雖然銀色與我這個黑色的洗菜盆有些沖突,但整體的工藝細(xì)節(jié)并不差,精致程度要比洗菜盆原裝的龍頭好很多。大彎頭的結(jié)構(gòu)也空出了很大的空間,即便是用鍋或是熱水壺接水的話位置也足夠。開關(guān)部分采用旋轉(zhuǎn)式的結(jié)構(gòu),并搭配有延長的把手,操作起來也比較方便。
另外在龍頭與洗菜盆接觸固定的位置還設(shè)計了環(huán)形指示燈,不僅在出水的時候亮起作為裝飾作用,同時指示燈還能以不同的顏色和閃爍狀態(tài)來表示工作狀態(tài)。比如藍(lán)色常亮表示純水正常使用,橙色常亮表示濾芯壽命到期。
單就外觀和結(jié)構(gòu)設(shè)計方面來說,云米小白龍凈水器還是比較扎實的,無論是材料選用還是顏值方面都不遜色于傳統(tǒng)品牌的產(chǎn)品。這一點對于家電產(chǎn)品來說還是至關(guān)重要的,畢竟家用電器不像手機(jī)一樣頻繁的更新?lián)Q代,多數(shù)家庭都是一次購買,什么時候用壞了才會考慮換,這種品質(zhì)感很容易給人留下不錯的第一印象。
收到產(chǎn)品時候,第一步應(yīng)該檢查包裝內(nèi)容是否齊全,接著就可以掃描說明書上的二維碼預(yù)約師傅上門安裝了。
師傅上門前先與我確認(rèn)了地址和安裝時間,按照約定時間前來,考慮到疫情防控期間小區(qū)的出入問題,我也特意到小區(qū)門口迎接了師傅。由于北方的冬天非常寒冷,師傅沒有穿工裝也情有可原,到家以后和師傅簡單交涉了安裝的位置就火速開工了。
安裝過程與想象中一樣比較順利,首先將附贈的三通安裝到室內(nèi)的上水管上,我這里原來的洗菜盆還沒有安裝,也就省下了拆卸的步驟。通過三通將上水管分為兩端,比較粗的一端與洗菜盆的龍頭連接,較細(xì)的一端連接附件中的進(jìn)水管,另一端與凈水機(jī)對應(yīng)的接口連接起來。考慮到水壓的問題,一定要將螺帽擰緊。
接著將純水管與附贈的龍頭連接起來,并將龍頭上的線材端子與機(jī)身后方的線材端子連接,然后將龍頭安裝到洗菜盆上。純水管的另一端與機(jī)身上的純水接口連接,這個管子主要負(fù)責(zé)凈化后的水進(jìn)行輸送。
最后將濃縮水管與機(jī)身對應(yīng)的接口連接,另一端則直接通道廚房預(yù)留的排水管道中,我這里直接和洗菜池的排水管道固定并用黑色膠帶纏好。濃縮水管排出的水是廢水,不可再次利用。
安裝完成以后就可以通電開機(jī)了,首次使用需要打開三通閥和純水開關(guān)對濾芯和管路進(jìn)行沖洗,龍頭指示燈為藍(lán)色閃爍狀態(tài)。剛開始出水會有灰黑色或氣泡狀,稍微流一會兒就變清澈了,此時指示燈會停止閃爍。另外RO反滲透濾芯中的反滲透膜含有保濕成分,安裝上以后建議在前期多使用機(jī)器,出水不建議立即飲用。
云米小白龍凈水器采用的是無罐的結(jié)構(gòu),自來水經(jīng)過濾芯過濾后直接由純水管排出,不經(jīng)過機(jī)身的存儲也避免了二次污染的可能。600加侖的出水量每分鐘大約可以出水1.5L,換算下來如果裝滿一個400ml的水杯,大約需要17秒左右。
實際的測試結(jié)果也基本印證了上面的推測,實際出水的速度還是比較可觀的,日常生活中接水燒開了喝或者是做飯都不需要過多的等待。
在凈化能力方面,云米小白龍也有自己的三板斧。經(jīng)過五合一濾芯以及RO濾芯,自來水通過凈水器會經(jīng)過六道凈化工序,一級過濾用于濾除泥沙、鐵銹等雜質(zhì);二級過濾吸附余氯,去除異味和雜色;三級過濾減少水垢,延長RO濾芯使用壽命;四級過濾去除重金屬、微生物和細(xì)菌;五級過濾改善口感;六級過濾進(jìn)一步改善水質(zhì),保證出水更純凈。
單靠講述原理或許并不能說明其凈化能力,行業(yè)中一直都用TDS值來表示水質(zhì)的純凈程度,TDS值的含義是水中的可溶解固體總量,是指水中的鈣鎂離子、懸浮顆粒物、蛋白質(zhì)、微生物、膠體、細(xì)菌和病毒等水中溶解物質(zhì)的總含量。
使用量杯分別接一杯凈化前的自來水和凈化后的純凈水,用TDS水質(zhì)檢測筆測試兩杯水的TDS值,實測結(jié)果顯示凈化前的自來水TDS值為232ppm,凈化后的純凈水TDS值為24ppm,對比數(shù)據(jù)再結(jié)合TDS值參考圖不難發(fā)現(xiàn),凈化后的水質(zhì)已經(jīng)處于水質(zhì)高的范疇,側(cè)邊印證了云米小白龍的凈化能力。
當(dāng)然僅憑TDS值來判斷水質(zhì)好壞多少還是有些片面的,為此我也專門在網(wǎng)上購買了一套專業(yè)的水質(zhì)檢測試劑,模擬實驗室測試的方法更直觀、準(zhǔn)確的檢測水質(zhì)。
眾所周知,水中含有大量的鈣鎂離子,也就是俗稱的水垢,這類物質(zhì)進(jìn)入胃中會與鹽酸反應(yīng),釋放出鈣鎂離子和二氧化碳,長期飲用可能會出現(xiàn)結(jié)石的現(xiàn)象。
使用量杯分別接一杯凈化前的自來水和凈化后的純凈水,向水中分別加入適量的鈣鎂測試劑,對照色別卡上的圖示可以觀察到,凈化前的水明顯偏紫色,說明鈣鎂離子含量高;而凈化后的水則為藍(lán)色,說明已經(jīng)過濾掉了鈣鎂離子。
多數(shù)自來水都經(jīng)過加氯消毒,但氯元素除了與水中部分雜質(zhì)消耗掉一部分之外,還會存在一些殘留。余氯濃度過高會有很強的刺激性,對呼吸系統(tǒng)有傷害;另外也容易與水中的有機(jī)物反應(yīng),形成氯仿、三氯甲烷等致癌物質(zhì)。
照上述步驟分別取兩杯水樣,分別加入余氯試劑并攪拌均勻,與色別卡對比不難發(fā)現(xiàn),凈化前后的水都幾乎不含余氯,也說明了我們這里的水質(zhì)還是可以的。
PH值用來表示水的酸堿程度,0~7為酸性,7~14為堿性,7為中性,根據(jù)醫(yī)學(xué)描述,人類比較適宜飲用中性和弱堿性水,不可飲用酸性水。照例取兩杯水樣,分別加入PH試劑并攪拌均勻,對照色別卡可以觀察到,凈化前的水偏弱堿性,而凈化后的水則為中性。
云米小白龍凈水器的廢水比是2:1,可以理解為自來水一分為三,純水占兩份,廢水占一份,相比之前很多廢水比是1:1的產(chǎn)品要更節(jié)約水,避免浪費的同時也減少了一小筆水費開支。
另外值得一提的是,在凈水器工作的時候機(jī)身會產(chǎn)生一定的噪音,為此我也做了測試。實測環(huán)境噪音為34db,在打開櫥柜門通過純水龍頭接水時的噪音為73.7db,關(guān)上櫥柜門接水時的噪音為50.3db。而日常更多的是在關(guān)上櫥柜門的情況下使用,并且人也不會刻意蹲在凈水器邊上,因此噪音也不會很大。
選擇云米的產(chǎn)品有很大一部分原因是希望體驗它的全屋智能互聯(lián)功能,而作為凈水器其實更多的也是通過手機(jī)App遠(yuǎn)程控制與管理,與其他家電互聯(lián)互通的功能倒不多。云米是比較早一批擁抱米家生態(tài)系統(tǒng)的企業(yè),經(jīng)過幾年的發(fā)展,米家也逐漸成為國內(nèi)一線的智能家居品牌,我的這間新房子也是以米家系統(tǒng)為基礎(chǔ)搭建的。
打開米家App選擇添加設(shè)備,在設(shè)備列表中瀏覽找到云米小白龍600G凈水器,根據(jù)App中的向?qū)崾静僮魍瓿膳鋵ΑU麄€過程并不復(fù)雜,傻瓜式的操作非常容易上手,這里就不多過贅述了。
其他的操作就不太多了,在設(shè)置中可以將設(shè)備分享到家人的米家賬號上,如此一來多個賬號都可以統(tǒng)一查看和管理凈水器的狀態(tài)。除了米家App之外,云米自家的云米商城App也可以添加和管理凈水器,具體的操作界面和功能與米家App差別不大,這里就不多贅述了。
凈水器之所以被稱作“新家電”,也正是因為現(xiàn)代人們逐漸意識到健康問題之后才逐漸衍生出來的產(chǎn)物,越是新建的小區(qū)水質(zhì)越差勁,越是發(fā)達(dá)的城市水質(zhì)越差勁,這背后反映出來的已經(jīng)不僅僅是健康問題,而是一種社會現(xiàn)象,是人們在追求經(jīng)濟(jì)的同時忽略了對于自然生態(tài)的保護(hù)。
作為普通居民,我們除了響應(yīng)號召保護(hù)水源之外,在家里安裝凈水器成了最佳的解決辦法,因此云米的這臺凈水器可以稱得上是符合時代需求的產(chǎn)物。
純白色簡約時尚的外觀造型設(shè)計精致大方,小巧的體積也為小櫥柜用戶提供了極佳的安裝條件;橫置濾芯的設(shè)計方式拆卸更換方便,避免機(jī)身后方的線材和軟管松動;600加侖出水量出水速度快,1分鐘可以接滿1.5L純凈水;雙濾芯共六道凈化工序,有效去除自來水中的重金屬、顆粒物、雜質(zhì)等,去除異味、殺滅大腸桿菌,改善口感;2:1廢水比更加節(jié)水,避免浪費的同時節(jié)約開支;支持米家App及云米商城App遠(yuǎn)程管理等等。
作為一臺凈水器來說,云米小白龍MR662的表現(xiàn)顯然是合格的,不過作為全屋互聯(lián)網(wǎng)家電的一份子,我認(rèn)為在物聯(lián)網(wǎng)和云服務(wù)方面還有值得升級的空間。比如兩款手機(jī)App都只能對凈水器設(shè)備進(jìn)行簡單的信息查看,并不涉及到深度管理;另外智能家居之間的聯(lián)動似乎也沒有明確的體現(xiàn),比如冰箱和凈水器之間,也希望云米在這方面繼續(xù)深度探索。
悉前端的人都會聽過 css 的偽類與偽元素,然而大多數(shù)的人都會將這兩者混淆。本文從解析偽類與偽元素的含義出發(fā),區(qū)分這兩者的區(qū)別,并且列出大部分偽類與偽元素的具體用法,即使你有用過偽類與偽元素,但里面總有一兩個你沒見過的吧。
先說一說為什么 css 要引入偽元素和偽類,以下是 css2.1 Selectors 章節(jié)中對偽類與偽元素的描述:
CSS introduces the concepts of pseudo-elements and pseudo-classes to permit formatting based on information that lies outside the document tree.
直譯過來就是:css 引入偽類和偽元素概念是為了格式化文檔樹以外的信息。也就是說,偽類和偽元素是用來修飾不在文檔樹中的部分,比如,一句話中的第一個字母,或者是列表中的第一個元素。下面分別對偽類和偽元素進(jìn)行解釋:
偽類用于當(dāng)已有元素處于的某個狀態(tài)時,為其添加對應(yīng)的樣式,這個狀態(tài)是根據(jù)用戶行為而動態(tài)變化的。比如說,當(dāng)用戶懸停在指定的元素時,我們可以通過:hover 來描述這個元素的狀態(tài)。雖然它和普通的 css 類相似,可以為已有的元素添加樣式,但是它只有處于 dom 樹無法描述的狀態(tài)下才能為元素添加樣式,所以將其稱為偽類。
偽元素用于創(chuàng)建一些不在文檔樹中的元素,并為其添加樣式。比如說,我們可以通過:before 來在一個元素前增加一些文本,并為這些文本添加樣式。雖然用戶可以看到這些文本,但是這些文本實際上不在文檔樹中。
這里通過兩個例子來說明兩者的區(qū)別。
下面是一個簡單的 html 列表片段:
<ul> <li>我是第一個</li> <li>我是第二個</li> </ul>
如果想要給第一項添加樣式,可以在為第一個<li> 添加一個類,并在該類中定義對應(yīng)樣式:
HTML:
<ul> <li class="first-item">我是第一個</li> <li>我是第二個</li> </ul>
CSS:
li.first-item { color: orange }
如果不用添加類的方法,我們可以通過給設(shè)置第一個<li> 的:first-child 偽類來為其添加樣式。這個時候,被修飾的<li> 元素依然處于文檔樹中。
CSS:
li:first-child { color: orange }
下面是另一個簡單的 html 段落片段:
<p>Hello World, and wish you have a good day!</p>
如果想要給該段落的第一個字母添加樣式,可以在第一個字母中包裹一個<span> 元素,并設(shè)置該 span 元素的樣式
HTML:
<p><span class="first">H</span>ello World, and wish you have a good day!</p>
CSS:
.first { font-size: 5em; }
如果不創(chuàng)建一個<span> 元素,我們可以通過設(shè)置<p> 的:first-letter 偽元素來為其添加樣式。這個時候,看起來好像是創(chuàng)建了一個虛擬的<span> 元素并添加了樣式,但實際上文檔樹中并不存在這個<span> 元素。
CSS:
p:first-letter { font-size: 5em; }
從上述例子中可以看出,偽類的操作對象是文檔樹中已有的元素,而偽元素則創(chuàng)建了一個文檔數(shù)外的元素。因此,偽類與偽元素的區(qū)別在于:有沒有創(chuàng)建一個文檔樹之外的元素。
CSS3 規(guī)范中的要求使用雙冒號 (::) 表示偽元素,以此來區(qū)分偽元素和偽類,比如::before 和::after 等偽元素使用雙冒號 (::),:hover 和:active 等偽類使用單冒號 (:)。除了一些低于 IE8 版本的瀏覽器外,大部分瀏覽器都支持偽元素的雙冒號 (::) 表示方法。
然而,除了少部分偽元素,如::backdrop 必須使用雙冒號,大部分偽元素都支持單冒號和雙冒號的寫法,比如::after,寫成:after 也可以正確運行。
對于偽元素是使用單冒號還是雙冒號的問題,w3c 標(biāo)準(zhǔn)中的描述如下:
Please note that the new CSS3 way of writing pseudo-elements is to use a double colon, eg a::after { ... }, to set them apart from pseudo-classes. You may see this sometimes in CSS. CSS3 however also still allows for single colon pseudo-elements, for the sake of backwards compatibility, and we would advise that you stick with this syntax for the time being.
大概的意思就是:雖然 CSS3 標(biāo)準(zhǔn)要求偽元素使用雙冒號的寫法,但也依然支持單冒號的寫法。為了向后兼容,我們建議你在目前還是使用單冒號的寫法。
實際上,偽元素使用單冒號還是雙冒號很難說得清誰對誰錯,你可以按照個人的喜好來選擇某一種寫法。
這一章以含義解析和例子的方式列出大部分的偽類和偽元素的具體用法。下面是根據(jù)用途分類的偽類總結(jié)圖和根據(jù)冒號分類的偽元素總結(jié)圖:
某些偽類或偽元素仍然處于試驗階段,在使用前建議先在 Can I Use 等網(wǎng)站查一查其瀏覽器兼容性。接下來,我們會一一列舉每種用法的具體運用,大家可以更直觀的理解和記憶,處于試驗階段的偽類或偽元素會在標(biāo)題中標(biāo)注。
狀態(tài)
由于狀態(tài)偽類的用法大家都十分熟悉,這里就不用例子說明了。
1 :link
選擇未訪問的鏈接
2 :visited
選擇已訪問的鏈接
3 :hover
選擇鼠標(biāo)指針浮動在其上的元素
4 :active
選擇活動的鏈接
5 :focus
選擇獲取焦點的輸入字段
結(jié)構(gòu)化
1 :not
一個否定偽類,用于匹配不符合參數(shù)選擇器的元素。
如下例,除了第一個<li> 元素外,其他<li> 元素的文本都會變?yōu)槌壬?/p>
HTML:
<ul> <li class="first-item">一些文本</li> <li>一些文本</li> <li>一些文本</li> <li>一些文本</li> </ul>
CSS:
li:not(.first-item) { color: orange; }
2 :first-child
匹配元素的第一個子元素。
如下例,第一個<li> 元素的文本會變?yōu)槌壬?/p>
HTML:
<ul> <li>這里的文本是橙色的</li> <li>一些文本</li> <li>一些文本</li> </ul>
CSS:
li:first-child { color: orange; }
3 : last-child
匹配元素的最后一個子元素。
如下例,最后一個<li> 元素的文本會變?yōu)槌壬?/p>
HTML:
<ul> <li>一些文本</li> <li>一些文本</li> <li>這里的文本是橙色的</li> </ul>
CSS:
li:last-child { color: orange; }
4 first-of-type
匹配屬于其父元素的首個特定類型的子元素的每個元素。
如下例,第一個<li> 元素和第一個<span> 元素的文本會變?yōu)槌壬?/p>
HTML:
<ul> <li>這里的文本是橙色的</li> <li>一些文本 <span>這里的文本是橙色的</span></li> <li>一些文本</li> </ul>
CSS:
ul :first-of-type { color: orange; }
5 :last-of-type
匹配元素的最后一個子元素。
如下例,最后一個<li> 元素的文本會變?yōu)槌壬?/p>
HTML:
<ul> <li>一些文本<span>一些文本</span> <span>這里的文本是橙色的</span></li> <li>一些文本</li> <li>這里的文本是橙色的</li> </ul>
CSS:
ul :last-of-type { color: orange; }
6 :nth-child
:nth-child 根據(jù)元素的位置匹配一個或者多個元素,它接受一個 an+b 形式的參數(shù),an+b 匹配到的元素示例如下:
如下例,有以下 HTML 列表:
<ol> <li>Alpha</li> <li>Beta</li> <li>Gamma</li> <li>Delta</li> <li>Epsilon</li> <li>Zeta</li> <li>Eta</li> <li>Theta</li> <li>Iota</li> <li>Kappa</li> </ol>
CSS:
選擇第二個元素,”Beta” 會變成橙色:
ol :nth-child(2) { color: orange; }
選擇位置序號是 2 的倍數(shù)的元素,”Beta”, “Delta”, “Zeta”, “kappa” 會變成橙色:
ol :nth-child(2n) { color: orange; }
選擇位置序號為偶數(shù)的元素:
ol :nth-child(even) { color: orange; }
選擇從第 6 個開始,位置序號是 2 的倍數(shù)的元素,”Zeta”, “Theta”, “Kappa” 會變成橙色:
ol :nth-child(2n+6) { color: orange; }
7 :nth-last-child
:nth-last-child 與:nth-child 相似,不同之處在于它是從最后一個子元素開始計數(shù)的。
8 :nth-of-type
:nth-of-type 與 nth-child 相似,不同之處在于它是只匹配特定類型的元素。
如下例,第二個<p> 元素會變?yōu)槌壬?/p>
HTML:
<article> <h1>我是標(biāo)題</h1> <p>一些文本</p> <a href=""><img src="images/rwd.png" alt="Mastering RWD"></a> <p>這里的文本是橙色的</p> </article>
CSS:
p:nth-of-type(2) { color: orange; }
9 :nth-last-type
:nth-last-of-type 與 nth-of-type 相似,不同之處在于它是從最后一個子元素開始計數(shù)的。
10 :only-child
當(dāng)元素是其父元素中唯一一個子元素時,:only-child 匹配該元素。
HTML:
<ul> <li>這里的文本是橙色的</li> </ul> <ul> <li>一些文本</li> <li>一些文本</li> </ul>
CSS:
ul :only-child { color: orange; }
11 :only-of-type
當(dāng)元素是其父元素中唯一一個特定類型的子元素時,:only-child 匹配該元素。
如下例,第一個 ul 元素只有一個 li 類型的元素,該 li 元素的文本會變?yōu)槌壬?/p>
HTML:
<ul> <li>這里的文本是橙色的</li> <p>這里不是橙色</p> </ul> <ul> <li>一些文本</li> <li>一些文本</li> </ul>
CSS:
li:only-of-type { color: orange; }
12 :target
當(dāng) URL 帶有錨名稱,指向文檔內(nèi)某個具體的元素時,:target 匹配該元素。
如下例,url 中的 target 命中 id 值為 target 的 article 元素,article 元素的背景會變?yōu)辄S色。
URL:
http://example.com/#target
HTML:
<article id="target"> <h1><code>:target</code> pseudo-class</h1> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit!</p> </article>
CSS:
:target { background: yellow; }
表單相關(guān)
1 :checked
:checked 匹配被選中的 input 元素,這個 input 元素包括 radio 和 checkbox。
如下例,當(dāng)復(fù)選框被選中時,與其相鄰的<label> 元素的背景會變成黃色。
HTML:
<input type="checkbox"/> <label>我同意</label>
CSS:
input:checked + label { background: yellow; }
2 :default
:default 匹配默認(rèn)選中的元素,例如:提交按鈕總是表單的默認(rèn)按鈕。
如下例,只有提交按鈕的背景變成了黃色。
HTML:
<form action="#"> <button>重置</button> <button type="submit">提交</button> </form>
CSS:
:default { background: yellow; }
3 :disabled
:disabled 匹配禁用的表單元素。
如下例,被禁用 input 輸入框的透明度會變成 50%。
HTML:
<input type="text" disabled/>
CSS:
:disabled { opacity: .5; }
4 :empty
:empty 匹配沒有子元素的元素。如果元素中含有文本節(jié)點、HTML 元素或者一個空格,則:empty 不能匹配這個元素。
如下例,:empty 能匹配的元素會變?yōu)辄S色。
第一個元素中有文本節(jié)點,所以其背景不會變成黃色;
第二個元素中有一個空格,有空格則該元素不為空,所以其背景不會變成黃色;
第三個元素中沒有任何內(nèi)容,所以其背景會變成黃色;
第四個元素中只有一個注釋,此時該元素是空的,所以其背景會變成黃色;
HTML:
<div>這個容器里的背景是橙色的</div> <div> </div> <div></div> <div><!-- This comment is not considered content --></div>
CSS:
div { background: orange; height: 30px; width: 200px; } div:empty { background: yellow; }
5 :enabled
:enabled 匹配沒有設(shè)置 disabled 屬性的表單元素。
6 :in-range
:in-range 匹配在指定區(qū)域內(nèi)元素。
如下例,當(dāng)數(shù)字選擇器的數(shù)字在 5 到 10 是,數(shù)字選擇器的邊框會設(shè)為綠色。
HTML:
<input type="number" min="5" max="10">
CSS:
input[type=number] { border: 5px solid orange; } input[type=number]:in-range { border: 5px solid green; }
7 :out-of-range
:out-of-range 與:in-range 相反,它匹配不在指定區(qū)域內(nèi)的元素。
8 :indeterminate
indeterminate 的英文意思是“ 不確定的”。當(dāng)某組中的單選框或復(fù)選框還沒有選取狀態(tài)時,:indeterminate 匹配該組中所有的單選框或復(fù)選框。
如下例,當(dāng)下面的一組單選框沒有一個處于被選中時,與 input 相鄰的 label 元素的背景會被設(shè)為橙色。
HTML:
<ul> <li> <input type="radio" name="list" id="option1"> <label for="option1">Option 1</label> </li> <li> <input type="radio" name="list" id="option2"> <label for="option2">Option 2</label> </li> <li> <input type="radio" name="list" id="option3"> <label for="option3">Option 3</label> </li> </ul>
CSS:
:indeterminate + label { background: orange; }
9 :valid
:valid 匹配條件驗證正確的表單元素。
如下例,當(dāng) email 輸入框內(nèi)的值符合 email 格式時,輸入框的邊框會被設(shè)為綠色。
HTML:
<input type="email"/>
CSS:
input[type=email]:valid { border: 1px solid green; }
10 :invalid
:invalid 與:valid 相反,匹配條件驗證錯誤的表單元素。
11 :optional
:optional 匹配是具有 optional 屬性的表單元素。當(dāng)表單元素沒有設(shè)置為 required 時,即為 optional 屬性。
如下例,第一個 input 的背景不會被設(shè)為黃色,第二個 input 的背景會被設(shè)為黃色。
HTML:
<input type="text" required /> <input type="text" />
CSS:
:optional { background: yellow; }
12 :required
:required 與:optional 相反匹配設(shè)置了 required 屬性的表單元素。
13 :read-only
:read-only 匹配設(shè)置了只讀屬性的元素,表單元素可以通過設(shè)置“readonly” 屬性來定義元素只讀。
如下例,input 元素的背景會被設(shè)為黃色。
HTML:
<input type="text" value="I am read only" readonly>
CSS:
input:read-only { background-color: yellow; }
14 :read-write
:read-write 匹配處于編輯狀態(tài)的元素。input,textarea 和設(shè)置了 contenteditable 的 HTML 元素獲取焦點時即處于編輯狀態(tài)。
如下例,input 輸入框和富文本框獲取焦點時,背景變成黃色。
HTML:
<input type="text" value="獲取焦點時背景變黃"/> <div class="editable" contenteditable> <h1>點擊這里可以編輯</h1> <p>獲取焦點時背景變黃</p> </div>
CSS:
:read-write:focus { background: yellow; }
15 :scope(處于試驗階段)
:scope 匹配處于 style 作用域下的元素。當(dāng) style 沒有設(shè)置 scope 屬性時,style 內(nèi)的樣式會對整個 html 起作用。
如下例,第二個 section 中的元素的文本會變?yōu)樾斌w。
HTML:
<article> <section> <h1>很正常的一些文本</h1> <p>很正常的一些文本</p> </section> <section> <style scoped> :scope { font-style: italic; } </style> <h1>這里的文本是斜體的</h1> <p>這里的文本是斜體的</p> </section> </article>
注:目前支持這個偽類的瀏覽器只有火狐。
語言相關(guān)
1 :dir(處于實驗階段)
:dir 匹配指定閱讀方向的元素,當(dāng) HTML 元素中設(shè)置了 dir 屬性時該偽類才能生效。現(xiàn)時支持的閱讀方向有兩種:ltr(從左往右)和 rtl(從右往左)。目前,只有火狐瀏覽器支持:dir 偽類,并在火狐瀏覽器中使用時需要添加前綴 ( -moz-dir() )。
如下例,p 元素中的阿拉伯語(阿拉伯語是從右往左閱讀的)文本會變成橙色。
HTML:
<article dir="rtl"> <p>??????? ???? ?? ???? ?????? ?????? ???? ????? ??????? ????? ??? ???????? ?????? ?????? ??? ????? ?????.</p> </article>
CSS:
article :-moz-dir(rtl) { color: orange; } /* unprefixed */ article :dir(rtl) { color: orange; }
如下例,p 元素中的英語文本會變成藍(lán)色
HTML:
<article dir="ltr"> <p>?If you already know some HTML and CSS and understand the principles of responsive web design, then this book is for you.</p> </article>
CSS:
article :-moz-dir(ltr) { color: blue; } /* unprefixed */ article :dir(ltr) { color: blue; }
2 :lang
:lang 匹配設(shè)置了特定語言的元素,設(shè)置特定語言可以通過為了 HTML 元素設(shè)置 lang=”” 屬性,設(shè)置 meta 元素的 charset=”” 屬性,或者是在 http 頭部上設(shè)置語言屬性。
實際上,lang=”” 屬性不只可以在 html 標(biāo)簽上設(shè)置,也可以在其他的元素上設(shè)置。
如下例,分別給不同的語言設(shè)置不同的引用樣式:
HTML:
<article lang="en"> <q>Lorem ipsum dolor sit amet.</q> </article> <article lang="fr"> <q>Lorem ipsum dolor sit amet.</q> </article> <article lang="de"> <q>Lorem ipsum dolor sit amet.</q> </article>
CSS:
:lang(en) q { quotes: '“' '”'; } :lang(fr) q { quotes: '?' '?'; } :lang(de) q { quotes: '?' '?'; }
其他
1 :root
:root 匹配文檔的根元素。一般的 html 文件的根元素是 html 元素,而 SVG 或 XML 文件的根元素則可能是其他元素。
如下例,將 html 元素的背景設(shè)置為橙色
:root { background: orange; }
2.:fullscreen
:fullscreen 匹配處于全屏模式下的元素。全屏模式不是通過按 F11 來打開的全屏模式,而是通過 Javascript 的 Fullscreen API 來打開的,不同的瀏覽器有不同的 Fullscreen API。目前,:fullscreen 需要添加前綴才能使用。
如下例,當(dāng)處于全屏模式時,h1 元素的背景會變成橙色
HTML:
<h1 id="element">在全屏模式下,這里的文本的背景會變成橙色.</h1> <button>進(jìn)入全屏模式!</button>
JAVASCRIPT:
var docelem=document.getElementById('element'); var button=document.querySelector('button'); button.onclick=function() { if (docelem.requestFullscreen) { docelem.requestFullscreen(); }else if (docelem.webkitRequestFullscreen) { docelem.webkitRequestFullscreen(); } else if(docelem.mozRequestFullScreen) { docelem.mozRequestFullScreen(); } else if(docelem.msRequestFullscreen) { docelem.msRequestFullscreen(); } }
CSS:
h1:fullscreen { background: orange; } h1:-webkit-full-screen { background: orange; } h1:-moz-full-screen { background: orange; } h1:-ms-fullscreen { background: orange; }
偽元素
1 ::before/:before
:before 在被選元素前插入內(nèi)容。需要使用 content 屬性來指定要插入的內(nèi)容。被插入的內(nèi)容實際上不在文檔樹中。
HTML:
<h1>World</h1>
CSS:
h1:before { content: "Hello "; }
2 ::after/:after
:after 在被元素后插入內(nèi)容,其用法和特性與:before 相似。
3 ::first-letter/:first-letter
:first-letter 匹配元素中文本的首字母。被修飾的首字母不在文檔樹中。
CSS:
h1:first-letter { font-size: 5em; }
4 ::first-line/:first-line
:first-line 匹配元素中第一行的文本。這個偽元素只能用在塊元素中,不能用在內(nèi)聯(lián)元素中。
CSS:
p:first-line { background: orange; }
5 ::selection
::selection 匹配用戶被用戶選中或者處于高亮狀態(tài)的部分。在火狐瀏覽器使用時需要添加-moz 前綴。該偽元素只支持雙冒號的形式。
CSS:
::-moz-selection { color: orange; background: #333; } ::selection { color: orange; background: #333; }
6 ::placeholder
::placeholder 匹配占位符的文本,只有元素設(shè)置了 placeholder 屬性時,該偽元素才能生效。
該偽元素不是 CSS 的標(biāo)準(zhǔn),它的實現(xiàn)可能在將來會有所改變,所以要決定使用時必須謹(jǐn)慎。
在一些瀏覽器中(IE10 和 Firefox18 及其以下版本)會使用單冒號的形式。
HTML:
<input type="email" placeholder="name@domain.com">
CSS:
input::-moz-placeholder { color:#666; } input::-webkit-input-placeholder { color:#666; } /* IE 10 only */ input:-ms-input-placeholder { color:#666; } /* Firefox 18 and below */ input:-moz-input-placeholder { color:#666; }
7 ::backdrop(處于試驗階段)
::backdrop 用于改變?nèi)聊J较碌谋尘邦伾聊J降哪J(rèn)顏色為黑色。該偽元素只支持雙冒號的形式
HTML:
<h1 id="element">This heading will have a solid background color in full-screen mode.</h1> <button onclick="var el=document.getElementById('element'); el.webkitRequestFullscreen();">Trigger full screen!</button>
CSS:
h1:fullscreen::backdrop { background: orange; }
轉(zhuǎn)載自:http://www.alloyteam.com/2016/05/summary-of-pseudo-classes-and-pseudo-elements/
相信您已經(jīng)熟悉顏色的 RGB 和 HEX 表示,因為這是大多數(shù)文章/教程在編寫 CSS 顏色時使用的,但這些并不是在 CSS 中編寫顏色的最佳方法。HEX 和 RGB 很難理解,使顏色變淺/變深或?qū)㈩伾珡募t色轉(zhuǎn)換為橙色并不容易。這就是 HSL 的用武之地。HSL 是一種更容易閱讀的格式,它使更改顏色的亮度或色調(diào)等操作變得簡單。
HSL 代表色相、飽和度和亮度。這類似于 RGB 如何通過將其紅色、綠色和藍(lán)色值組合在一起來表示顏色,但使用 HSL,這些值更直觀。
顏色的色調(diào)由圍繞一個圓圈的度數(shù)表示。試想一個色輪,0 度代表紅色,180 度代表青色,360 度代表同樣的紅色。
飽和度由 0 到 100 之間的百分比表示,并確定顏色的灰色程度。如果顏色是 100% 飽和度,則根本沒有灰色,而飽和度為 0% 的顏色將是沒有顏色的灰色陰影。
亮度也用百分比表示,并確定顏色的白色或黑色。如果顏色是 50% 的亮度,那么這意味著沒有額外的白色或黑色添加到顏色中。隨著百分比增加到 50% 以上,它會在顏色中添加更多的白色,直到在 100% 亮度下達(dá)到完全白色。隨著百分比降低到 50% 以下,它會為顏色添加更多黑色,直到在 0% 亮度下達(dá)到完全黑色
現(xiàn)在我們了解了 HSL 是什么,我們可以談?wù)勅绾问褂盟K墓ぷ髟砼c RGB 一樣,您可以在 CSS 中調(diào)用該hsl函數(shù)來定義 HSL 顏色。
.class {
/* Pure red #FF0000 */
background-color: hsl(0, 100%, 50%);
}
傳遞給 hsl 的第一個值是色調(diào),它是 0 到 360 之間的度數(shù),第二個值是飽和度,它是 0% 到 100% 之間的百分比值,最后傳遞的最終值是亮度,它是一個百分比值在 0% 和 100% 之間。您還可以使用hsla來表示部分透明的顏色。這個函數(shù)接受第四個參數(shù),它是一個介于 0 和 1 之間的值,其中 1 是完全不透明的,而 0 是完全透明的。
像這樣寫顏色可能看起來有點奇怪,因為你很可能習(xí)慣于 HEX 或 RGB,但是一旦你習(xí)慣了它,它會讓寫 CSS 變得更加愉快。以下是幾個原因:
正如我在本文開頭提到的,您經(jīng)常需要在 CSS 中更改顏色的亮度或飽和度,以執(zhí)行諸如為按鈕引入懸停狀態(tài)之類的操作。使用 HEX 可能會很痛苦,因為沒有人知道暗 10% 的版本#FA652F是什么,但是暗 10% 的版本hsl(16, 95%, 58%)很容易計算。您只需將亮度值降低 10% 即可hsl(16, 95%, 48%)。
您甚至可以更進(jìn)一步,使用calcCSS 中的自定義屬性為您自動執(zhí)行此操作。
.btn {
--background-hue: 200;
background-color: hsl(
var(--background-hue),
100%,
calc(50% + var(--lightness-offset))
);
}
.btn:hover {
--lightness-offset: -10%;
}
.btn:focus {
--lightness-offset: -20%;
}
.btn-danger {
--background-hue: 0;
}
使用這少量代碼,我們設(shè)置了一個基本的 btn 類,它總是使背景在懸停時變暗 10%,在焦點上變暗 20%。我們也這樣做了,以便我們可以更改其他類型按鈕的按鈕色調(diào),我們甚至不需要修改這些新按鈕類型的懸停和焦點狀態(tài),因為它們都是使用自定義屬性和calc.
如果您熟悉任何顏色理論,那么您就會知道理解互補色、原色/次色、相似色等很重要。使用 RGB 或 HEX 很難找出這些不同類型的顏色,但使用 HSL 很容易找到諸如互補色之類的東西。這是因為互補色只是色輪另一側(cè)的顏色,在 HSL 的情況下,這意味著它們的色調(diào)彼此相差 180 度。
這很重要,因為您可以使用這些知識在 CSS 中創(chuàng)建一個顏色主題,該主題使用數(shù)學(xué)來計算這些互補色,并允許您一次輕松地更改整個站點的顏色主題。下面是我建立的一個可以做到這一點的網(wǎng)站的例子。
最后,HSL 的最后一個重大勝利是它可以輕松更改顏色的色調(diào)。如果你想讓你的紅色更橙色一點,你可以通過讓你的色調(diào)更大一點來做到這一點,因為橙色在色輪上的紅色之后。這真的很有用,因為在設(shè)計和開發(fā)的早期階段,像這樣的小顏色變化非常普遍,并且能夠輕松地制作它們可以節(jié)省大量時間。
HSL 是一種在 CSS 中表示顏色的不同方式,它不僅更易于閱讀,而且更易于在 CSS 中修改和使用。在我看來,它是 CSS 中最好的顏色格式。
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。