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