作者:ChokCoco
https://www.cnblogs.com/coco1s/p/11463599.html
前端開發(fā)中,移動端不同設備的屏幕適配一直是個繞不開的技術話題。目前比較流行的方案是類似淘寶的flexible。其原理是使用js動態(tài)計算html的font-size,利用rem來實現(xiàn)不同寬度的適配。使用js方案雖然比較成熟,但也有它的一些缺點,比如性能損耗,由于js的阻塞加載和動態(tài)計算,頁面不免會出現(xiàn)卡頓和閃屏的現(xiàn)象,影響用戶體驗。今天我們不使用js,完全使用css來實現(xiàn)適配,來看看是怎么實現(xiàn)的吧!
移動端屏幕適配
在html的head中插入下面的meta標簽:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="viewport" content="width=375, user-scalable=no">
沒錯,是兩個viewport標簽。width=device-width寫在上面,width=375寫在下面,375就是以哪個設備寬度為基準,現(xiàn)在大部分設計稿都是以iphone6的375寬度為基準做2倍圖。加了上面兩個mata標簽,后面的css就可以完全使用px為單位直接使用,整個頁面會自動按設備寬度進行等比例縮放。看下面的演示效果:
<script src="https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>
在css中定義html的font-size為:calc(100vw/3.75),calc、vw能兼容ios8+和android4.4+,可放心使用,如下:
html {
font-size: calc(100vw/3.75);
-webkit-text-size-adjust: 100%;
}
然后在css中,就可以將所有的px單位除以100,得到rem單位了。比如:
.row>div {
float: left;
width: .82rem;
height: .82rem;
text-align: center;
line-height: .82rem;
margin-left: .05rem;
background-color: #f0f0f0;
}
上面的rem單位轉換,建議大家可以使用px2rem這個插件完成,webpack、vscode都能支持。設置時將rootFontSize 設為100即可。
設置px2rem參數(shù)
在vscode中,可以使用ctrl+shift+p,選擇px2rem就可以將當前頁面的px全部轉換為rem。
px2rem在vscode中的使用方法
當然,rem和px可以相互共存,比如我標題欄就想要44px高,這樣就不會縮放了。看下面的演示效果:
純css實現(xiàn)移動端適配
方案一,直接使用html的mata實現(xiàn)整個頁面的縮放,比較適合那些宣傳單頁或全屏游戲交互類,無法實現(xiàn)px與rem共存的情況。
方案二,利用了rem來縮放,可實現(xiàn)與px共存,在借助px2rem的情況下,能高效方便的實現(xiàn)適配。
綜合考慮,小編建議使用方案二。你,學會了嗎?
天的這篇是以一個app改版案例,深入淺出的告訴大家如何適配深色模式,同時給出了正確和錯誤的示范,相信對于目前流行的深色設計趨勢來說,是非常的實用了!
Google在2019年度I/O開發(fā)者大會上宣布,安卓將會從系統(tǒng)底層支持深色模式。同時,我們也會看到更多支持深色UI的應用正在推出。
深色UI很快將成為一種常見的模式,其他應用也很快會遵循這一模式。
在這篇文章中,我將會以我們的應用Shutter Points為例,解釋如何從淺色UI適配深色UI。
Shutter Points UI的主要顏色是單色為主,目的是為了突出圖片內容。主色調用于主導航欄,標簽中使用5種輔色將圖片注釋與對應的類別聯(lián)系起來。
Shutter Points 中的主色和輔色以及在界面中的應用截圖
當應用深色模式時,亮色和低飽和度的顏色相比于飽和度高的顏色會更受歡迎。使用亮色的時候要確保元素易于閱讀,并配合一個對比度適中的暗色背景。
使用谷歌提供的顏色編輯器可以為每個品牌顏色創(chuàng)建一個自定義色板,然后從中選擇合適的顏色。
根據(jù)谷歌設計規(guī)范建議,在使用深色模式時,一個好的經驗法則是將調色板的色值范圍保持在200左右。
任何一個深色界面都需要有一個合適的對比度,按WCAG 的AA級標準來說,界面中的文字與背景的對比度至少要達到4.5:1。
品牌顏色中的一個淺色被選為深色模式配色
有了新的配色方案在手,是時候改變界面的顏色了。深色主題中的所有界面都是以默認的深灰色#121212作為基準的。
在UI組件上添加不同透明度的白色,根據(jù)不同的層級搭配不同的透明度。
疊加的層次范圍從0%到16%
(譯者注:深色模式中的高度[ elevation ],準確的含義其實是Android開發(fā)中的一個樣式代碼,用來設置界面的權重的,比如android:elevation=”1dp”,層級就在android:elevation=”0dp”之上了。)
為了表示不同的層級高度,我們需要在組件的樣式中調整2個值:
無論使用哪種主題,應用正確的高度將確保元素保持在一個一致的視覺層次。想知道應用中透明度該用多少?這里有一個表:
(譯者注:我把規(guī)范中的表格幫大家截圖出來,貼在這里,想看更多規(guī)范詳細內容請見:https://material.io/design/color/dark-theme.html#properties)
組件中通過使用不同透明度的白色覆蓋來保持它們在深色主題中的高度一致。
在某些情況下,僅僅將顏色由亮變暗并不會得到一個好的結果。
例如在我們app中的引導頁中,淺色模式下使用次要顏色能突出內容,但在深色模式下,整個背景都是高飽和度的顏色,卻會讓界面顯得非常地刺眼。
對于這些情況,最好是選擇一個深色背景,然后保留次級顏色用于標題等小面積元素。
大面積的高飽和度顏色不適合用于深色模式
谷歌設計規(guī)范主要強調了3種文本顏色。
這里主要是通過修改白色或黑色的不透明度作為顏色值:
不同重要級和不同大小的文本在整個UI中傳遞出了層次結構,這個原理也適用于深色主題。
所有的文本內容應該易于閱讀并符合標準規(guī)范。網(wǎng)頁標準WCAG 2.0中規(guī)范AA級別的文本,普通文本與背景之間的對比度為4.5:1,大標題文本這個比例為3:1。
在我們的App中,直接把淺色背景下的標簽顏色帶到深色模式中,文本開始變得很難閱讀。為了得到一個好的對比度,所有的標簽文本需要修改到深色,識別度會更高。
彩色元素上的文本需要改變顏色以保證易讀。
谷歌做了一款測試工具,幫助確定在哪個顏色值時需要將白色文本改為黑色文本,工具的地址在(https://material.io/design/color/the-color-system.html#tools-for-picking-colors)
(譯者注:彩云親測,還挺方便使用的,建議用電腦端打開這個頁面試用一下,對于配色糾結癥患者,有良好的治愈效果。)
小建議:推薦一款在sketch和Adobe XD中使用的小插件叫Stark,可以方便的測試出你設計的界面可用性。
如果應用包含插畫和圖形元素,這些也需要做好深色適配工作。如果插畫有”背景“和”主題“,最好是將背景的飽和度降低,以保證對于主題的關注。
Lottie動畫可以通過在AE中的源文件來重新導出json文件,來調整動畫的明暗適配,很方便。
深色主題插畫同樣讓用戶關注到插畫的主題內容。
隨著深色主題被引入操作系統(tǒng)級別,應用將需要在不破壞任何原有體驗的情況下做出適配優(yōu)化。
深色主題并不是僅僅做簡單的反色。
設計師和開發(fā)者必須明確以下幾點:
原文:https://medium.com/snapp-mobile/design-for-the-dark-theme-9a2185bbb1d5
作者:Pierluigi Rufo
譯者: 彩云Sky,公眾號:彩云譯設計
本文由 @彩云Sky 翻譯發(fā)布于人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協(xié)議
*請認真填寫需求信息,我們會在24小時內與您取得聯(lián)系。