UI設(shè)計必須要具備的前端知識
時間:2020-11-26來源:m.5wd995.cn點擊量:次作者:Gella
時間:2020-11-26點擊量:次作者:Gella
UI設(shè)計師和前端通常是一個是藝術(shù)出身,一個是技術(shù)出身。卻因為工作不得不經(jīng)常面對面坐在一起,為各種問題糾纏不清。
前端總覺得設(shè)計太過理想主義,稿子里很多構(gòu)想根本不完整,還以各種理由給自己找麻煩。設(shè)計總覺得前端各種找理由偷懶,開發(fā)出的界面明明和設(shè)計稿相差十萬八千里,就自以為完事大吉了。
今天AAA教育金老師就為廣大設(shè)計師們寫一篇比較好懂的科普,以促進(jìn)雙方在日常工作中更加高效友善地合作。
界面尺寸如何把控?
我們從外至內(nèi)來看一個界面區(qū)域(手機屏幕/電腦窗口)的尺寸有兩個變量:寬度和高度。
前端搭建界面時,通常只會規(guī)定橫向尺寸。也就是說寬度是自變量,高度是因變量。因為用戶的屏幕/窗口尺寸是無法預(yù)期的,哪怕都是手機,型號也多到數(shù)不清。要讓一款產(chǎn)品能夠在所有型號的硬件上展示,前端開發(fā)時不可能設(shè)置一個固定的界面尺寸。
你可以把界面想象成一個倒置的俄羅斯方塊盒子,在固定的寬度下,長度可以近乎無限延展。
然而UI設(shè)計是都是以一個固定的界面寬度為基礎(chǔ)的,因為這樣設(shè)計師就不需要為同一個方案畫很多不同尺寸的方案。也就是說在理解界面構(gòu)成時,前端的是基于動態(tài)寬度,而UI則是基于靜態(tài)寬度,這直接導(dǎo)致了雙方在基礎(chǔ)概念上的不對等。
這就是為什么設(shè)計還原的問題總是難以解決。UI追求的是在標(biāo)準(zhǔn)寬度下,界面能夠100%還原;而前端費解的是,既然用戶的屏幕尺寸根本無法確定,糾結(jié)某一特定寬度下是否精確符合設(shè)計稿是否有意義?
布局如何跟隨界面尺寸而變化?
那么當(dāng)容器寬度發(fā)生變化時,界面內(nèi)部首當(dāng)其沖收到影響的就是布局。
印刷品的頁面布局通常有左右分欄和上下分欄兩種。
而界面布局反倒更加簡單,通常只需要考慮左右分欄即可。這是因為界面在固定寬度下縱向延展,縱向高度有內(nèi)部元素的填充情況來決定。
界面尺寸變化時,分欄如何變化?通常有兩種方式:定寬和定比。
定寬常用于PC端。固定一欄的絕對寬度,另外一欄根據(jù)容器自由伸縮;或者固定元素的寬度,根據(jù)容器尺寸來確定列數(shù)。
定比常用于手機端。固定幾個分欄的所占比例,根據(jù)容器寬度自由伸縮。
對于前端來說,通常定寬比定比要簡單得多,所以如果UI不給出明確要求,前端很有可能一律按定寬處理。
圖片元素
前面一直在說,界面高度由固定寬度容器內(nèi),擺放下的元素來確定,那么這里就說一下元素是如何擺放的,從圖片開始。
如果是較小的圖片,例如LOGO、按鈕或箭頭,通常是給一個固定尺寸,以左對齊/居中/右對齊的方式擺放在容器中。
如果是較大的圖片,例如BANNER、文章插圖或背景,通常是給一個固定的比例,例如100%或50%,同樣以左對齊/居中/右對齊的方式擺放在容器中。
第一種方式插入的圖片所占用的高度是固定的,而第二種方式所占用的高度是根據(jù)容器寬度而等比變化的(如果是背景圖,當(dāng)然就不會影響到界面高度了)。
這就是為什么有的UI用非主流尺寸做設(shè)計,把切圖給開發(fā)后,在自己電腦上看效果發(fā)現(xiàn)相差很遠(yuǎn)。界面尺寸發(fā)生變化后,圖片看起來難免會有很大不同。
文字元素
界面里的元素除了圖片之外,其實大量都是文字。
文字的尺寸和行高一般是固定的,并不會隨著容器尺寸而變化。例如你用不同屏幕的設(shè)備打開一篇文章,你會發(fā)現(xiàn)每行字?jǐn)?shù)都是不同的。
當(dāng)然如果非要技術(shù)處理,也可以做到根據(jù)容器寬度確定文字尺寸,以求每行字?jǐn)?shù)保持不變。但是這種處理非常麻煩,一般很少用到。
這就是為什么,UI在標(biāo)準(zhǔn)尺寸屏幕上勉強留夠了文字空間,而在用戶的小屏設(shè)備上展示時,卻排不下幾個字。從前端的角度看,文字尺寸的靈活性,沒有圖片那么強。
內(nèi)邊距與外邊距
前端開發(fā)時,任何元素或模塊都可以有一個內(nèi)邊距和外邊距。內(nèi)邊距用于分割模塊里內(nèi)容與模塊邊緣的距離;外邊距用于分割模塊與模塊之間的距離。
當(dāng)元素/模塊重復(fù)出現(xiàn)時,其內(nèi)邊距和外邊距可以作為固定屬性重復(fù)出現(xiàn),這樣就避免了代碼冗余。
然而,有的設(shè)計稿在內(nèi)外邊距上比較隨便,這可能導(dǎo)致前端開發(fā)同學(xué)犯強迫癥,例如以下幾種情況。
不同頁面的邊距不一樣:
同一級模塊的邊距不同:
有的特殊元素偏偏要突破原本定好的邊距:
當(dāng)然有時候為了視覺效果,我們必須要做一些特殊處理,增加額外的開發(fā)工作量無可避免。
然而如果邊距不統(tǒng)一只是因為設(shè)計時沒有太在意,這就有可能給前端開發(fā)造成無意義的維護(hù)成本了。
如果設(shè)計按照模塊而不是按照頁面來提供方案,前端可能更加高興的,因為他們不用去猜哪些地方可以復(fù)用代碼了,哪些地方又必須單獨寫了。
總結(jié)
上面說的都是一些非?;A(chǔ)的前端原理,很多前端以為UI應(yīng)該理解,但其實很多情況下都無法理解。不論是前端還是設(shè)計,希望看了這篇文章后,能夠?qū)﹄p方有更多的理解。