首頁

圖表設(shè)計(jì)總結(jié)┃數(shù)據(jù)可視化的精益之道

前端達(dá)人

1.png



數(shù)據(jù)可視化是傳達(dá)信息的最好的方法之一,它可以直觀地呈現(xiàn)數(shù)據(jù),快速吸引用戶的注意力。但是如果設(shè)計(jì)師對圖表設(shè)計(jì)的理解有偏差,在界面呈現(xiàn)上可能會對用戶產(chǎn)生錯(cuò)誤的引導(dǎo),因此筆者結(jié)合自己的工作經(jīng)驗(yàn)對圖表設(shè)計(jì)進(jìn)行總結(jié),希望每位設(shè)計(jì)師都能成為優(yōu)秀的數(shù)據(jù)搬運(yùn)工。

下面我將從功能、交互和UI深挖圖表設(shè)計(jì)的各個(gè)知識點(diǎn),敲黑板劃重點(diǎn)咯~

2.png




前言

1.概念
圖表泛指在屏幕中顯示的,可直觀展示統(tǒng)計(jì)信息屬性(時(shí)間性、數(shù)量性等),對知識挖掘和信息直觀生動感受起關(guān)鍵作用的圖形結(jié)構(gòu),是一種很好的將對象屬性數(shù)據(jù)直觀、形象地“可視化”的手段。

如果說表格可以承載數(shù)據(jù)的全面性,那么圖表可以完美展現(xiàn)數(shù)據(jù)的特點(diǎn)和變化,它對數(shù)據(jù)的解讀能力是表格無法做到的。



3.png


2.使用場景


4.png


(1)比較數(shù)據(jù)差異情況?;诜诸惖臄?shù)據(jù),可以通過比較數(shù)據(jù)來了解不同分類的差異,比如柱狀圖。基于流程的數(shù)據(jù),可以通過比較數(shù)據(jù)了解數(shù)據(jù)的變化趨勢,比如折線圖。
(2)分析數(shù)據(jù)關(guān)聯(lián)情況。展現(xiàn)數(shù)據(jù)間相互關(guān)系和數(shù)據(jù)的流向。比如桑葚圖。
(3)查看數(shù)據(jù)分布情況。對于錯(cuò)綜復(fù)雜的變量之間關(guān)系,可以通過圖表來找出規(guī)律。比如利用氣泡圖進(jìn)行回歸分析。
(4)了解數(shù)據(jù)構(gòu)成情況。發(fā)現(xiàn)各變量的占比情況,比如餅圖。

3.原則

5.png



(1)輕量。眾所周知表格是可以承載數(shù)據(jù)的全面性,但將相同的數(shù)據(jù)用可視化展示時(shí),設(shè)計(jì)師總想將所有的信息堆砌在圖表上,顯得圖表非常笨重,因此增加了用戶的思考時(shí)間。在此建議明確你圖表類型的特點(diǎn),將主要信息呈現(xiàn)在圖表上或者分層展示圖表,比如數(shù)據(jù)鉆取功能。
(2)直觀。設(shè)計(jì)師應(yīng)該將數(shù)據(jù)信息清晰而直觀地表達(dá)出來,使用戶一眼就能洞察事實(shí),更快地發(fā)掘商業(yè)價(jià)值并作出決策。
(3)美感。缺乏美感的數(shù)據(jù)可視化僅僅是數(shù)據(jù)展示。美感包括兩個(gè)部分,第一個(gè)部分是整體協(xié)調(diào)美,比如對圖表中的各個(gè)元素(標(biāo)題、網(wǎng)格、坐標(biāo)軸、縮略軸、圖例、提示信息、預(yù)警線和輔助線等)進(jìn)行合理的排版和使用協(xié)調(diào)的配色。第二部分是局部細(xì)節(jié)美,比如設(shè)計(jì)師根據(jù)流行趨勢給圖表加上漸變色。

功能

6.png



我將用一種最復(fù)雜的圖表類型-雙軸圖當(dāng)作示范。

1.標(biāo)題。包括左對齊、居中對齊和右對齊。在選擇某種對齊方式前,請兼顧圖例的擺放位置。


7.png

2.柵格。包含點(diǎn)狀、線狀和斑馬線。
(1)根據(jù)數(shù)據(jù)特點(diǎn)選擇橫縱向輔助線,橫向引導(dǎo)線增強(qiáng)水平方向的導(dǎo)視??v向引導(dǎo)線增強(qiáng)垂直方向的導(dǎo)視。
(2)線狀建議用虛線,因?yàn)椴皇怯脩舸_定指向值。

8.png



3.坐標(biāo)軸。坐標(biāo)軸包括X坐標(biāo)軸、Y坐標(biāo)軸和次坐標(biāo)軸。
(1)X軸刻度方向的改變,如果維度過多,則橫向刻度的展示范圍有限。在沒有縮略軸的情況下,需要適當(dāng)改變刻度的角度(0~90度為宜)節(jié)省空間,但是要遵從人的閱讀習(xí)慣是從左到右的規(guī)則。
(2)Y軸初始值定為0,如果不是,則無法體現(xiàn)數(shù)據(jù)的全面性。如果數(shù)據(jù)的波動比較小有意義的(例如,在股票市場數(shù)據(jù)中),你可以截?cái)嗫潭纫燥@示這些差異。
(3)Y軸刻度值盡量轉(zhuǎn)化為千位分隔符,如K,M,B。
(4)Y軸最大值取值要恰當(dāng),保證圖表占據(jù)2/3以上。


9.png



4.縮略軸。包括滑面和滑柱。

(1)拖動滑柱滑動,增加或較少滑面,從而改變查看密度。

(2)拖動滑面滑動,保持滑面長度,進(jìn)行前后移動。不改變查看密度,只改變查看范圍。


10.png



5.圖例。離散型數(shù)據(jù)包括橫向排列和縱向排列,連續(xù)型數(shù)據(jù)包括連續(xù)圖例。
(1)所有圖表類型的排列方式要統(tǒng)一,所以要考慮整體的圖表空間是適合橫向排列,還是縱向排列。
(2)所有形式總長度超過內(nèi)容區(qū)換行或換列。
(3)雙軸圖包含了2種圖表類型,不同類型的圖例樣式要有所區(qū)分。
(4)連續(xù)型數(shù)據(jù)通過漸變色來展示數(shù)據(jù)大小的變化。


11.png




6.提示信息。包括查看單個(gè)數(shù)據(jù)點(diǎn)和多個(gè)數(shù)據(jù)點(diǎn)。
(1)單變量的浮層提示內(nèi)容為相同維度下選擇的變量。多變量的浮層提示內(nèi)容為相同維度下所有的變量。
(2)提示內(nèi)容遵從表單規(guī)范,按照冒號對齊。
(3)拓展:直聯(lián)表的圖例是展示所有變量,但是交叉表不是,是“變量+列維度”的排列組合


12.png



7.預(yù)警線。數(shù)據(jù)超過閾值就會報(bào)警,幫助用戶監(jiān)控?cái)?shù)據(jù)。
(1)預(yù)警線建議用實(shí)線,并用警示的顏色引起用戶的注意,最好用郵件或短信通知用戶。

8.輔助線。用戶設(shè)置某值作為數(shù)據(jù)參考進(jìn)行比較,比如設(shè)置平均分為參考數(shù)值。
(1)輔助線建議用虛線,僅起參考作用。

交互

1.加載方式。加載動畫建議使用和圖表相關(guān)的樣式。


13.png

2.排除異常值。允許用戶剔除高度異常點(diǎn),因?yàn)楫惓V禃绊懹脩魧φ麄€(gè)圖表的分析。

14.png

3.數(shù)據(jù)鉆取。單擊某個(gè)數(shù)據(jù)可以看到該數(shù)據(jù)的詳細(xì)信息,變換分析的粒度。

15.png

4.適配
(1)增減留白。圖表大小固定不變,只是增減留白空間。
(2)等比縮放。圖表的長寬都以相同比例縮放。

16.png



UI

1.顏色
(1)顏色主題
1)深色背景。適合較少信息內(nèi)容。
優(yōu)點(diǎn):可以通過布局建立良好的視覺層次,深層次地反映內(nèi)容,而且視覺吸引力強(qiáng),給人以高端的視覺感受。
缺點(diǎn):可讀性低。頁面太過聚焦所以對留白的平衡要求較高。

17.png



2)淺色背景。適合較多信息內(nèi)容。
優(yōu)點(diǎn):可讀性高,增加了頁面空間。
缺點(diǎn):內(nèi)容不聚焦,信息過少則頁面顯得太空。

18.png


(2)配色方案。首先要確保顏色數(shù)量足夠滿足數(shù)據(jù)系列在圖表中的展示。
1)使用成熟的色板,比如Flat UI Colors和Material Design Colors。
2)使用流行的元素,比如漸變色。
3)使用情緒板,情緒板是一種借助于圖像,啟發(fā)和探索用戶的體驗(yàn),然后再作用于視覺設(shè)計(jì)的研究方法。 可以調(diào)查并形成具有指導(dǎo)意義的“風(fēng)格感受”和“設(shè)計(jì)元素”。


19.png



(3)顏色生成規(guī)則。一個(gè)變量統(tǒng)一用一種顏色,再按配色方案依次出每個(gè)變量的顏色。 使得同一圖表的色彩搭配和諧且具有美感。


20.png

(4)視覺缺陷。世界上有一部分人群有視覺缺陷,他們無法通過顏色來得到來精準(zhǔn)地區(qū)分圖表的維度和變量。作為設(shè)計(jì)師不能忽略這部分較為龐大的特殊群體。

21.png

設(shè)計(jì)師常用的PS和AI提供了模擬紅色盲和綠色盲的校樣設(shè)置,選擇“視圖—校樣設(shè)置—紅色盲型/綠色盲型”。

22.png



想要從根本上解決這個(gè)問題,推薦一篇騰訊設(shè)計(jì)師的文章信息圖形中的顏色探討—面向色盲人士友好的設(shè)計(jì)解決方案

2.布局
視覺層級要符合邏輯層級,利用信息深度引導(dǎo)用戶閱讀。每個(gè)元素要保持一致,保證布局的整體協(xié)調(diào)。

23.png

3.插畫
符合主題和整體基調(diào),簡單易懂,數(shù)據(jù)可視化具有一定的認(rèn)知門檻,有時(shí)候需要插畫來提高用戶的理解力。

24.png



4.留白
信息過多容易造成視覺壓力,合理的留白可以增強(qiáng)用戶對信息的吸收能力。

5.字體
避免有個(gè)性的襯線字體,字體要保證清晰可見。字體大小適中,太小影響閱讀,太大容易占用圖表控件。普通字體大概12px,標(biāo)題用14px。

工具

1.使用大廠開放的圖表庫
圖表庫的圖表類型豐富且統(tǒng)一,而且大大節(jié)省了開發(fā)時(shí)間,比如百度的Echart阿里的G2。

2.在專業(yè)數(shù)據(jù)分析網(wǎng)站獲取靈感
筆者剛開始學(xué)習(xí)數(shù)據(jù)可視化就是拿著數(shù)據(jù)表格不停地在競品上摸索,作為一名用戶去感受這些圖表的交互體驗(yàn)。這里推薦一份數(shù)據(jù)可視化網(wǎng)站名單。

總結(jié)

1.先懂?dāng)?shù)據(jù),再談可視化
為此我們要了解圖表類型的適用場景和局限,可以看33種經(jīng)典圖表類型總結(jié),輕松玩轉(zhuǎn)數(shù)據(jù)可視化。了解這些可以幫助大家通過UI設(shè)計(jì)更好地展現(xiàn)圖表的特點(diǎn)。比如展示各地區(qū)的人口密度,可以用柱狀圖來展示,但是我們發(fā)現(xiàn)用地圖會更加接近用戶的期望。

2.為了數(shù)據(jù),過度可視化
很多時(shí)候設(shè)計(jì)師在圖表上很難展現(xiàn)自己的設(shè)計(jì)功力,從而會給圖表增加過多的視覺效果,比如3D效果。

3.真實(shí)數(shù)據(jù),友好可視化
數(shù)據(jù)產(chǎn)品不要試圖去掩蓋問題,而要反映真實(shí)數(shù)據(jù),暴露問題,并且和用戶一同解決。比如對數(shù)據(jù)閾值進(jìn)行監(jiān)測,預(yù)警線就是很友好的可視化方式。


轉(zhuǎn)自:簡書

作者:idatadesign

鏈接:https://www.jianshu.com/p/816f10b7d594

來源:簡書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。




藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)







兩萬五千字!寫給設(shè)計(jì)師的數(shù)據(jù)可視化指南

前端達(dá)人

現(xiàn)如今無論是工作匯報(bào),產(chǎn)品設(shè)計(jì),后臺設(shè)計(jì)甚至是數(shù)據(jù)大屏,越來越多的設(shè)計(jì)師需要和數(shù)據(jù)打交道。尤其是想要做B端的設(shè)計(jì)師,數(shù)據(jù)可視化更是必不可少的一個(gè)技能。數(shù)據(jù)可視化,可謂是越來越體現(xiàn)一個(gè)設(shè)計(jì)師的專業(yè)能力。

因此掌握數(shù)據(jù)可視化能力,是面向未來的設(shè)計(jì)師所必備的能力。然而尷尬的是,國內(nèi)沒有一款針對于教學(xué)數(shù)據(jù)可視化的全套解決方案,這讓很多渴望學(xué)習(xí)的設(shè)計(jì)師摸不著頭腦。所以這也促使我開啟了這個(gè)系列――「設(shè)計(jì)師需要了解的數(shù)據(jù)可視化」,希望能夠給大家?guī)硪恍┎灰粯拥膬?nèi)容,為大家梳理一個(gè)完整的數(shù)據(jù)可視化框架。

今天帶來的就是這個(gè)系列的第一篇,數(shù)據(jù)可視化的概念以及數(shù)據(jù)可視化設(shè)計(jì)的基本準(zhǔn)則。最近一直在做國際外包,時(shí)間非常的零散,而寫邏輯性強(qiáng)的文章又非常耗費(fèi)精力。所以從開題到現(xiàn)在,用了將近2個(gè)月的時(shí)間才將這篇文章徹底收尾。全文總計(jì)25000字左右,閱讀需要20分鐘左右,干貨滿滿,請大家做好準(zhǔn)備。(如果沒有時(shí)間,我之后我也會將該內(nèi)容錄成音頻,如果有興趣,可以持續(xù)關(guān)注我)

什么是數(shù)據(jù)可視化

數(shù)據(jù)可視化就是借助視覺的表達(dá)方式(不局限于文字),將枯燥的,專業(yè)的,不直觀的數(shù)據(jù)內(nèi)容,有趣的、淺顯的、直觀的傳達(dá)給觀眾的一種手段。

非設(shè)計(jì)師在制作數(shù)據(jù)可視化時(shí),往往會因?yàn)橹攸c(diǎn)突出數(shù)據(jù)的重要性,而讓可視化圖表變得枯燥乏味。而設(shè)計(jì)師在制作數(shù)據(jù)可視化時(shí),又會因?yàn)檫^度注重絢麗多彩而讓數(shù)據(jù)的呈現(xiàn)效果大打折扣。所以在這種大環(huán)境下,催生出了數(shù)據(jù)可視化行業(yè)。作為設(shè)計(jì)師,如何擁抱這個(gè)新興的行業(yè),如何把握設(shè)計(jì)與功能之間的平衡,從而更好的溝通與傳達(dá)信息,即是本文的重點(diǎn)。

1.png


信息圖表,就是數(shù)據(jù)可視化后產(chǎn)生的結(jié)果,就是我們在工作匯報(bào)中,項(xiàng)目介紹中,以及后臺系統(tǒng)中經(jīng)常見到的數(shù)據(jù)圖表。信息圖形由信息和圖形兩個(gè)詞語組成,它被稱之為「信息圖形」(Infographics或Information Graphics)。

信息圖形最初是在舊的紙質(zhì)媒體上刊登的,更加有助于人們理解新聞信息的可視化內(nèi)容。

2.png

3.png



信息圖表的分類

根據(jù)木村博之的定義,從視覺表現(xiàn)形式的角度,將「信息圖表」的呈現(xiàn)方式分為六大類:圖解(Diagram)、圖表(Chart)、表格(Table)、統(tǒng)計(jì)圖(Graph)、地圖(Map)、圖形符號(Pictogram)。


4.png




1. 圖解—主要運(yùn)用插圖對事物進(jìn)行說明

文字有時(shí)候是一種匱乏的信息傳遞方式,而可視化的方式,則是人類最本源的一種信息傳遞方式,圖解就是將很多無法準(zhǔn)確或用語言傳達(dá)的內(nèi)容,以生動形象的圖形解釋出來。下圖是一張經(jīng)典的對于咖啡種類圖解,38種咖啡配方,不必要用多余的文字解釋,直接用圖解表示,簡單明了,清晰易懂。

5.png




2. 圖表—運(yùn)用圖形、線條及插圖等,闡述事物的相關(guān)關(guān)系

圖表通常用于簡化人們對于大量數(shù)據(jù)之間的關(guān)系的理解。人們通常理解圖表會比理解數(shù)據(jù)要快很多。圖表和圖解唯一的不同點(diǎn)在于,圖解是用可視化的方式去傳遞信息,而圖表則是用來去闡述信息之間的邏輯關(guān)系。流程圖就是典型的圖表。

下圖是一張寵物狗的進(jìn)化圖,用巧妙的方式清晰地向我們傳遞了,狼是如何被人類馴化成不同種類的寵物狗的。


6.png



3. 表格—根據(jù)特定信息標(biāo)準(zhǔn)進(jìn)行區(qū)分,設(shè)置縱軸和橫軸

表格是按照行和列或者采用更復(fù)雜的結(jié)構(gòu)排列的數(shù)據(jù),表格廣泛應(yīng)用于通信、研究和數(shù)據(jù)分析。其實(shí)表格并沒有一個(gè)確定的定義,它會因?yàn)椴煌男袠I(yè)和談?wù)摥h(huán)境而存在差異.

7.png



4. 統(tǒng)計(jì)圖—通過數(shù)值來表現(xiàn)變化趨勢或者進(jìn)行比較

統(tǒng)計(jì)圖是根據(jù)統(tǒng)計(jì)數(shù)字,用 幾何圖形 、事物形象和地圖等繪制的各種圖形。它具有 直觀 、 形象 、 生動 、 具體 等特點(diǎn)。統(tǒng)計(jì)圖可以使復(fù)雜的統(tǒng)計(jì)數(shù)字簡單化、通俗化、形象化,使人一目了然,便于理解和比較。因此,統(tǒng)計(jì)圖在統(tǒng)計(jì) 資料整理 與分析中占有重要地位,并得到廣泛應(yīng)用。

下圖是大城市通勤的時(shí)長統(tǒng)計(jì),通過這些柱狀圖,我們能很清晰的看出各個(gè)級別的城市通勤時(shí)長的比例關(guān)系,并了解他們的擁堵時(shí)長和非擁堵時(shí)長分別是怎樣的情況。


8.png




5. 地圖—描述在特定區(qū)域和空間里的位置關(guān)系

將真實(shí)的世界轉(zhuǎn)換為平面,在此過程中必然要講一些東西略去。實(shí)際上,要說「省略」是地圖上最關(guān)鍵的詞也不為過,無論是哪種信息地圖,最重要的是讓用戶找到想要看到的信息。

信息地圖也可分為兩大類:

第一類,將整個(gè)區(qū)域的布局或結(jié)構(gòu)完整呈現(xiàn)的地圖。

第二類,將特定對象突出顯示的地圖。

以下是美國各州擁有槍支人數(shù)占總?cè)藬?shù)的百分比統(tǒng)計(jì)圖。

9.png






6. 圖形符號—不使用文字,直接用圖畫傳達(dá)信息

所謂圖形符號(也就是我們常說的icon),基本就是通過易于理解、與人直覺相符的圖形傳達(dá)信息的一種形式。生活中處處存在圖形符號,包括地鐵站出入口上的地鐵標(biāo)識,路邊的指示牌與限速標(biāo)識。人們會約定俗成的運(yùn)用一些符號來代表一些固定的意思,比如廁所門口的男女標(biāo)識,很多商店為了個(gè)性化設(shè)計(jì),使用了不常用的符號來表示男女,這會給消費(fèi)者造成很大的困擾,因?yàn)檫@脫離了他們常見的理解范圍。

圖形符號的設(shè)計(jì)原則是盡可能不使用文字,其作用有兩條:

避免語言不通造成的困擾。

更便捷的、更清晰的傳遞信息。

多年來,最經(jīng)典的圖形符號應(yīng)用案例可以說是奧運(yùn)會和殘奧會的運(yùn)動圖標(biāo)了。圖形符號可以說已經(jīng)成為奧運(yùn)會和殘奧會的重要組成部分,就像火炬?zhèn)鬟f和運(yùn)動會LOGO一樣,從賽事門票到奧運(yùn)村的品牌,圖形符號都在被廣泛使用。

下圖即為東京奧運(yùn)會的運(yùn)動圖形符號(局部)


10.png




達(dá)到數(shù)據(jù)可視化目標(biāo)的基本方法

目前我們工作中經(jīng)常遇到的數(shù)據(jù)可視化,大多數(shù)是制作數(shù)據(jù)圖表(即統(tǒng)計(jì)圖 Graph),所以我們本文的主要教學(xué)內(nèi)容也是圍繞著如何制作統(tǒng)計(jì)圖來說。

制作統(tǒng)計(jì)圖的過程可以被四個(gè)步驟,分別是:明確目的、選擇圖表、視覺設(shè)計(jì)、突出信息。


11.png




明確目的:明確數(shù)據(jù)可視化的目標(biāo),通過數(shù)據(jù)可視化我們要解決什么樣的問題,需要探索什么內(nèi)容或陳述什么事實(shí),并選擇合適的圖表。

選擇圖表:圍繞目標(biāo)找到能提供信息的指標(biāo)或者數(shù)據(jù),選擇合適的圖形去展示需要可視化的數(shù)據(jù)。

視覺設(shè)計(jì):以可視化的手段將數(shù)據(jù)轉(zhuǎn)化成有趣的設(shè)計(jì)語言。

突出信息:根據(jù)可視化展示目標(biāo),將重要信息添加輔助線或更改顏色等手段,進(jìn)行信息的凸顯,將用戶的注意力引向關(guān)鍵信息,幫助用戶理解數(shù)據(jù)意義。

1. 明確目的

大多數(shù)情況,明確圖表本身要達(dá)到的目的,比制作好圖表本身更加重要。如果對數(shù)據(jù)認(rèn)識不清,就會造成2種結(jié)果:

無法擬定合適的圖表標(biāo)題,從而使讀者失去閱讀圖表的興趣。

無法選擇出正確的可視化方式,從而使圖表難以理解。

知識點(diǎn) 01:好的圖表標(biāo)題 ―― 等于成功的一半

大多數(shù)圖表都需要一個(gè)好的標(biāo)題,這樣才能讓面試官知道他們在看什么。

標(biāo)題應(yīng)該是一個(gè)結(jié)論,是你希望面試官從中獲得的信息(有意義并且有趣的部分),而不僅僅是對圖表展示內(nèi)容的概括(即無意義且無趣的部分)。


12.png13.png


2. 選擇圖表

Andrew Abela 根據(jù)統(tǒng)計(jì)圖的主要功能,將所有的統(tǒng)計(jì)圖分為了四大類:比較、聯(lián)系、分布、構(gòu)成。在其資料的基礎(chǔ)上,我制作了一套更適合設(shè)計(jì)師的「圖表選擇器」(The Way of Data Visualization)。

14.png




通過上述圖表選擇器,我們可以輕易的根據(jù)我們想要展現(xiàn)的數(shù)據(jù)的種類,以及我們制作圖表的目的,來選擇到合適的圖表。但是日常工作中,我們往往用不到這么多的圖表種類,這個(gè)「圖表選擇器」更適合我們作為學(xué)習(xí)圖表概念的工具。日常工作中,有六種基本圖表已經(jīng)可以覆蓋我們大部分的使用場景,也是做數(shù)據(jù)可視化最常用的六種圖表類型。


15.png




所以作為新手的我們,只要能熟練掌握這六種圖表,即可應(yīng)付大部分的使用場景,而對于我們這種更專業(yè)的人士來說,上述的「圖表選擇器」能夠大大提高我們的工作效率。

3. 視覺設(shè)計(jì)

接下來也是數(shù)據(jù)可視化中最重要的一步,視覺設(shè)計(jì)。很多時(shí)候我們在設(shè)計(jì)圖表時(shí)沒有既定的規(guī)則,全憑借在平面設(shè)計(jì)和UI設(shè)計(jì)中獲得的知識來進(jìn)行設(shè)計(jì)。但之所以數(shù)據(jù)可視化被單獨(dú)細(xì)化成一個(gè)類別,并在國外蓬勃發(fā)展,甚至衍生出了專業(yè)的數(shù)據(jù)可視化設(shè)計(jì)師,就證明在數(shù)據(jù)可視化領(lǐng)域,很多規(guī)則是與其他設(shè)計(jì)不同的。

一個(gè)最簡單的例子,市面上大多數(shù)的配色方案都在數(shù)據(jù)可視化領(lǐng)域不適用。

毫無包容性的配色方案

首先,適用于數(shù)據(jù)可視化的配色方案,一定在明度上是有變化的。很多配色方案不僅不具備這種特性,甚至不會考慮包容性。UI設(shè)計(jì)的配色方案看起來都很絢麗多彩,但是很明顯,他們是為了用戶界面而設(shè)計(jì)的。色盲人士往往很難去閱讀那些運(yùn)用了低包容性配色方案的可視化圖表。


16.png



沒有足夠多的顏色種類

另一個(gè)問題就是,大多數(shù)配色方案并沒有足夠多的顏色種類。

在構(gòu)建一套完整的可視化圖表時(shí),我們往往至少需要6種顏色的調(diào)色板來進(jìn)行設(shè)計(jì),我們見過的大多數(shù)配色方案并不具有這么多種顏色。

17.png




雖然這些配色方案同樣絢麗多彩,但是他們不能靈活應(yīng)對圖表中復(fù)雜的信息層級。

難以區(qū)分層級的配色方案

漸變配色方案可以輕松解決上述兩個(gè)問題(顏色之間有明顯的對比,且可以無限細(xì)分顏色種類)。但很抱歉,這樣的配色方案同樣不適用數(shù)據(jù)可視化,我們舉一些簡單的例子大家就可以明白。


18.png



這些漸變色看起來沒什么問題,但是當(dāng)我們選擇其中一個(gè),將其顏色分類擴(kuò)充到10時(shí),問題就出現(xiàn)了。


19.png



你能區(qū)分出最左邊的4個(gè)顏色之間有什么差別嗎?恐怕很難。

前面的闡述,大多數(shù)是為了讓大家對數(shù)據(jù)可視化有一個(gè)清晰的概念。在「視覺設(shè)計(jì)」這一章我將重點(diǎn)講解,數(shù)據(jù)可視化(即圖表制作時(shí))需要注意的設(shè)計(jì)準(zhǔn)則。下面的內(nèi)容主要解決大家在數(shù)據(jù)可視化中所遇到的三個(gè)問題。

如何制作數(shù)據(jù)可視化圖表?

如何快速的制作數(shù)據(jù)可視化圖表?

如何制作一份兼具實(shí)用性和美觀性的數(shù)據(jù)可視化圖表?

適用于所有圖表的制作規(guī)則

1. 圖表中的線條

有無刻度線

當(dāng)數(shù)據(jù)的數(shù)值非常重要時(shí),一定要使用刻度線來讓觀眾更清晰的了解數(shù)據(jù)。

如果你的聽眾只需要了解A數(shù)據(jù)大于B數(shù)據(jù),那么刻度線是沒有必要的,只需在坐標(biāo)軸上使用小刻度即可。如果你的讀者要花一些時(shí)間在柱狀圖上并感興趣A數(shù)據(jù)是45.65而B數(shù)據(jù)是37.66,那么使用刻度線將有助于他們理解。

20.png




刻度線的顏色

如果確定要使用刻度線,則需要使它們比作為實(shí)際數(shù)據(jù)的點(diǎn)或者線條要層級低。因?yàn)檫@些刻度線也屬于背景的一部分。

總結(jié)來說,不要使用全黑或者全白的線條。如果你的背景顏色是白色或者淺色系,那么你應(yīng)該讓你的線條灰一些。你也同樣可以讓這些線條變成亮灰色,點(diǎn)狀或者虛線.

21.png


負(fù)空間的刻度線網(wǎng)格

你也可以使用灰色的背景,然后將刻度線反白。這是一種很好的利用負(fù)空間做設(shè)計(jì)的方法。或者刻度線可以用稍微偏黑色一點(diǎn)的灰色,因?yàn)楹苊黠@這樣會讓刻度線更融入背景一些。

22.png


數(shù)據(jù)可視化指南

坐標(biāo)線

坐標(biāo)線應(yīng)該比刻度線,線條更粗,顏色更深,才能讓整個(gè)圖表顯得更有主次的區(qū)分。

23.png



2. 選擇合適的坐標(biāo)上下限

選擇合適的坐標(biāo)下限

一般來講,我們應(yīng)該把我們的坐標(biāo)下限設(shè)置為0。

有人會問,這樣的話我們的數(shù)據(jù)就會變得沒有那么起伏變化了。那可能是因?yàn)槟愕臄?shù)據(jù)本身就沒有那么長勢喜人。

但同樣,其實(shí)很多事情可以反過來思考,之所以有人愿意不把坐標(biāo)軸設(shè)定為0為起點(diǎn),其實(shí)就是為了在視覺上讓人形成對比強(qiáng)烈的感覺,從而突出業(yè)績。這種方法的使用因人而異。


24.png




比如在小米的發(fā)布會中,為了對比,小米把數(shù)據(jù)的下限起點(diǎn)設(shè)置為了10000,從而使小米的跑分?jǐn)?shù)據(jù)看似跑贏了友商一倍還多,但其實(shí)小米的數(shù)據(jù)增長,只比友商高出了25%。

再舉個(gè)例子:這張條形圖也是經(jīng)??怂剐侣劀?zhǔn)許使用的。


25.png



3月31日目標(biāo)的值為7,066,000,比6,000,000高17.8%,然而第二個(gè)柱形幾乎是第一個(gè)柱形長度的三倍。


26.png



這也同時(shí)提醒我們要注意,在觀看別人的圖表時(shí),僅僅觀看柱狀圖的高低趨勢往往不能得出正確結(jié)論,需要注意坐標(biāo)軸起始位置有沒有被人做過虛假處理。

同樣的,有些人為了匯報(bào)業(yè)績,也會使每個(gè)刻度的跨度不一致,從而提高柱狀圖整體的對比度。這種情況也應(yīng)該多留心觀察,不要被表面的內(nèi)容所迷惑。

27.png




選擇合適的坐標(biāo)上限

坐標(biāo)軸中另一個(gè)需要注意的點(diǎn)即為坐標(biāo)上限。上限界定的方式有兩種,可根據(jù)需求自行判斷。

如果只是為了比較各個(gè)數(shù)據(jù)的數(shù)值,可以用數(shù)據(jù)的最大值作為坐標(biāo)軸上限。

如果是需要將數(shù)據(jù)與某個(gè)最大值比較,則用此最大值作為上限.

28.png



3. 刻度值

雖然Y軸的刻度值標(biāo)簽通常放置在刻度線的最左邊,但我們也可以把它們放置在其他的地方,比如刻度線的頂部。(但此時(shí)一定要把握好親密性原則,稍不注意就會引起觀眾的困惑,這也是我們經(jīng)常會在看其他圖表時(shí)遇到的問題,到底刻度值標(biāo)記的是哪一條刻度線?)


29.png



刻度線和刻度值相輔相成,這會讓圖表看起來更加規(guī)范。刻度值放置在哪里無所謂好壞,只是需要根據(jù)不同的場合加以使用。

間隔均勻

30.png



在坐標(biāo)軸上應(yīng)該使用均勻的跨度0,5,10,15,20,而非不均勻的跨度0,3,5,16,50。這里即呼應(yīng)上方「坐標(biāo)軸下限」中的最后一點(diǎn),有時(shí)圖表制作人也會用不均勻的刻度來蒙騙我們對數(shù)據(jù)產(chǎn)生誤解。

當(dāng)然,此處的舉例只是夸大了錯(cuò)誤的效果,現(xiàn)實(shí)生活中的不均勻刻度往往更加隱蔽,需要我們仔細(xì)去甄別。

不要使用非水平和豎直的文字標(biāo)注,也不要使用轉(zhuǎn)行

有時(shí)坐標(biāo)軸上的注釋文字會很多,所以很多人為了妥協(xié),在小空間內(nèi)顯示出所有的文字標(biāo)注內(nèi)容,而使用傾斜的文本,或者將文本轉(zhuǎn)行處理。

不要用過于復(fù)雜的設(shè)計(jì)形式,數(shù)據(jù)可視化的第一要義是簡單易懂,所以在遇到標(biāo)簽文字過長時(shí),可以采用以下方法進(jìn)行解決。

31.png


4. 數(shù)據(jù)的處理與排序

我們在每次制作前都對數(shù)據(jù)進(jìn)行排序,而不是隨機(jī)排布。這樣我們可以在圖表中為觀眾展示更多信息,即某個(gè)數(shù)據(jù)在總的數(shù)據(jù)庫里面的序列。

大小排序

我們還是從一系列國家的數(shù)據(jù)開始。

32.png

目前的排布很隨機(jī),或者是按照字母表排序的。接下來我們要按照數(shù)值從大到小進(jìn)行排列。

33.png


我們隨機(jī)挑選一組數(shù)據(jù),比如玻利維亞(Bolivia),再上圖中,我們只能得到玻利維亞的數(shù)據(jù)值,以及他大概在數(shù)據(jù)庫中排在中游的位置,僅此而已。但是下圖中,根據(jù)大小排列好的數(shù)據(jù),我們不僅可以獲得剛才的兩個(gè)信息,同時(shí)還能馬上知道玻利維亞在整個(gè)圖表中的排名(第四名)。同時(shí)你還可以看到吉爾吉斯斯坦(Krygyzstan)和越南(Vietnam)居于榜首而美國(America)是倒數(shù)第一,這就是好的圖表能給我們帶來的「更多的信息」。

我們再看一遍按照字母表排序的圖表,你能輕易的輸說出「岡比亞(Gambia)」排名第幾嗎?

34.png36.png



刻意的序列

在發(fā)布會中我們常常見到,為了突出自己產(chǎn)品的強(qiáng)悍,往往要與友商的數(shù)據(jù)做對比,在這種情況下,我們的數(shù)據(jù)也不是隨機(jī)排布的,我給這種數(shù)據(jù)排布方法起了個(gè)名字,叫「刻意的序列」。

在 魅族 16th 的發(fā)布會中,這張旗艦機(jī)重量對比的圖表很有講究,可以發(fā)現(xiàn),除了索尼(最重的手機(jī))以及 魅族 16th(最輕的手機(jī))外,其余所有的手機(jī)都是按照降序排列。不看顏色對比,把 236g 的索尼和 152g 的魅族放置在一起進(jìn)行講解,以更加突出魅族的輕薄。

那么這個(gè)圖表的數(shù)據(jù)排序其實(shí)經(jīng)過了三次處理。

把重量從高到低排序。

把重量最高的和的手機(jī)單獨(dú)放置,并給予特殊顏色單獨(dú)顯示。

把這兩個(gè)數(shù)據(jù)放置在最后,再次突出對比,吸引觀眾注意。

這就是我們學(xué)習(xí)數(shù)據(jù)可視化時(shí)非常需要注意的細(xì)節(jié)點(diǎn),在數(shù)據(jù)可視化中,細(xì)節(jié)決定成敗。

37.png




5. 關(guān)于圖例的設(shè)計(jì)

數(shù)字需要四舍五入

我們有時(shí)為了保證圖表的清晰整潔,并不能完全選擇符合數(shù)據(jù)上限和下限的數(shù)字作為刻度,而是選擇一些取整的數(shù)字。

同樣的,這不僅僅適用于圖例中的數(shù)字,同樣適用于坐標(biāo)軸上下限的數(shù)字。


38.png



標(biāo)記圖例的邊界比標(biāo)記圖例的范圍更好

在需要用多種顏色做區(qū)分的圖表中,有時(shí)可以通過標(biāo)記圖例邊界而不是標(biāo)記圖例范圍的方式,來提高觀眾的閱讀效率。

39.png


水平或者垂直方向的圖例

對于數(shù)字的刻度,水平圖例往往比垂直圖例更加容易閱讀,因?yàn)檫@符合我們的閱讀習(xí)慣。

40.png

但是,對于有類別區(qū)分的圖例來說,垂直圖例往往效果更好,因?yàn)槲覀兛梢栽趫D例的右邊放置更長的文本(跟坐標(biāo)軸的注釋同樣的道理)

41.png



刪除內(nèi)部邊界

有時(shí)我們甚至可以更簡約的表示圖例,當(dāng)你只想表達(dá)一個(gè)漸進(jìn)的過程,24和55之間的差異并不重要,觀眾只需要知道后者比前者大即可。在這種情況下,我們可以嘗試只標(biāo)記出圖例的最大值和最小值,而不必要標(biāo)記出每個(gè)邊界或者顏色,這樣可以給觀眾減少不必要的信息負(fù)擔(dān)。


42.png




6. 圖表上的文字信息

文字標(biāo)注的作用,不是來填充空白的,而是用來強(qiáng)調(diào)相關(guān)信息或拓展額外的背景知識的。

引用消息來源

大多數(shù)情況下,我們制作的圖表都不會將原數(shù)據(jù)附在旁邊,因此最好在圖表中引用你的數(shù)據(jù)來源。一般來說,引用規(guī)則是在左下角防止數(shù)據(jù)來源信息,往往采用特殊字體



43.png



引用消息來源,既可以方便你隨時(shí)索引數(shù)據(jù)來源(就像我文章開頭的每一個(gè)圖表都標(biāo)注出了他的原標(biāo)題+索引網(wǎng)址),也可以增加數(shù)據(jù)的可信度。(有趣的事,人人往往不會關(guān)注數(shù)據(jù)來源于哪里,只要有來源,就會大大增加人們的信服感)

44.png



用數(shù)字輔助表達(dá)

有時(shí)你需要在你的圖表中標(biāo)注出數(shù)據(jù)值,而不僅僅應(yīng)該依賴視覺元素向觀眾傳達(dá)信息。

45.png



通常來說,不需要太嚴(yán)謹(jǐn)?shù)膱D表,我們會對數(shù)據(jù)值進(jìn)行一定程度的處理。

有小數(shù)的值四舍五入。(234.19 ―― 234)

在數(shù)據(jù)的量級非常大時(shí),將一定位數(shù)數(shù)字取整。(52,133 ―― 52,000)

當(dāng)所有數(shù)據(jù)的量級都非常大時(shí),將一定位數(shù)的數(shù)字縮進(jìn)單位中。(521,000,000 元 ―― 5.21 億元)

Y軸刻度值盡量轉(zhuǎn)化為千位分隔符,如K,M,B。

Y軸最大值取值要恰當(dāng),保證圖表占據(jù)2/3以上。

如果我們不這樣處理,你就會發(fā)現(xiàn)你的圖表總是不那么整潔。

7. 控制字體的數(shù)量

圖表中的字體數(shù)量以及字體大小的種類加起來不要超過3種(標(biāo)題和副標(biāo)題除外)。通常來說,我們在制作時(shí)會把注釋和坐標(biāo)軸標(biāo)簽設(shè)置為兩種字體樣式,所以只需要確保將這兩者統(tǒng)一起來,那么就可以保證我們的圖表不超過3種字體樣式。

46.png



47.png

柱狀圖的制作規(guī)范

1. 柱狀過寬或過窄

48.png



過寬的柱會讓圖表看起來笨重,盡量保持柱的輕薄,這樣可以保持優(yōu)雅的外觀,但是太薄了會讓用戶很難對數(shù)據(jù)進(jìn)行比較。

標(biāo)準(zhǔn)的數(shù)值為,柱的寬度為「柱與柱間距」的2倍,當(dāng)然這只是個(gè)參考值,實(shí)際我們根據(jù)不同的情況,對寬度作出調(diào)整。

49.png




2. 盡量不要超過7個(gè)值

一般進(jìn)行數(shù)據(jù)比較時(shí),柱狀圖建議不要超過5個(gè)數(shù)據(jù)值,對于條形圖來說,建議不要超過7個(gè)數(shù)據(jù)值。

折線圖的制作規(guī)范

1. 有層次區(qū)分的折線/曲線

當(dāng)我們在制作一個(gè)復(fù)雜的折線圖時(shí),我們想要顯示其中的一條數(shù)據(jù),最好的方法就是加強(qiáng)它與其他元素的對比,從而提高它的重要性層級。

利用我們之前的方法,把其他的數(shù)據(jù)變?yōu)榛疑?

將我們需要強(qiáng)調(diào)的曲線置于頂層。

50.png



2. 什么時(shí)候是用折線圖

2017年1月和2月的大米出口量是相關(guān)的,他們代表一種數(shù)據(jù)在不同時(shí)間下的數(shù)據(jù)值,因此我們可以用折線圖將它們連接起來。但是2017年1月的大米出口量和玉米出口量(16萬噸)是不相關(guān)的,所以我們不能隨便用折線圖來代替柱狀圖。

51.png



用折線圖可以很好的表示每天去醫(yī)院的人數(shù),因?yàn)榻y(tǒng)計(jì)每天去醫(yī)院的人數(shù)可以用來觀察趨勢。

3. 按照時(shí)間推進(jìn)的數(shù)據(jù)并不能總是用折線圖來表示

有時(shí)我們也需要進(jìn)行一些區(qū)分。如果我們想要繪制美國大規(guī)模槍擊事件的傷亡人數(shù)隨時(shí)間推移的圖表。這些槍擊事件確實(shí)是一個(gè)接一個(gè)發(fā)生的,但是它們本質(zhì)上卻沒有關(guān)系,所以你不能用折線圖(應(yīng)該用條形圖)。

但是,如果按年份對它們進(jìn)行歸類,并計(jì)算每年的傷亡人數(shù)。這樣的情況下可以使用折線圖進(jìn)行統(tǒng)計(jì),因?yàn)榻y(tǒng)計(jì)結(jié)果的趨勢變化是有意義的,是可以得出相應(yīng)的結(jié)論的。

4. 使鋸齒狀的線條平滑

如果你的折線上下浮動過于劇烈,那么你應(yīng)該嘗試?yán)L時(shí)間間隔,比如不每天采樣而以周為單位來采樣。觀眾們不會去閱讀鋸齒狀的線條,或者說他們不會喜歡這樣的圖表。

52.png



5. 在你的折線圖中繪制數(shù)據(jù)點(diǎn)

當(dāng)有些特定的數(shù)值特別重要時(shí),我們可以在線條上標(biāo)注出他們,如果你有大量的數(shù)據(jù)需要展示,或者你只想展示數(shù)據(jù)的走勢,那么其實(shí)你只需要使用折線就足夠了,不需要增加數(shù)據(jù)點(diǎn)。不信你可以試試,大量的數(shù)據(jù)點(diǎn) = 混亂不堪的界面。

53.png






餅圖的制作規(guī)范

餅圖和圓環(huán)圖在數(shù)據(jù)可視化方面生病狼藉,但卻是使用的最頻繁的圖表之一。餅圖是一種應(yīng)該避免使用的圖表,因?yàn)槿庋蹖γ娣e大小不敏感,并且?guī)缀鯖]有對與角度大小的概念。更何況是肉眼完全無法重合比較的圖形。


54.png



例如上面左圖,我們很難去比較每日從肉類(Meat)中攝入的卡路里與從糖類(Sugar&Fat)中攝入的卡路里數(shù)量的比例。人眼的直覺中,糖類與肉類的比例應(yīng)該在2:1左右,但實(shí)際的比例卻是1.5:1。

上述右圖將這一現(xiàn)象放大的更加明顯。人眼的直覺中,辦公與接待的數(shù)值差距非常大(這是由于我們直覺更習(xí)慣從面積上做判斷),但實(shí)際上接待與辦公的比例為1.5:1。

很多設(shè)計(jì)師認(rèn)為餅圖應(yīng)該是被禁止使用的圖表,我覺得不能說的太絕對,不管怎樣,迄今為止事實(shí)情況是,仍然有很多人在使用餅圖,所以我們至少可以爭取正確的使用他們。

雖然如此,但是在強(qiáng)調(diào)個(gè)體與總體的比例關(guān)系方面,餅圖還是有其獨(dú)特的優(yōu)勢。

1. 避免過度分割餅圖,否則最終會導(dǎo)致根本無法閱讀

55.png




那么有同學(xué)會問:分割多少塊是過度分割?這是一個(gè)需要在實(shí)際制作時(shí)進(jìn)行判斷的問題。一個(gè)簡單的方法,如果我們已經(jīng)很難從圖中看出其中一塊扇形是另一塊的兩倍大了,或者好幾塊較小的扇形看起來差不多大時(shí),那么就不能再分割了。此時(shí)可以考慮把較小的類目歸入一個(gè)更大的:「其他」模塊。

如果一定要給出一個(gè)確切的分類數(shù)目,我認(rèn)為一般不要超過9個(gè),超過的話,建議用條形圖來展示,不要太依賴于餅圖。


56.png




例:這張餅圖來自維基百科,它展示了國家的不同區(qū)域。

左邊這張餅圖已經(jīng)分割出了無數(shù)個(gè)扇形了,但旁邊另分離出一張餅圖,顯示出了左圖中更多的,看不到的更小國家的情況,以此來提供更多的信息。其實(shí)還有很多的方法可以展示這組數(shù)據(jù),例如樹狀圖或者普通的地圖。局限較大的餅圖只適用于展示只有幾組值的數(shù)據(jù)。

除餅圖外,環(huán)形圖(甜甜圈圖)亦可表示占比,其差異是將餅圖的中間區(qū)域挖空,在空心區(qū)域顯示文本信息,比如標(biāo)題,優(yōu)勢是其「空間利用率更高」。

57.png


數(shù)據(jù)可視化指南

2. 餅圖的起始位置要得當(dāng)

人們的閱讀習(xí)慣往往是從12點(diǎn)鐘開始的(跟表盤類似)。所以我們在制作餅圖時(shí)也要遵循觀眾的閱讀習(xí)慣,從12點(diǎn)鐘方向開始制作,這樣才能呈現(xiàn)出更加清晰的數(shù)據(jù)。

58.png



3. 餅圖的順序要得當(dāng)

這個(gè)規(guī)則與其他的數(shù)據(jù)圖表一致,我們在拿到數(shù)據(jù)后,不要急于去進(jìn)行數(shù)據(jù)可視化,而是應(yīng)該對數(shù)據(jù)進(jìn)行排序處理,一般來講,我們對于圖表都要進(jìn)行從大到小的數(shù)據(jù)排序,才更有利于我們展示數(shù)據(jù),但是有一個(gè)例外的情況。

當(dāng)數(shù)據(jù)中包含一個(gè)類別叫「其他」時(shí),無論其他的內(nèi)容占比為多少,我們最好都把他放置在餅圖的最后來展示。


59.png


4. 切割的展示方式

有時(shí),我們可以想一些創(chuàng)意形式來解決餅圖對比不夠明顯的問題。

60.png


當(dāng)我們將餅圖分拆開來設(shè)計(jì)時(shí),將他們設(shè)置為同一起點(diǎn),我們可以清晰的對比出數(shù)據(jù)的大小,但嚴(yán)格意義上來講這已經(jīng)不算是餅圖了。

散點(diǎn)圖的制作范圍

1. 散點(diǎn)圖可以承載最多四個(gè)維度的變量

當(dāng)包含多重變量時(shí),散點(diǎn)圖本身包含2個(gè)維度的數(shù)據(jù),當(dāng)出現(xiàn)更多維度時(shí),我們可以通過改變散點(diǎn)的顏色和大小甚至是形狀來對數(shù)據(jù)進(jìn)行更多維度的劃分,這個(gè)時(shí)候,散點(diǎn)圖即變成了氣泡圖。

61.png



2. 盡量為散點(diǎn)圖添加趨勢線

通過添加趨勢線,可以更好的讓觀眾感受數(shù)據(jù)的變化,人們不會愿意接受未處理的數(shù)據(jù),往往傾向于接受已經(jīng)被處理好的數(shù)據(jù)結(jié)果。

62.png



面積圖的制作規(guī)范

面積圖又叫區(qū)域圖,與折線圖很相近,都可以用來展示隨著連續(xù)時(shí)間的推移數(shù)據(jù)的變化趨勢。區(qū)別在于,面積圖在折線與類別數(shù)據(jù)的水平軸(X軸)之間填充顏色或者紋理,形成一個(gè)面表示數(shù)據(jù)體積。相對于折線而言,被填充的區(qū)域可以更好的引起人們對總值趨勢的注意,所以面積圖主要用于傳達(dá)趨勢的大小,而不是確切的單個(gè)數(shù)據(jù)值。面積圖有三種不同的形態(tài),根據(jù)數(shù)據(jù)以及背景的不同,均有其最佳的展示環(huán)境。

1. 盡量不重疊,使用透明色

當(dāng)圖表中要展示多組數(shù)據(jù)時(shí),最好保證所有的數(shù)據(jù)都不重疊,這樣才可以更好的展示數(shù)據(jù)。如果無法避免重疊,則應(yīng)該適當(dāng)?shù)脑O(shè)置顏色和透明度,使得重疊的區(qū)域變得更加易讀。

63.png



2. 不要超過四個(gè)類別

面積圖只適合展現(xiàn)少量的數(shù)據(jù),最多建議不要超過四個(gè)類別,否則就會導(dǎo)致非常難以識別。因此在多個(gè)類別下,要盡量避免使用面積圖。

64.png



突出信息

1. 重要的內(nèi)容用顏色區(qū)分

有時(shí)我們?yōu)榱送怀稣宫F(xiàn)某部分?jǐn)?shù)據(jù),需要對它們進(jìn)行特殊的處理(包括添加輔助線,更改顏色,線條粗細(xì)等方法)來加大它們與其他數(shù)據(jù)的對比,以吸引用戶注意,并表明你想陳述的觀點(diǎn)。


65.png




如上左圖,通過添加輔助線和標(biāo)紅的方式,來顯示快遞公司未達(dá)到60萬件派件標(biāo)準(zhǔn)的月份,從而突出顯示公司業(yè)績不合格部分。如上右圖,通過對9月份的顏色區(qū)分,來突出顯示二手房價(jià)格在9月份達(dá)到前所未有的高度。

2. 把不重要的內(nèi)容變?yōu)榛疑?/b>

對于不太重要的內(nèi)容,我們通常會把它們的層級降低,將其變?yōu)榛疑且粋€(gè)好方法。(如上左圖中1-6月與9月數(shù)據(jù)的配色,以及上右圖中1-8月數(shù)據(jù)的配色)

通常來說,我們會用灰色來標(biāo)記:

未被選中的元素或者背景。

為重要的數(shù)據(jù)點(diǎn)做對比的數(shù)據(jù)。

(在交互圖表中)不是當(dāng)前選中的元素。

66.png


3. 沒有那么多重點(diǎn)信息

如果你覺得每個(gè)信息點(diǎn)都很重要,然后為他們都做了特殊的備注,那么請把他們都去掉,因?yàn)槟乔∏∽C明他們都不重要。

數(shù)據(jù)可視化的精髓就在于你去用視覺元素去幫助用戶做篩選,如果觀眾們真的很想知道每個(gè)數(shù)據(jù)代表什么,那或許你應(yīng)該給他們展現(xiàn)一份表格而不是圖表。

67.png

4. 添加必要的輔助說明


68.png



關(guān)于這個(gè)圖表,如果我們不進(jìn)行標(biāo)注的話,它只能講述故事的一部分。如果要把故事講述的全面,那么就必須添加一些標(biāo)注。

如果我告訴你,這個(gè)圖表想告訴我們,在第6天的時(shí)候該團(tuán)隊(duì)使用了敏捷開發(fā),在使用新技術(shù)初期,Bug數(shù)量明顯上升,而后瞬間下降。加上了標(biāo)注,圖表講述了一個(gè)跟之前完全不一樣的故事。

所以,我們?yōu)榱烁玫恼f明我們的目的,有時(shí)需要對圖表進(jìn)行特殊處理,包括做一些突出某些信息的標(biāo)注。

5. 添加必要的輔助線

這一點(diǎn)主要針對于柱狀圖和折線圖,比如當(dāng)我們想要呈現(xiàn)兩個(gè)不同時(shí)期的數(shù)據(jù)變化時(shí),添加輔助線可以更直觀地體現(xiàn)出其中的變化。

比如像這個(gè)圖表,為了體現(xiàn)出響應(yīng)速度有很大的提升,,添加了相關(guān)輔助線并標(biāo)注了相應(yīng)的數(shù)字,使 PRO5 和 SONY Z3+ 之間的對比更加明顯.

69.png


轉(zhuǎn)自:簡書


作者:極創(chuàng)設(shè)計(jì)

鏈接:https://www.jianshu.com/p/a8996c452c2d

來源:簡書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。



藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)



酷炫的 FUI 圖形設(shè)計(jì)

前端達(dá)人

作者通過以進(jìn)度條的設(shè)計(jì)深入淺出的講解關(guān)于FUI的設(shè)計(jì)思路。雖然FUI設(shè)計(jì)看起來很復(fù)雜,只要找準(zhǔn)規(guī)律,從一些作品中總結(jié)分析細(xì)節(jié),再運(yùn)用到我們的設(shè)計(jì)中。想要了解的小伙伴可以嘗試一下。

前言

看到上期小伙伴想了解一下 FUI 的設(shè)計(jì)教程,所以這次再次和大家聊一下關(guān)于 FUI 的設(shè)計(jì)風(fēng)格,我們以“進(jìn)度條”的設(shè)計(jì)教程為例,深入淺出的聊一下關(guān)于 FUI 的設(shè)計(jì)思路,因?yàn)橹饕O(shè)計(jì)思路的延展,所以不會出現(xiàn)具體的數(shù)據(jù)參數(shù),小伙伴們要諒解啊。

目錄

1.風(fēng)格介紹

2.設(shè)計(jì)思路

3.總結(jié)

1.風(fēng)格介紹

關(guān)于 FUI 的定義,閱讀過我上一篇文章的小伙伴可能對 FUI 的定義有了一個(gè)較為清晰的定義,即 FUI 是:虛構(gòu)的、未來的、幻想的用戶界面。

1.png



我們仔細(xì)閱讀關(guān)鍵詞:“虛構(gòu)的、未來的、幻想的。”從對 FUI 關(guān)鍵詞上我們進(jìn)行粗略的分析可以得出這么一條簡單的結(jié)論:FUI 的設(shè)計(jì)不依據(jù)現(xiàn)實(shí)為基礎(chǔ)的界面設(shè)計(jì),為設(shè)計(jì)師留有巨大的想象空間。所以朋友們,請把腦洞開大一點(diǎn)吧,不受到當(dāng)前的技術(shù)和硬件載體的制約,F(xiàn)UI 本身就是一種創(chuàng)新發(fā)明。

2.png




接下來我會向大家簡單介紹一下 FUI 主要的兩大設(shè)計(jì)風(fēng)格:軍事風(fēng)格和機(jī)甲風(fēng)格(也可以叫做機(jī)械風(fēng)格)。 


1.軍事風(fēng)格

軍事風(fēng)格的特點(diǎn)在于:“直接明了”。因?yàn)樵跉埧岬膽?zhàn)爭中時(shí)間就是生命,士兵必須保證“快速、準(zhǔn)確、直接”才能保證戰(zhàn)斗的勝利,所以會盡量避免與操作業(yè)務(wù)無關(guān)的。你也可以理解為當(dāng)下最前沿的的設(shè)計(jì)理念“l(fā)ess is more?!崩缦聢D,在界面設(shè)計(jì)中幾乎都是利用簡單的幾何設(shè)計(jì)語言完成。

3.png




軍事風(fēng)格成為 FUI 的主流設(shè)計(jì)形式有著必然的原因。首先簡單的從我們熟知的影視作品中來講,在諸多科幻動作為主的故事題材的影視作品中,正義的一方都有軍隊(duì)的支持,其中不可避免的會出現(xiàn)的許多設(shè)備的界面;再則隨著科技的發(fā)展,許多高科技都會用運(yùn)用到軍事設(shè)備的研發(fā)上,精密的結(jié)構(gòu)線和反復(fù)數(shù)據(jù)讓我們覺得其中的科技含量很高。


4.png




2.機(jī)甲風(fēng)格

機(jī)甲風(fēng)格相對于軍事風(fēng)格的最大特點(diǎn)就是:“具有一定的裝飾圖形元素,或多或少?!睓C(jī)甲風(fēng)格最大的特點(diǎn)便是具有機(jī)械或者機(jī)甲風(fēng)格的裝飾元素,其中多為異形元素。其靈感來源于工業(yè)設(shè)計(jì),從機(jī)械和機(jī)甲的工業(yè)設(shè)計(jì)語言中提取圖形元素,在運(yùn)用到界面設(shè)計(jì)上。如下圖,異形的機(jī)甲風(fēng)格讓機(jī)器人的頭部設(shè)計(jì)顯得更加統(tǒng)一,如果換成當(dāng)前流行的扁平化設(shè)計(jì),可能就顯得有點(diǎn)奇怪了。

5.png

機(jī)甲風(fēng)格的發(fā)展歸功于科幻題材故事的發(fā)展,為人們打開腦洞,暢想更多的可能性。在設(shè)計(jì)上激發(fā)了 FUI 的誕生,無論是賽博朋克、廢土題材、還是漫威、DC宇宙中的科幻影視作品中我們都能看到機(jī)甲風(fēng)格的界面設(shè)計(jì)。

6.png



2.設(shè)計(jì)思路

設(shè)計(jì)樣式 – 軍事風(fēng)格

我們從以上的設(shè)計(jì)風(fēng)格中抓去我們需要的關(guān)鍵詞進(jìn)行示例設(shè)計(jì),首先我們看軍事風(fēng)格的關(guān)鍵詞是“直接明了、快速、準(zhǔn)確、直接,”我們轉(zhuǎn)換成我們平時(shí)的設(shè)計(jì)語言就是:“極簡風(fēng)格,”這樣是不是更好理解了。例如圖例中,頁面整體十分統(tǒng)計(jì),利用簡潔幾何語言進(jìn)行設(shè)計(jì)。

7.png




接下來我們做一個(gè)簡單的軍事風(fēng)格的進(jìn)度條:第一步,找參考?。?!這一步很重要,很多同學(xué)都很容易就忽視這一點(diǎn),一心一意的閉門造車,絕不借鑒學(xué)習(xí)其它優(yōu)秀作品。這里向大家推薦 HUDS + GUIS 設(shè)計(jì)公司,這里有我們許多我們耳熟能詳?shù)挠耙曌髌分械?nbsp;FUI 設(shè)計(jì)。

第二步,臨摹,臨摹可以說是學(xué)習(xí)他人技巧的最快方式,從中我們可以學(xué)習(xí)到許多設(shè)計(jì)中的細(xì)節(jié),日后我們可以運(yùn)用到自己的設(shè)計(jì)當(dāng)中。我借鑒臨摹了下面的進(jìn)度條樣式。


8.png



第三部,修改細(xì)節(jié),舉一反三。臨摹就一定是是抄襲么?當(dāng)然不是!創(chuàng)意設(shè)計(jì),是把再簡單不過的東西或想法不斷延伸給予的另一種表現(xiàn)方式(百度百科),所以我們可以通過對設(shè)計(jì)組件內(nèi)部進(jìn)行重新組合或者修改其中的細(xì)節(jié)參數(shù)來達(dá)到自己在設(shè)計(jì)的目的。通過總結(jié)分析,我選用了最簡單直白的結(jié)合圖形作為設(shè)計(jì)元素進(jìn)行設(shè)計(jì),如下圖:

9.png


我們可以放入界面當(dāng)中感受一下視覺效果:

10.png



設(shè)計(jì)樣式 – 機(jī)甲風(fēng)格

我們再來進(jìn)階一下,設(shè)計(jì)一個(gè)機(jī)甲元素的的進(jìn)度條。

機(jī)甲風(fēng)格看似裝飾圖形復(fù)雜,設(shè)計(jì)難度復(fù)雜,但其實(shí)我們只需要掌握好 – “提煉元素”這項(xiàng)技能就能完美應(yīng)對機(jī)甲風(fēng)格的設(shè)計(jì)。

我們再回顧對創(chuàng)意設(shè)計(jì)的定義:是把再簡單不過的東西或想法不斷延伸給予的另一種表現(xiàn)方式。這里我們可以理解為將機(jī)甲元素進(jìn)行提煉總結(jié),延伸到彈框設(shè)計(jì)當(dāng)中。例如下圖,漂亮的小姐姐一秒鐘變機(jī)械美女,就是通過對機(jī)械元素延展到模特身上。

11.png12.png13.png

第一步,照一張你喜歡的不錯(cuò)的參考,這里你可以找成熟的界面設(shè)計(jì)作品,也可以找一張不錯(cuò)的關(guān)于機(jī)甲風(fēng)格的參考,以便于自己進(jìn)行元素提取。這里我們以大家熟悉的高達(dá)為例:

14.png



第二部就是元素組合,我們需要提取了我們可能需要的元素,就像我們設(shè)計(jì)時(shí)面對自己手機(jī)素材一樣,這個(gè)時(shí)候我們不要急于立馬去設(shè)計(jì),要仔細(xì)思考其設(shè)計(jì)形式,元素的位置安排。我們還是以以高達(dá)為例,途中我圈出了我可能用到的圖形元素。


15.png



我們從中提取我們需要的圖形,如下圖:


16.png

最后我們我們需要仔細(xì)思考將圖形進(jìn)行組合,多嘗試幾次他們的組合方式。這里我對提取的元素進(jìn)行了二次加工,將圖形一和圖形四進(jìn)行了結(jié)合,打破固有的組合規(guī)律,讓圖形看起來更加生動。

17.png

最后我們可以放入界面當(dāng)中感受一下視覺效果:

18.png



3.總結(jié)

FUI 的設(shè)計(jì)看起來復(fù)雜,難以下手,但其實(shí)也是有規(guī)律可循,我們可以從作品中理性的去分析其中的設(shè)計(jì)細(xì)節(jié),提煉總結(jié),最終再落實(shí)到實(shí)際的設(shè)計(jì)作品當(dāng)中。當(dāng)然最好你能先了解一下它的設(shè)計(jì)理念以及發(fā)展,就像 FUI 是“虛構(gòu)的、未來的、幻想的界面設(shè)計(jì)”一樣。

---來自姜正


轉(zhuǎn)載自簡書

作者:極創(chuàng)設(shè)計(jì)

鏈接:https://www.jianshu.com/p/77665c771153

來源:簡書

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。



藍(lán)藍(lán)設(shè)計(jì)sillybuy.com )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)


css教程:可讀性可維護(hù)性良好的CSS文件

seo達(dá)人

大多數(shù)文章中,我們并未特別注意CSS文件的可維護(hù)與可讀性的問題,當(dāng)完成一項(xiàng)前端的工作之后,許多人都會忘記該項(xiàng)目的結(jié)構(gòu)與細(xì)節(jié)。然而代碼并不是馬上就能完全定型,在余下的時(shí)間里還有不斷的維護(hù)工作,而這些工作也許不會是你自己完成。所以,結(jié)構(gòu)優(yōu)良的代碼能很大程度上優(yōu)化它的可維護(hù)性。下面列出四則技巧提高CSS文件可維護(hù)性的方法,以此作為指南,以一種較好的CSS樣式組織習(xí)慣來進(jìn)行WEB前端開發(fā)。



一、CSS樣式文件分解



對于小項(xiàng)目,在寫代碼之前,按頁面結(jié)構(gòu)或頁面內(nèi)容將代碼分為幾塊并給予注釋。例如,可以分別將 全局樣式、布局、字體樣式、表單、評論和其他分為幾個(gè)不同的塊來繼續(xù)工作。



而對于較大的工程,這樣顯然不會有什么效果。此時(shí),就需要將樣式分解到幾個(gè)不同的樣式表文件。下面的master stylesheet 就是這一方法的例子,它的工作主要是導(dǎo)入其他樣式文件。使用這一方法不僅能優(yōu)化樣式結(jié)構(gòu),而且有利于減少一些不必要的服務(wù)器請求。而分解文件的方法就有許多種,master stylesheet 使用了最常見的一種。



@import "reset.css";

@import "layout.css";

@import "colors.css";

@import "typography.css";

@import "flash.css";

/ @import "debugging.css"; /



同時(shí)對于大型項(xiàng)目,你也可以加上CSS文件的升級標(biāo)志或者一些診斷等其他措施,這里不再詳述。大家注意在實(shí)現(xiàn)工作中總結(jié)與思考,也歡迎多參考webjx.com的相關(guān)文章。



二、為CSS文件建立索引



為了能夠迅速的了解整個(gè)CSS文件的結(jié)構(gòu),在文件開頭建立文件索引是一個(gè)不錯(cuò)的選擇。

一種可行的方法是建立樹形的索引,結(jié)構(gòu)上的id 和 class 都可以成為該樹的一個(gè)分支。



[Layout]

  • body

          + Header / #header

          + Content / #content

                - Left column / #leftcolumn

                - Right column / #rightcolumn

                - Sidebar / #sidebar

                - RSS / #rss

                - Search / #search

                - Boxes / .box

                - Sideblog / #sideblog

          + Footer / #footer

    Navigation         #navbar

    Advertisements         .ads

    Content header         h2



    或者也可以這樣:



    [Contents]

          1. Body

          2. Header / #header

                2.1. Navigation / #navbar

          3. Content / #content

                3.1. Left column / #leftcolumn

                3.2. Right column / #rightcolumn

                3.3. Sidebar / #sidebar

                      3.3.1. RSS / #rss

                      3.3.2. Search / #search

                      3.3.3. Boxes / .box

                      3.3.4. Sideblog / #sideblog

                      3.3.5. Advertisements / .ads

          4. Footer / #footer



    新建一個(gè)前端學(xué)習(xí)qun438905713,在群里大多數(shù)都是零基礎(chǔ)學(xué)習(xí)者,大家相互幫助,相互解答,并且還準(zhǔn)備很多學(xué)習(xí)資料,歡迎零基礎(chǔ)的小伙伴來一起交流。



    另一種方式可以只是先簡單的將內(nèi)容列舉出來,也不需要縮進(jìn)。下面的一個(gè)例子中,如果你需要跳至RSS部分你只需要簡單的搜索。



    [Contents]
    1. Body
    2. Header / #header
    3. Navigation / #navbar
    4. Content / #content
    5. Left column / #leftcolumn
    6. Right column / #rightcolumn
    7. Sidebar / #sidebar
    8. RSS / #rss
    9. Search / #search
    10. Boxes / .box
    11. Sideblog / #sideblog
    12. Advertisements / .ads
    13. Footer / #footer

      /--[8. RSS / #rss]--/

      rss { ... }

      rss img { ... }



      定義這樣一個(gè)樣式檢索可以很有效的使其他人閱讀學(xué)習(xí)你的代碼變得容易。在制作大項(xiàng)目的時(shí)候,你也可以將檢索打印出來從而在你閱讀代碼的時(shí)候方便查閱。您還可以參考下面的文章。



      三、格式化CSS屬性



      當(dāng)我們編寫代碼的時(shí)候,使用一些特殊的編碼風(fēng)格會對提高CSS代碼的可讀性有很大幫助。許多人都有各自不同的編碼風(fēng)格。一部分人習(xí)慣于將顏色和字體的代碼放在前面,另外一部分則更喜歡將類似浮動和定位的更“重要”的屬性放在前面。類似的,也可以將頁面元素按照它在布局中的結(jié)構(gòu)進(jìn)行排序:



          body,

                h1, h2, h3,

                p, ul, li,

                form {

                        margin: 0;

                        padding: 0;

                        border: 0;

                 }



      一些開發(fā)者用一種更為有意思的方法:他們將屬性按首字母的順序排列。值得注意的是,這樣一種方法可能對某些瀏覽器會產(chǎn)生問題。不管自己的格式如何,你要確保你已經(jīng)清晰的定義了這些格式方法。這樣,你的同事在閱讀你的代碼的時(shí)候?qū)兄x你的努力。您還可以參考下面的文章。



      四、合理的利用縮進(jìn)



      為了讓你的代碼給人感覺更為直觀,你可以使用一行來定義大綱元素的樣式。當(dāng)指定的選擇器里的屬性超過三個(gè)的時(shí)候,這種方式將帶來混亂。但是,適度的使用這種方式,你可以很清楚的區(qū)分相同類的不同點(diǎn)。


      main-column { display: inline; float: left; width: 300px; }

          #main-column h1 { margin-bottom: 20px; }

          #main-column p { color: #333; }



      同時(shí),樣式修改的維護(hù)也是個(gè)比較麻煩的問題。很多人修改樣式之后就忘記了,結(jié)果后來又發(fā)現(xiàn)修改的樣式導(dǎo)致了頁面出錯(cuò),不得不苦苦尋找。因此,為修改的樣式構(gòu)建一個(gè)特殊的格式就很必要了。一種很簡單的方式是,給修改過的樣式縮進(jìn),同時(shí),也可以使用一些注釋(比如"@new")來做一個(gè)標(biāo)識。


      sidebar ul li a {

             display: block;

             background-color: #ccc;

                  border-bottom: 1px solid #999; / @new /

             margin: 3px 0 3px 0;

                  padding: 3px; / @new /

      }



      總的來說,只有建立一個(gè)合適的樣式指南才會對樣式表的可讀性有所幫助。記住,移去每一個(gè)對你理解文件沒有幫助的樣式指南,避免對過多的元素使用過多的樣式指南。然后,為了一個(gè)可讀性可維護(hù)性良好的CSS文件而努力吧。不要忘記和webjx.com分享您的經(jīng)驗(yàn),歡迎參與評論


CSS初學(xué):如何修改Zblog中的CSS

seo達(dá)人

在學(xué)習(xí)應(yīng)用css之前我們要先了解一下什么是css。CSS是Cascading Style Sheets(層疊樣式表)的簡稱.


  • CSS語言是一種標(biāo)記語言,它不需要編譯,可以直接由瀏覽器執(zhí)行(屬于瀏覽器解釋型語言).


  • 在標(biāo)準(zhǔn)網(wǎng)頁設(shè)計(jì)中CSS負(fù)責(zé)網(wǎng)頁內(nèi)容(XHTML)的表現(xiàn).


  • CSS文件也可以說是一個(gè)文本文件,它包含了一些CSS標(biāo)記,CSS文件必須使用css為文件名后綴.


  • 可以通過簡單的更改CSS文件,改變網(wǎng)頁的整體表現(xiàn)形式,可以減少我們的工作量,所以她是每一個(gè)網(wǎng)頁設(shè)計(jì)人員的必修課.


  • CSS是由W3C的CSS工作組產(chǎn)生和維護(hù)的.



    新建一個(gè)前端學(xué)習(xí)qun438905713,在群里大多數(shù)都是零基礎(chǔ)學(xué)習(xí)者,大家相互幫助,相互解答,并且還準(zhǔn)備很多學(xué)習(xí)資料,歡迎零基礎(chǔ)的小伙伴來一起交流。



    了解了什么是css后我們就可以方便對其應(yīng)用了,我們可以用以下兩種方式加入你的博客當(dāng)中去,由于css的應(yīng)用方式有就近原則。也就是說最接近目標(biāo)的樣式定義優(yōu)先權(quán)越高。高優(yōu)先權(quán)樣式將繼承低優(yōu)先權(quán)樣式的未重疊定義但覆蓋重疊的定義。



    鏈入外部樣式表文件 (Linking to a Style Sheet)



    你可以先建立外部樣式表文件(.css),然后使用HTML的link對象。示例如下:



    <head>

    <title>文檔標(biāo)題</title>

    <link rel=stylesheet href="http://www.123-seo,cn/dhtmlet.css" type="text/css">

    </head>



    而在XML中,你應(yīng)該如下例所示在聲明區(qū)中加入:



    <? xml-stylesheet type="text/css" href="http://www.123-seo.cn/dhtmlet.css" ?>



    定義內(nèi)部樣式塊對象 (Embedding a Style Block)



    你可以在你的HTML文檔的<HTML>和<BODY>標(biāo)記之間插入一個(gè)<STYLE>...</STYLE>塊對象。 定義方式請參閱樣式表語法。示例如下:



    <html>

    <head>

    <title>文檔標(biāo)題</title>

    <style type="text/css">

    <!--

    body {font: 10pt "Arial"}

    h1 {font: 15pt/17pt "Arial"; font-weight: bold; color: maroon}

    h2 {font: 13pt/15pt "Arial"; font-weight: bold; color: blue}

    p {font: 10pt/12pt "Arial"; color: black}

    -->

    </style>

    </head>

    <body>



    請注意,這里將style對象的type屬性設(shè)置為"text/css",是允許不支持這類型的瀏覽器忽略樣式表單。


css對邊框的屬性控制和鏈接的偽類選擇器

seo達(dá)人

邊框(border): css控制的邊框?qū)傩园╞order-width, border-color, border-style.



Border之所以讓人很困惑主要源于IE5錯(cuò)綜復(fù)雜的BUG, 由于IE5是一個(gè)“will soon be dead” 的瀏覽器, 這里只例舉一個(gè)最為知名的關(guān)于border-width的BUG, 讓大家更好的理解border的含義, 先看下圖:







如上圖所示, 對象A(白色矩形)周圍有藍(lán)色邊框B, 可以看出A的實(shí)際寬度為ef, 而IE5不這么認(rèn)為, 它把cd的長度定義為對象A的寬度, 這個(gè)bug在邊框的寬度小時(shí)幾乎察覺不到, 但在邊框與對象寬度相差不大時(shí)顯得尤為明顯.



新建一個(gè)前端學(xué)習(xí)qun438905713,在群里大多數(shù)都是零基礎(chǔ)學(xué)習(xí)者,大家相互幫助,相互解答,并且還準(zhǔn)備很多學(xué)習(xí)資料,歡迎零基礎(chǔ)的小伙伴來一起交流。



現(xiàn)在, 結(jié)合以上說明, 可以看出border是獨(dú)立于對象之外, 位于magin與padding之間(后說明), 具有固定寬度, 顏色和樣式的區(qū)域.


  1. border-width: 其可有具體數(shù)值(如1px, 2px等)或是描述性(thin, medium, thick)的屬性值. 由于瀏覽器及個(gè)人設(shè)置的不同導(dǎo)致thin, medium, thick這些屬性值的表現(xiàn)不一, 不推薦使用. css代碼如下:



    border-width: 1px;

    border-width: 2px;

    border-width: thin;

    border-width: medium;

    border-width: thick;



    寬度效果如下(注意不同瀏覽器下的區(qū)別):



     1px    2px    thin    medium    thick 


  2. border-style: 邊框樣式包括solid, dashed, dotted, double, groove, ridge, inset, outset等, 代碼如下:



    border-style: solid;

    border-style: dashed;

    border-style: dotted;

    border-style: double;

    border-style: groove;

    border-style: ridge;

    border-style: inset;

    border-style: outset;



    樣式效果如下(你可能需要Firefox或是Opera才能看到后四種效果):



     solid   



     dashed   



     dotted   



     double   



     groove   



     ridge   



     inset   



     outset   


  3. border-color: 邊框顏色屬性和一般顏色屬性是一樣的, 可以參看屬性篇(1).



    Summary: 以上例舉的都是四邊相同樣式的情況, 其實(shí)可以分別設(shè)置border-top, border-right, border-bottom, border-left四邊的屬性, 比方說想要表現(xiàn)一個(gè)寬2px, 藍(lán)色(blue), 樣式為solid的上下邊框, 代碼如下:



    border-top-width: 2px;

    border-top-color: blue;

    border-top-style: solid;

    border-bottom-width: 2px;

    border-bottom-color: blue;

    border-bottom-style: solid;



    簡寫為:



    border-top: blue 2px solid;

    border-bottom: blue 2px solid;



    表現(xiàn)如下:



     寬2px,藍(lán)色,樣式為solid的邊框 



    鏈接(link): 在html里用<a></a>標(biāo)明鏈接, 在css里用a作為鏈接的選擇器名.



    css的缺點(diǎn)和它的優(yōu)點(diǎn)一樣明顯, 其最大的缺陷就在于網(wǎng)頁的動態(tài)表現(xiàn)不足, 在這一點(diǎn)上和Flash差距尤為突出.



    好在css還是留了一手, 那就是鏈接的偽類選擇器, 所謂偽類就是指依賴于瀏覽器或是用戶的狀態(tài). 對于鏈接來講, 存在link, hover, visited, active四種狀態(tài), 即四種偽類選擇器: a:link(存在鏈接, 但無鼠標(biāo)動作), a:visited(被點(diǎn)擊或訪問過), a:hover(鼠標(biāo)懸停于鏈接上時(shí)的狀態(tài)), a:active(鼠標(biāo)點(diǎn)擊與釋放之間的狀態(tài)).



    css便是以這幾個(gè)偽類選擇器實(shí)現(xiàn)了其為數(shù)不多的動態(tài)效果. 目前最為常用的就是導(dǎo)航條和按鈕的動態(tài)顯示. 以下用一個(gè)動態(tài)按鈕的實(shí)例來說明這四個(gè)偽類選擇器.


  4. 首先準(zhǔn)備一副圖片(button.png), 如下圖(160px240px), 其由四幅160px60px的小圖自上而下排列而成.



     






  5. 接著需要往你的本地調(diào)試文件夾(調(diào)試環(huán)境的建立方法參考屬性(1)中的說明)的index.htm中寫入html代碼, 如下:



    <div id=”button”><a href=”#”></a></div>


  6. 在style.css中寫入以下代碼:



    body {background-color: #FFF;}

    button a{

    width:160px;

    height:60px;

    display:block;

    background:url(../image/button.png) no-repeat 0 0;


    button a:link { background-position:0 0;}

    button a:hover { background-position:0 -60px;} 

    button a:active { background-position:0 -120px;}

    button a:visited { background-position:0 -180px;}



    可以看到如 Example2 的效果.


  7. 代碼解釋:



    <div id=”button”><a href=”#”></a></div>



    在index.htm寫入如上代碼, 目的在于插入一個(gè)id名為”button”的盒子(div),且其內(nèi)含有一個(gè)鏈接<a href=”#”></a>.


    button a{

    width:160px;

    height:60px;

    display:block;

    background:url(../image/button.png) no-repeat 0 0;

    }



    在css文件中寫入以上代碼, 目的在于控制盒子中鏈接的表現(xiàn), 通過名為”#button a”的選擇器來實(shí)現(xiàn). 鏈接的寬高為160px*60px, 背景為圖片button.png.



    在這強(qiáng)調(diào)一下display:block的作用. 由于在html文件中,鏈接<a href=”#”> </a>中沒有任何的內(nèi)容(content)填充, 如果沒有聲明”display:block”, 那么即使聲明了選擇器”#button a”的寬高, 瀏覽器也會因?yàn)閔tml文件中沒有內(nèi)容而無法顯示鏈接. 所以”display:block”在這里的作用就在于強(qiáng)制瀏覽器顯示沒有內(nèi)容填充的鏈接. 


    button a:link { background-position:0 0;}



    用偽類選擇器a:link聲明鏈接的背景圖片在左上角顯示, 即距離左邊和頂邊分別0, 0. 但由于已經(jīng)在選擇器 “#button a”中聲明了圖片位置, 此代碼可有可無.


    button a:hover { background-position:0 -60px;} 

    button a:active { background-position:0 -120px;}

    button a:visited { background-position:0 -180px;}



    用偽類選擇器a:hover聲明鼠標(biāo)懸停時(shí), 背景圖片上移60px, 而使排在第二位的綠色小圖片顯示出來;



    用偽類選擇器a:active聲明在鼠標(biāo)點(diǎn)擊與釋放之間的狀態(tài)時(shí), 背景圖片上移120px, 而使排在第三位的紅色小圖片顯示;



    用偽類選擇器a:visited聲明在鏈接被點(diǎn)擊或訪問過時(shí), 背景圖片上移180px, 而使排在第四位的灰色小圖片顯示;



    現(xiàn)在你基本了解了css動態(tài)按鈕的制作過程, 但以上css代碼還存在一個(gè)嚴(yán)重的缺陷, 相信你會很快發(fā)現(xiàn)問題所在——這個(gè)按鈕居然是一個(gè)”一次性按鈕“, 也就是說這個(gè)按鈕在點(diǎn)擊第一次后, 就一直顯示那個(gè)灰色小圖片, 你能想出解決方法嗎?


JavaScript中的this/call/apply/bind

seo達(dá)人

文章目錄

一、this

1.什么是this

2.this 代表什么

3.綁定 this 的方法

4.this的指向

5.改變指向

二、Function.prototype.bind()

三、call/apply

1.定義

2.語法

3.異同

一、this

1.什么是this

this 關(guān)鍵字在大部分語言中都是一個(gè)重要的存在,JS中自然不例外,其表達(dá)的意義豐富多樣甚至有些復(fù)雜,深刻理解this是學(xué)習(xí)JS、面向?qū)ο缶幊谭浅V匾囊画h(huán)。



2.this 代表什么

this代表函數(shù)(方法)執(zhí)行的上下文環(huán)境(上下文,類似與你要了解一篇文章,了解文章的上下文你才能清晰的了解各種關(guān)系)。



但在 JavaScript 中 this 不是固定不變的,它會隨著執(zhí)行環(huán)境的改變而改變。



1.在方法中,this 表示該方法所屬的對象。



2.如果單獨(dú)使用,this 表示全局對象。



3.在函數(shù)中,this 表示全局對象。



4.在函數(shù)中,在嚴(yán)格模式下,this 是未定義的(undefined)。



5.在事件中,this 表示接收事件的元素。



6.類似 call() 和 apply() 方法可以將 this 引用到任何對象。



3.綁定 this 的方法

this的動態(tài)切換,固然為 JavaScript 創(chuàng)造了巨大的靈活性,但也使得編程變得困難和模糊。有時(shí),需要把this固定下來,避免出現(xiàn)意想不到的情況。JavaScript 提供了call、apply、bind這三個(gè)方法,來切換/固定this的指向。



4.this的指向

1.在一般函數(shù)方法中使用 this 指代全局對象



function test(){

this.x = 1;  //這里this就是window

console.log(this.x);

}

test(); // 1



JS規(guī)定,函數(shù)中的this,在函數(shù)被調(diào)用時(shí)確定,它指函數(shù)當(dāng)前運(yùn)行的環(huán)境。



2.作為對象方法調(diào)用,this 指代上級對象



var x =3;

function test(){

alert(this.x);

}

var o = {

  x:1,

  m:test 

};

o.m(); // 1



如果函數(shù)作為對象的方法時(shí),方法中的 this 指向該對象。



3.作為構(gòu)造函數(shù)調(diào)用,this 指代new 出的對象



function test(){

console.log(this);

}

var o = new test();

       test();

//可以看出o代表的不是全局對象



new關(guān)鍵詞的作用是調(diào)用某個(gè)函數(shù)并拿到其中的返回值,只是調(diào)用過程稍特殊。在上面的代碼實(shí)例中。test函數(shù)被new關(guān)鍵詞調(diào)用時(shí),內(nèi)部依次執(zhí)行了以下步驟:



(1)創(chuàng)建一個(gè)空對象。



(2)將這個(gè)空對象的原型,指向這個(gè)構(gòu)造函數(shù)的prototype。



(3)將空對象的值賦給函數(shù)內(nèi)部的this(this就是個(gè)空對象了)。



(4)執(zhí)行函數(shù)體代碼,為this這個(gè)對象綁定鍵值對。



(5)返回this,將其作為new關(guān)鍵詞調(diào)用oop函數(shù)的返回值。



所以構(gòu)造函數(shù)中的this,依舊是在構(gòu)造函數(shù)被new關(guān)鍵詞調(diào)用時(shí)確定其指向,指向的是當(dāng)前被實(shí)例化的那個(gè)對象。



4.箭頭函數(shù)中的this

箭頭函數(shù)是ES6的新特性,最重要的特點(diǎn)是它會捕獲其所在上下文的this作為自己的this,或者說,箭頭函數(shù)本身并沒有this,它會沿用外部環(huán)境的this。也就是說,箭頭函數(shù)內(nèi)部與其外部的this是保持一致的。



this.a=20

var test={

    a:40,

    init:()=>{

        console.log(this.a)

        function go(){

            this.a=60

            console.log(this.a)

        }

        go.prototype.a=50

        return go

    }   

}



var p=test.init()

p()

new (test.init())()

//輸出 20 60 60 60



5.改變指向

this的動態(tài)切換,固然為 JavaScript 創(chuàng)造了巨大的靈活性,但也使得編程變得困難和模糊。有時(shí),需要把this固定下來,避免出現(xiàn)意想不到的情況。JavaScript 提供了call、apply、bind這三個(gè)方法,來切換/固定this的指向。



bind方法和apply、call稍有不同,bind方法返回一個(gè)新函數(shù),以后調(diào)用了才會執(zhí)行,但apply、call會立即執(zhí)行。



二、Function.prototype.bind()

bind()方法主要就是將函數(shù)綁定到某個(gè)對象,bind()會創(chuàng)建一個(gè)函數(shù),函數(shù)體內(nèi)的this對象的值會被綁定到傳入bind()中的第一個(gè)參數(shù)的值,例如:f.bind(obj),實(shí)際上可以理解為obj.f(),這時(shí)f函數(shù)體內(nèi)的this自然指向的是obj;



示例:



function f(y, z){

    return this.x + y + z;

}

var m = f.bind({x : 1}, 2);

console.log(m(3));

//6

1

2

3

4

5

6

這里bind方法會把它的第一個(gè)實(shí)參綁定給f函數(shù)體內(nèi)的this,所以這里的this即指向{x : 1}對象,從第二個(gè)參數(shù)起,會依次傳遞給原始函數(shù),這里的第二個(gè)參數(shù)2,即是f函數(shù)的y參數(shù),最后調(diào)用m(3)的時(shí)候,這里的3便是最后一個(gè)參數(shù)z了,所以執(zhí)行結(jié)果為1 + 2 + 3 = 6分步處理參數(shù)的過程其實(shí)是一個(gè)典型的函數(shù)柯里化的過程(Curry)。



三、call/apply

1.定義

每個(gè)函數(shù)都包含兩個(gè)非繼承而來的方法:call()方法和apply()方法。



call和apply可以用來重新定義函數(shù)的執(zhí)行環(huán)境,也就是this的指向;call和apply都是為了改變某個(gè)函數(shù)運(yùn)行時(shí)的context,即上下文而存在的,換句話說,就是為了改變函數(shù)體內(nèi)部this的指向。



2.語法

call()



調(diào)用一個(gè)對象的方法,用另一個(gè)對象替換當(dāng)前對象,可以繼承另外一個(gè)對象的屬性,它的語法是:



Function.call(obj[, param1[, param2[, [,...paramN]]]]);

1

obj:這個(gè)對象將代替Function類里this對象

params:一串參數(shù)列表



說明:call方法可以用來代替另一個(gè)對象調(diào)用一個(gè)方法,call方法可以將一個(gè)函數(shù)的對象上下文從初始的上下文改變?yōu)閛bj指定的新對象,如果沒有提供obj參數(shù),那么Global對象被用于obj。



apply()



和call()方法一樣,只是參數(shù)列表不同,語法:



Function.apply(obj[, argArray]);



obj:這個(gè)對象將代替Function類里this對象

argArray:這個(gè)是數(shù)組,它將作為參數(shù)傳給Function



說明:如果argArray不是一個(gè)有效數(shù)組或不是arguments對象,那么將導(dǎo)致一個(gè)TypeError,如果沒有提供argArray和obj任何一個(gè)參數(shù),那么Global對象將用作obj。



3.異同

相同點(diǎn)



call()和apply()方法的相同點(diǎn)就是這兩個(gè)方法的作用是一樣的。都是在特定的作用域中調(diào)用函數(shù),等于設(shè)置函數(shù)體內(nèi)this對象的值,以擴(kuò)充函數(shù)賴以運(yùn)行的作用域。



一般來說,this總是指向調(diào)用某個(gè)方法的對象,但是使用call()和apply()方法時(shí),就會改變this的指向,看個(gè)例子:



function add(a, b) {

    return a + b;

}



function sub(a, b) {

    return a - b;

}



console.log(add.call(sub, 2, 1));//3



為什么add.call(sub, 2, 1)的執(zhí)行結(jié)果是3呢,因?yàn)閏all()方法改變了this的指向,使得sub可以調(diào)用add的方法,也就是用sub去執(zhí)行add中的內(nèi)容,再來看一個(gè)例子:



function People(name, age) {

    this.name = name;

    this.age = age;

}



function Student(name, age, grade) {

    People.call(this, name, age);

    this.grade = grade;

}



var student = new Student('小明', 21, '大三');

console.log(student.name + student.age + student.grade);//小明21大三



在這個(gè)例子中,我們并沒有給Student的name和age賦值,但是存在這兩個(gè)屬性的值,這還是要?dú)w功于call()方法,它可以改變this的指向。

在這個(gè)例子里,People.call(this, name, age);中的this代表的是Student,這也就是之前說的,使得Student可以調(diào)用People中的方法,因?yàn)镻eople中有this.name = name;等語句,這樣就將name和age屬性創(chuàng)建到了Student中。



總結(jié)一句話就是call()可以讓括號里的對象來繼承括號外函數(shù)的屬性。



至于apply()方法作用也和call()方法一樣,可以這么寫:



People.apply(this, [name, age]);

1

或者這么寫:



People.apply(this, arguments);

1

在這里arguments和[name, age]是等價(jià)的。



不同點(diǎn)



從定義中也可以看出來,call()和apply()的不同點(diǎn)就是接收參數(shù)的方式不同。



1.apply()方法接收兩個(gè)參數(shù),一個(gè)是函數(shù)運(yùn)行的作用域(this),另一個(gè)是參數(shù)數(shù)組。

2.call()方法不一定接受兩個(gè)參數(shù),第一個(gè)參數(shù)也是函數(shù)運(yùn)行的作用域(this),但是傳遞給函數(shù)的參數(shù)必須列舉出來。



在給對象參數(shù)的情況下,如果參數(shù)的形式是數(shù)組的時(shí)候,比如之前apply()方法示例里面?zhèn)鬟f了參數(shù)arguments,這個(gè)參數(shù)是數(shù)組類型,并且在調(diào)用Person的時(shí)候參數(shù)的列表是對應(yīng)一致的(也就是Person和Student的參數(shù)列表前兩位是一致的)就可以采用apply()方法。



但是如果Person的參數(shù)列表是這樣的(age,name),而Student的參數(shù)列表是(name,age,grade),這樣就可以用call()方法來實(shí)現(xiàn)了,也就是直接指定參數(shù)列表對應(yīng)值的位置Person.call(this,age,name)。


Web前端學(xué)習(xí)—如何在網(wǎng)頁中插入字體圖標(biāo)詳細(xì)步驟

seo達(dá)人

一、什么是字體圖標(biāo)

字體圖標(biāo):簡單的說,就是一種特殊的字體,通過這種字體,顯示給用戶的就像一個(gè)個(gè)圖片一樣,但它的本質(zhì)是文字。目前在移動端應(yīng)用比較廣泛!







二、字體圖標(biāo)的使用步驟

這里以阿里巴巴矢量圖標(biāo)庫為例!??!



sep1:

百度搜索iconfont,找到阿里巴巴矢量圖標(biāo)庫官網(wǎng)



網(wǎng)址在這里https://www.iconfont.cn/

進(jìn)去之后注冊或登錄,共有3種登錄方式,在這里我使用新浪微博賬號登錄





好了,登錄之后我們就可以在里面選擇自己想要的字體圖標(biāo)啦?。?!那么,如何選擇下載并應(yīng)用到自己的項(xiàng)目中呢??別著急,跟著我走!



sep2:下載字體圖標(biāo)字體庫

在這里我們可以根據(jù)自己的需求輸入相應(yīng)的關(guān)鍵字進(jìn)行搜索(中英文都可以)



鼠標(biāo)放上去,然后就可以把自己喜歡的寶貝加入購物車?yán)玻?br />


網(wǎng)購的趕腳有木有,

我知道,看到這里大家就該有疑問了,

還要花錢買嗎?

放心!

答案是:不需要!



我們選的東西都在購物車?yán)锢玻?br />


打開購物車,就能看到你選的圖標(biāo)了?。?br />
接下來你要做的是把它們下載到本地。



由于要在網(wǎng)頁中使用

在這里我們選擇 下載代碼



下載后將壓縮包解壓,為了方便后續(xù)使用我們改一下文件夾名稱,在這里我改為 icon (注意:在HTML中導(dǎo)入路徑時(shí),記得帶上你所改的文件夾名稱)



打開之后你會發(fā)現(xiàn)里面有不同類型的文件(建議都不要?jiǎng)h除)



打開后綴名為.html的這個(gè)文件(可以更直觀地查看自己下載的字體圖標(biāo))







step3:在項(xiàng)目中引用字體圖標(biāo)

不要走開,重點(diǎn)來了?。?!

官方提供了三種引用方法(下面對應(yīng)的都有步驟)





Unicode 引用

Unicode 是字體在網(wǎng)頁端最原始的應(yīng)用方式,特點(diǎn)是:

兼容性最好,支持 IE6+,及所有現(xiàn)代瀏覽器。

支持按字體的方式去動態(tài)調(diào)整圖標(biāo)大小,顏色等等。

但是因?yàn)槭亲煮w,所以不支持多色。只能使用平臺里單色的圖標(biāo),就算項(xiàng)目里有多色圖標(biāo)也會自動去色。

注意:新版 iconfont 支持多色圖標(biāo),這些多色圖標(biāo)在 Unicode 模式下將不能使用,如果有需求建議使用symbol 的引用方式

Unicode 使用步驟如下

第一步:拷貝項(xiàng)目下面生成的 @font-face

@font-face { font-family: 'iconfont'; src: url('iconfont.eot'); src: url('iconfont.eot?#iefix') format('embedded-opentype'), url('iconfont.woff2') format('woff2'), url('iconfont.woff') format('woff'), url('iconfont.ttf') format('truetype'), url('iconfont.svg#iconfont') format('svg'); }

第二步:定義使用 iconfont 的樣式

.iconfont { font-family: "iconfont" !important; font-size: 16px; font-style: normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }

第三步:挑選相應(yīng)圖標(biāo)并獲取字體編碼,應(yīng)用于頁面

<span class="iconfont">&#x33;</span>



font-class 引用

font-class 是 Unicode 使用方式的一種變種,主要是解決 Unicode 書寫不直觀,語意不明確的問題。

與 Unicode 使用方式相比,具有如下特點(diǎn):

兼容性良好,支持 IE8+,及所有現(xiàn)代瀏覽器。

相比于 Unicode 語意明確,書寫更直觀。可以很容易分辨這個(gè) icon 是什么。

因?yàn)槭褂?class 來定義圖標(biāo),所以當(dāng)要替換圖標(biāo)時(shí),只需要修改 class 里面的 Unicode 引用。

不過因?yàn)楸举|(zhì)上還是使用的字體,所以多色圖標(biāo)還是不支持的。

使用步驟如下:

第一步:引入項(xiàng)目下面生成的 fontclass 代碼:

<link rel="stylesheet" href="./iconfont.css">

第二步:挑選相應(yīng)圖標(biāo)并獲取類名,應(yīng)用于頁面:

<span class="iconfont icon-xxx"></span>



symbol 引用

這是一種全新的使用方式,應(yīng)該說這才是未來的主流,也是平臺目前推薦的用法。相關(guān)介紹可以參考這篇文章 這種用法其實(shí)是做了一個(gè) SVG 的集合,與另外兩種相比具有如下特點(diǎn):

支持多色圖標(biāo)了,不再受單色限制。

通過一些技巧,支持像字體那樣,通過 font-size, color 來調(diào)整樣式。

兼容性較差,支持 IE9+,及現(xiàn)代瀏覽器。

瀏覽器渲染 SVG 的性能一般,還不如 png。

使用步驟如下:

第一步:引入項(xiàng)目下面生成的 symbol 代碼:

<script src="./iconfont.js"></script>

第二步:加入通用 CSS 代碼(引入一次就行):

<style> .icon { width: 1em; height: 1em; vertical-align: -0.15em; fill: currentColor; overflow: hidden; } </style>

第三步:挑選相應(yīng)圖標(biāo)并獲取類名,應(yīng)用于頁面:

<svg class="icon" aria-hidden="true"> <use xlink:href="#icon-xxx"></use> </svg>



下面,我就跟大家詳細(xì)說說 font-class 引用的引用方式:



打開編輯器(在這里我使用的是 VS Code編輯器),新建一個(gè)項(xiàng)目文件夾(demo)





將解壓后的字體圖標(biāo)文件夾(icon)直接放到demo目錄下





在demo文件夾下面新建一個(gè)html文件 demo.html



導(dǎo)入icon文件夾里面的外部樣式表

<link rel="stylesheet" href="./icon/iconfont.css">



iconfont.css 里面就是我們下載的字體圖標(biāo)的所有css樣式了,我們打開看看吧!

你會發(fā)現(xiàn)里面有一個(gè) iconfont類名(這里劃重點(diǎn)!后面要用),它是所有字體圖標(biāo)的公用樣式。





這時(shí)我們就可以在頁面中使用這些字體圖標(biāo)啦!上面我們只是導(dǎo)入了整個(gè)css樣式表,現(xiàn)在我們要針對性地把某個(gè)圖標(biāo)引用到html頁面中,并在網(wǎng)頁中顯示出來。

下面 我們就開始寫頁面的主體部分吧!



<p> 我有一個(gè)夢想:能夠擁有一套 <span class="iconfont icon-home"></span> </p>

這里的span標(biāo)簽里面放的就是要用的某個(gè)字體圖標(biāo)了,你會發(fā)現(xiàn)它用了兩個(gè)class類名。

第一個(gè)是iconfont,也就是我前面劃的重點(diǎn)(到這里不明白的話,可以再回頭看看)

第二個(gè)是icon-home,這個(gè)類名從何而來呢?

來,繼續(xù)往下看,再次打開icon文件夾下的



話不多說,直接看圖



是不是對應(yīng)上啦!簡單地說就是你要用那個(gè)圖標(biāo)就添加它的class類名。



到這里,恭喜你已經(jīng)學(xué)會了如何在網(wǎng)頁中插入字體圖標(biāo)啦?。?!

那么,趕快運(yùn)行一下看看效果吧!



到這里是不是還滿足不了你的需求,會有這樣的疑問:如果是這樣的效果,跟一張圖片有什么區(qū)別呢???

當(dāng)然不是啦!

之所以叫做字體圖標(biāo),顧名思義,它在網(wǎng)頁中就是一種字體的存在,不過它比普通字體長得好看些有木有!

我們可以像更改文字樣式一樣去更改它的樣式,比如說 大小、顏色、陰影…



Symbol 引用方式還可以實(shí)現(xiàn)下面原圖標(biāo)的彩色效果哦!可以自己照著官方提供的步驟試試看





下面附上Font class引用方法的 源代碼 供參考

前面的步驟一定要看?。?!

如果前期工作沒做的話,直接用我的源代碼是實(shí)現(xiàn)不了的。



<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>字體圖標(biāo)</title>

    <link rel="stylesheet" href="./icon/iconfont.css">

    <style>

        .iconfont{

            font-size: 200px;

            color: palevioletred;

            text-shadow: 18px 17px 17px gray;

        }

    </style>

</head>

<body>

    <p>

        我有一個(gè)夢想:能夠擁有一套

        <span class="iconfont icon-home"></span>

    </p>

</body>

</html>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

花費(fèi)了很長時(shí)間整理出來的。

很簡單是不是?。?!

看到這里還不會的話,建議重新再看一遍!



其中有錯(cuò)誤的話,還請指出,我會虛心接受并改正?。。?br />
————————————————

版權(quán)聲明:本文為CSDN博主「Humy.」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/weixin_42678796/article/details/104569773

日歷

鏈接

個(gè)人資料

存檔