關(guān)于CSS中@support實(shí)現(xiàn)漸進(jìn)式網(wǎng)頁(yè)設(shè)計(jì)實(shí)例代碼
文章主要給大家介紹了關(guān)于CSS中@support實(shí)現(xiàn)漸進(jìn)式網(wǎng)頁(yè)設(shè)計(jì)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用CSS具有一定的參考學(xué)習(xí)價(jià)值前言特性查詢賦予了我們...
文章主要給大家介紹了關(guān)于CSS中@support實(shí)現(xiàn)漸進(jìn)式網(wǎng)頁(yè)設(shè)計(jì)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用CSS具有一定的參考學(xué)習(xí)價(jià)值
前言
特性查詢賦予了我們使用CSS檢測(cè)瀏覽器是否支持某個(gè)css特性的能力。我們可以使用該功能在瀏覽器支持最新的CSS特性時(shí),使用新的語(yǔ)法來(lái)編寫(xiě)我們的樣式,同時(shí)對(duì)于不支持的瀏覽器進(jìn)行優(yōu)雅降級(jí)。
CSS的設(shè)計(jì)本身就是支持優(yōu)雅降級(jí)的。對(duì)于瀏覽器不支持的CSS語(yǔ)法,在瀏覽器解析時(shí)會(huì)被忽略。因此,我們只要在編寫(xiě)樣式時(shí)先滿足低版本瀏覽器的視覺(jué)完整性,再針對(duì)支持高級(jí)特性的瀏覽器進(jìn)行漸進(jìn)式樣式設(shè)計(jì)即可。但有時(shí)候這并不能滿足我們的需求:當(dāng)我們需要一系列的樣式組合來(lái)實(shí)現(xiàn)我們的視覺(jué)效果時(shí),如果瀏覽器對(duì)我們使用的一系列樣式中的某一個(gè)CSS特性不支持,有可能出現(xiàn)樣式錯(cuò)亂的情況。
基本使用
@support的基本語(yǔ)法與@media十分相似
.selector {
/* property supported in old browsers */
}
@support (property: value) {
/* property supported in new browsers */
}
特性查詢語(yǔ)句由@support關(guān)鍵字開(kāi)頭,加上一個(gè)條件語(yǔ)句和包含在一個(gè)大括號(hào)內(nèi)的CSS規(guī)則組成。我們可以現(xiàn)在特性查詢語(yǔ)句外寫(xiě)舊瀏覽器支持的樣式,然后再在特性查詢語(yǔ)句中寫(xiě)瀏覽器支持某些新特性時(shí)的新樣式。
div {
display: flex;
}
@support (display: grid) {
div {
display: grid;
}
}
在該示例中,我們先用flex布局實(shí)現(xiàn)舊瀏覽器支持的布局樣式,然后更進(jìn)一步我們可以在支持display: grid;屬性的新瀏覽器中使用grid布局快樂(lè)的玩耍了。
條件語(yǔ)句中的組合條件檢測(cè)
在特性查詢語(yǔ)句的支持條件中我們有時(shí)候可能需要同時(shí)查詢?yōu)g覽器對(duì)多個(gè)CSS屬性的支持情況來(lái)覺(jué)得如何組織我們的漸進(jìn)式樣式。這種時(shí)候我們可以用and、or、not這三種布爾操作來(lái)組合我們的查詢條件。
布爾操作符
and操作符可以對(duì)兩個(gè)表達(dá)式的結(jié)果進(jìn)行邏輯與操作,即只有當(dāng)兩個(gè)表達(dá)式都為真的時(shí)候,則生成的表達(dá)式也為真,否則為假。多個(gè)邏輯與表達(dá)式可以直接并列成一排,表示所有表達(dá)式都為真的時(shí)候,整體的求值才為真。
@support (display: table-cell) and (display: list-item) and (display:run-in) {
/* some style here */
}
or操作符可以對(duì)兩個(gè)表達(dá)式的結(jié)果進(jìn)行邏輯或操作,即只要兩個(gè)表達(dá)式有一個(gè)為真的時(shí)候,則生成的表達(dá)式也為真,否則為假。多個(gè)邏輯或表達(dá)式也可以直接并列成一排,表示所有表達(dá)式只有有一項(xiàng)為真的時(shí)候,整體的求值就為真。
@support (-webkit-mask-image: -webkit-linear-gradient(right,transparent,#000)) or (mask-image: linear-gradient(-90deg,transparent,#000)) {
/* some style here */
}
not操作符一般放在表達(dá)式的前面表示對(duì)原表達(dá)式的否定,即求值為真的表達(dá)式加上not操作符后表示假,求值為假的表達(dá)式加上not后表示真。
@support not (display: flex) {
div {
float: left;
}
}
組合條件檢測(cè)
布爾操作符也可以組合起來(lái)使用,但必須用括號(hào)來(lái)顯示的隔離不用的布爾操作符,以避免優(yōu)先級(jí)造成的混亂
@support (display: flexbox) and ( not (display: inline-grid) ) {
/* some style here */
}
CSS.supports
在JavaScript中有一個(gè)與特性查詢語(yǔ)句相對(duì)應(yīng)的API,window.CSS.supports。這個(gè)方法接受一個(gè)與CSS特性查詢語(yǔ)句的查詢條件類似的字符串作為參數(shù),或者接受兩個(gè)參數(shù),一個(gè)代表屬性名,一個(gè)代表屬性值。
CSS.support('(display: flex) and(not(display: line-grid)');
CSS.support('display', 'grid');
這個(gè)API可以和CSS的特性查詢配合使用,當(dāng)我們的瀏覽器支持某些更高級(jí)特性的時(shí)候,設(shè)計(jì)一些漸進(jìn)式功能。
兼容性
每個(gè)CSS特性使用最后都離不開(kāi)談兼容性。特性查詢是在2011年就已經(jīng)發(fā)布的草案,多年來(lái)支持程度已經(jīng)比較可觀了,除了IE系列全軍覆沒(méi)之外,其他主流瀏覽器都能夠很好的支持。
參考
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值
- CSS transition animation的使用(內(nèi)含貝賽爾曲線詳解)
- CSS自適應(yīng)布局實(shí)現(xiàn)子元素項(xiàng)目整體居中/內(nèi)部項(xiàng)目左對(duì)齊
- 使用CSS混合模式和SVG來(lái)動(dòng)態(tài)更改產(chǎn)品圖片的顏色
- css新手教程之背景圖充滿整個(gè)屏幕的示例代碼介紹
- 網(wǎng)頁(yè)設(shè)計(jì)如何優(yōu)雅的實(shí)現(xiàn)垂直居中
- 網(wǎng)頁(yè)設(shè)計(jì):淺談網(wǎng)頁(yè)基本性能優(yōu)化規(guī)則小結(jié)
- 用戶需求導(dǎo)致?tīng)I(yíng)銷型網(wǎng)頁(yè)設(shè)計(jì)
- 網(wǎng)頁(yè)設(shè)計(jì)柵格就是你對(duì)頁(yè)面版式的規(guī)劃
- 網(wǎng)頁(yè)設(shè)計(jì)內(nèi)容網(wǎng)頁(yè)中關(guān)于圖片預(yù)覽的設(shè)計(jì)
- 網(wǎng)頁(yè)設(shè)計(jì):腳本素材重構(gòu)用戶體驗(yàn)
CSS transition animation的使用(內(nèi)含貝賽爾曲線詳解)
文章主要介紹了css transition animation的使用(內(nèi)含貝賽爾曲線詳解),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,區(qū)別:transition也叫過(guò)渡動(dòng)畫(huà)...
CSS自適應(yīng)布局實(shí)現(xiàn)子元素項(xiàng)目整體居中/內(nèi)部項(xiàng)目左對(duì)齊示例代碼
文章主要介紹了CSS自適應(yīng)布局實(shí)現(xiàn)子元素項(xiàng)目整體居中,內(nèi)部項(xiàng)目左對(duì)齊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,日常工作時(shí),我們可能遇到這...
使用CSS混合模式和SVG來(lái)動(dòng)態(tài)更改產(chǎn)品圖片的顏色
文章主要介紹了使用CSS混合模式和SVG來(lái)動(dòng)態(tài)更改產(chǎn)品圖片的顏色,需要的朋友可以參考下。前兩天在Codepen看到了@Kyle Wetton寫(xiě)的一個(gè)示例, 使用CSS混合模式和SVG來(lái)改變沙發(fā)的...
css新手教程之背景圖充滿整個(gè)屏幕的示例代碼介紹
文章主要給大家介紹了關(guān)于css新手教程之背景圖充滿整個(gè)屏幕的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用css具有一定的參考學(xué)習(xí)價(jià)值。想讓整個(gè)界面有一個(gè)背...
網(wǎng)頁(yè)設(shè)計(jì)如何優(yōu)雅的實(shí)現(xiàn)垂直居中
這篇文章主要給大家介紹了關(guān)于如何優(yōu)雅的實(shí)現(xiàn)垂直居中的相關(guān)資料,文中分別給大家介紹了已知寬高的元素、未知寬高的元素以及基于 Flexbox 的解決方案,都分別給出了示例代碼供大家參考學(xué)習(xí),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧...
網(wǎng)頁(yè)設(shè)計(jì):淺談網(wǎng)頁(yè)基本性能優(yōu)化規(guī)則小結(jié)
這篇文章主要介紹了淺談網(wǎng)頁(yè)基本性能優(yōu)化規(guī)則小結(jié)的相關(guān)資料,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧...
用戶需求導(dǎo)致?tīng)I(yíng)銷型網(wǎng)頁(yè)設(shè)計(jì)
我們的每期話題,團(tuán)隊(duì)在內(nèi)部都會(huì)通過(guò)郵件進(jìn)行一番討論,隨著討論的激烈,往往能碰撞出很多有意義的觀點(diǎn),因此,將討論內(nèi)容分享出來(lái),有興趣的朋友可以接著話題討論下去。Junchen:期望不是從石頭里面蹦出來(lái)的,所有期望都是受到外界影響、結(jié)合自身需求的一個(gè)外在表現(xiàn)...
網(wǎng)頁(yè)設(shè)計(jì)柵格就是你對(duì)頁(yè)面版式的規(guī)劃
英文原文:http://desktoppub.about.com/od/grids/l/aa_gridsorder.htm柵格就是你對(duì)頁(yè)面版式的規(guī)劃你日常所見(jiàn)的許多頁(yè)面都有柵格存在。你可能注意不到,但它確實(shí)存在,并且支撐著設(shè)計(jì)內(nèi)容,建立整體的架構(gòu),引導(dǎo)著頁(yè)面的元素。柵格是隱形的架構(gòu),用于指導(dǎo)你頁(yè)面...
網(wǎng)頁(yè)設(shè)計(jì)內(nèi)容網(wǎng)頁(yè)中關(guān)于圖片預(yù)覽的設(shè)計(jì)
之前有寫(xiě)過(guò)《內(nèi)容頁(yè)頁(yè)碼的預(yù)覽導(dǎo)航》跟《照片預(yù)覽導(dǎo)航分析》兩個(gè)文章,想說(shuō)明的是預(yù)覽這一功能在用戶心理所占有的比重是很大的,如果僅僅只是給出一排順序數(shù)字做為鏈接的標(biāo)題,用戶的心理會(huì)產(chǎn)生不安全感。雖然給出一排順序數(shù)字做為鏈接幾乎是整個(gè)互聯(lián)網(wǎng)的默認(rèn)分頁(yè)鏈接模...
網(wǎng)頁(yè)設(shè)計(jì):腳本素材重構(gòu)用戶體驗(yàn)
設(shè)計(jì)網(wǎng)站的同志背景主要有兩種:學(xué)計(jì)算機(jī)、學(xué)藝術(shù)?;旧蠒?huì)寫(xiě)代碼的不懂設(shè)計(jì),會(huì)設(shè)計(jì)的不懂代碼,這個(gè)格局似乎到今天還沒(méi)變。某些學(xué)計(jì)算機(jī)的同學(xué),有自己的審美品位,也能夠做出看起來(lái)不錯(cuò)的網(wǎng)站,但學(xué)藝術(shù)的同學(xué)普遍難搞懂代碼...