午夜勾魂曲-午夜福利自怕-午夜福利在线观看6080-午夜福利院电影-国产精品毛片AV久久97-国产精品麻豆高潮刺激A片

首頁

實戰:如何利用柵格系統做響應式設計- 后臺設計經驗總結(2)

鶴鶴


左右布局響應策略動態演示。考慮到gif被壓縮后效果不理想,所以做了一小段視頻來幫助大家更好的理解響應策略。視頻如果看著不清晰,選擇清晰度為1080p藍光觀看即可

Image title

Image title

一、什么是響應式?

按照本人自己的理解,響應式就是通過合理的設計方案配合規范的技術實現策略,使同一個Web頁面在各個終端(設備)不同分辨率屏幕上都能有最佳的用戶體驗。

Image title

這里說是用戶體驗而不是視覺效果是因為用戶體驗包含了性能、交互、效率等多方面內容,也就是說,對于一個線上的響應式頁面,我們不僅要關注視覺上看到的,也要關注我們操作、使用時的感受,這些綜合因素最終影響著用戶使用后臺系統時的效率與體驗。而這里我提到的“合理的設計方案”就是本篇文章跟大家分享的重點:如何利用柵格系統完成后臺頁面的響應式設計。對于交互與性能方面內容,本篇文章不做介紹,因為兩者涉及到我不太了解的技術相關知識。我提出這個觀點主要希望大家在執行設計時,能有更全局的考慮,多跟交互與開發溝通,協力打造更好的用戶體驗



三、響應式的目的是什么?


后臺系統做響應式設計的目的:提高屏幕利用率,最大化操作效率


1、提高屏幕利用率最簡單的理解就是在大屏幕上顯示更多內容,在小屏幕上通過數據篩選展示關鍵信息。一直以來大家普遍認為移動端碎片化嚴重,但實際上桌面端設備的分辨率也是有著不太均勻的分布,而隨著新設備的更新,更多高分辨率屏幕不斷加入,這種碎片化的趨勢會更加明顯,因而要想利用好每一塊屏幕,讓不同分辨率的用戶都有好的體驗,顯然傳統固定的布局是做不到了。

Image title


2、后臺系統的應用特性,決定了響應式在后臺設計中具有很高的實用價值。后臺系統有兩大主要功能:查看與操作。查看主要是各種數據,是系統自動生成的內容;操作是需人工干預、人工決策的任務,查看的數據為操作提供了依據,而操作支撐了公司或部門業務的正常運行。所以后臺系統設計最基礎的目標之一是如何通過良好的數據展示幫助用戶提高操作、決策效率,而充足的展示空間顯然是實現這一目標的基礎,響應式設計通過為每個分辨率設定合理的版式布局,使數據在每塊屏幕上都盡可能展示的最佳。優化后的數據展示,幫助用戶更獲取信息,從而提高了用戶使用后臺系統的效率與體驗。

Image title



四、為何要利用柵格系統來進行響應式設計


響應式可以響應的前提有兩點:1、頁面布局具有規律性、2、元素寬高可用百分比代替固定數值,而這兩點正是柵格系統本身就具有的典型特點,所以利用柵格系統進行響應式的設計是順理成章的,也比較快捷,所以響應式與柵格化天生一對好搭檔


柵格系統頁面布局具有規律性、元素寬高可用百分比表示

Image title



五、利用柵格系統完成后臺頁面響應式設計的步驟


1、確立設計稿基準尺寸


設計稿基準尺寸是指我們從哪一個分辨率開始設計,也就是我們新建畫板時畫板的尺寸應該是多大。而這個尺寸確定的主要依據是我們后臺系統所面向的主要用戶的屏幕分辨率;我們分兩大類情況來討論這個問題。


(1)、如果我們的系統是給公司內部員工使用,由于公司批量采購設備的原因,公司內部員工的屏幕分辨率往往會比較統一,這種情況下我們需要拿到這個數據,然后以它作為基準尺寸開始設計。因為雖然響應式設計的目標是讓頁面在每個分辨率下都有最佳的體驗,但實際開發中畢竟存在損壞,設計還原很難100%,因而大多數情況下還是基于基準尺寸的設計與開發,在用戶端顯示效果最佳、體驗最好

(2)、如果我們的系統是平臺級面向全網用戶,或者雖然是公司內部使用,但是并不能統計到內部員工屏幕分辨率情況,就可以以1440*900作為基準尺寸開始設計。從統計數據來看,目前國內PC端用戶屏幕分辨率排名前三的分別是1920*1080、1366*768、1400*900;1440的尺寸實際上是處于中間位置,如果以它為基準設計,最終向上向下響應適配后,相對誤差最小,從而達成用戶體驗的最大公約數。

Image title



2、確定頁面布局結構


頁面的布局結構,是頁面基本框架,后續的設計都是在這個大的框架下完成的,所以確定頁面基準設計尺寸后,需要跟交互設計師或產品經理配合,根據實際業務情況討論確定頁面布局結構。一般來講,后臺系統有兩種最典型的頁面布局結構:左右布局與上下布局(這兩種布局是最典型也是最基礎的布局形式,其余布局,下期內容講)


上下布局

Image title

上下布局的結構在傳統網頁中非常常見,而在后臺系統中并不常用。這種布局的優點是符合用戶認知,遵循用戶從上而下瀏覽頁面獲取信息的習慣;貫穿全屏的導航欄設計也使頁面顯得正式穩重,除卻導航欄之后相對較大的空間也為內容展示提供了比較充足的空間。缺點是頂部一級導航受頁面寬度限制,數量會比較局限,同時導航層級較深時,交互效率也不夠理想。所以該布局適合那些導航層級較少,內容展示充分的后臺系統設計


左右布局

Image title

擁有側邊導航的左右布局頁面結構,是在后臺系統中更常見的頁面布局形式。側邊導航欄可以固定也可以收起,相對比較靈活,同時文字橫向排列的形式可以在豎向上展示更多內容,因此側邊導航比頂部導航能容納更多一級內容,而層疊式的內容展示也使得一、二、三級導航內容關聯更為順暢,可擴展性也得到加強;由于側邊欄可以常駐在頁面左側,所以對于右側內容的指示性也優于頂部導航,切換起來也更加方便。但同時,因為側邊欄的常駐,導致右側內容區域空間被擠掉部分,所以相對上下布局的結構,左右布局的結構,內容區域空間會比較小;一般為了與頁面其它區域做區分,導航部分會用更深的顏色、安排更多的圖標和文字,這也導致了在視覺上左右布局的頁面不夠平衡,會有左邊重右邊輕的感覺。


3、對內容區域建立柵格系統


根據不同的布局類型,對頁面內容區域建立柵格系統。對于一個利用柵格系統做響應式設計的頁面來講,主要有三大數值需要規范:Column、Gutter、Margin;對于Column、Gutter我們在上一期內容中已經有很詳細的介紹,不再贅述,而Margin是頁邊距,主要確定了內容區域距離頁面邊緣的距離,它分布在內容區域的兩側,主要作用是通過留白把內容區域與周圍環境隔離出來,從而突出內容區域的顯示,此外還可通過Margin值來調整內容區域顯示比例,使頁面在視覺上有更好的呈現效果。所以一個用于響應式的柵格系統事實上由Columns、Gutters、Margins三部分組成。


上下布局結構與其對應的柵格系統

Image title


左右布局結構與其對應的柵格系統

Image title


4、根據實際業務內容確定盒子(Box)比例


上下布局結構的盒子

Image title


左右布局結構的盒子

Image title


5、確定響應策略


響應策略就是當視窗(Viewport)發生變化時,內容區域的元素如何去響應,具體到我們當前的柵格系統,就是Columns、Gutters、Margins以及由Columns跟Gutter組成的盒子(BOX)四者的值(主要是寬度)如何變化,以及在這種變化之下我們頁面的布局如何調整。


為了方便直觀的向開發工程師與團隊里的其它小伙伴溝通,我們可以把這個響應策略制作成如下的表格,并在頁面中標注說明相關元素的變化規律,供自己與開發參考。


由于帶左側導航的響應式規則相對復雜,所以我先以它為例跟大家交流下響應策略如何制定


左右布局響應策略表

Image title


如圖,響應式是以視窗的最小寬度作為基本依據來制定每種寬度下Columns、Gutters、與Margins的響應策略,也就是說Viewport Min-width是做出響應的觸發條件,視窗每達到一個最小寬度,就會觸發該寬度下預設的頁面布局方式,而每種布局都是在該寬度下的最佳布局,也是因此,響應式才會在各種復雜分辨率條件下都能給用戶比較好的體驗。


每個視窗寬度的最小值是觸發響應的關鍵值,因此我們給這些用于觸發的關鍵值起了個名字叫“Breakpoint”,每個Breakpoint觸發一種響應策略,而每個策略持續(保持)的寬度范圍就是圖中綠色矩形的范圍。以圖中第二行矩形為例,該矩形代表的響應策略是:欄目數是8、水槽寬度16(SM)、頁邊距32、側邊欄收起且僅展示圖標,當點擊側邊欄展開圖標時側邊欄以Push的方式展開,該策略觸發的Breakpoint是768,保持范圍是577~768。也就是當視窗寬度縮放至768時,欄目數量由上一級的12變為8,水槽寬度由24變為16,側邊導航由完全展開狀態自動收起文字部分,僅保留圖標,然后保持這些關鍵數值不變,直到視窗寬度達到另一個Breakpoint。需要特殊說明的是,第一行矩形中0~576(Min&Fixed)這個范圍的視窗寬度是固定的,也就是在該套響應策略中,頁面最小響應到576的頁面寬度,當視窗到達這個寬度時,瀏覽器會限制視窗進一步縮小,因為當頁面寬度比它還小時已經無法有效展示數據了,所以進一步的縮放是毫無意義的。


左右布局響應策略動態演示

考慮到gif被壓縮后顯示效果不理想,所以我做了一小段視頻來幫助大家更好的理解上述響應策略在實際頁面中如何發揮作用。視頻如果看著不清晰,選擇清晰度為1080p藍光觀看即可


左右布局響應策略標注

Image title


對于上下布局的后臺系統我們根據內容區域(Container)寬度定義的不同方式,可以把它們分為兩類:


1、內容區域定寬的后臺系統( Fixed-width Container )


內容區域定寬是指內容區域在每一組視窗寬度區間內,都會設定一個最大值(Max-with),當內容區域寬度小于最大值時,區域內元素會響應視窗的變化;達到最大值后,內容區域不再響應視窗的變化,而是寬度保持該最大寬度值不變,此時我們通過增加頁面兩側的margin值來響應視窗的變化。Flex Margin就是應對此情況的動態頁邊距。

Image title


 上下布局響應策略表(內容區域定寬( Fixed-width Container ))

Image title


2、內容區域寬度流式 (fluid-width Container) 


內容區域寬度流式 (fluid-width Container) 的后臺系統,它的內容區域 (Container) 距離頁面兩側的頁邊距Margin是定值,因此視窗有多大內容區域就展示多大。




Q&A


1、后臺系統必須做成響應式么?


并不是必須的,是否要做響應式主要是根據后臺產品面向的用戶來定的。如果是公司內部使用的系統,且員工配備的桌面設備都是有統一的分辨率,就可以不做響應式;如果是面向全網用戶的后臺產品(比如淘寶商家的后臺管理系統,阿里云的控制臺)或公司(部門)內部的桌面設備并沒有統一的分辨率規格,那么就需要做成響應式。當然了,更實際的環境中是否做響應式還有技術實現、時間、人員成本等各方面因素的考慮,有時為了盡快的讓業務運營起來,后臺系統會做的比較“簡陋”



2、為什么柵格系統沒有適配到移動端的分享?


因為后臺管理系統的使用場景主要是工作時間在桌面設備上使用,由于龐雜的數據內容在移動設備上展示困難、操作不便,因而很少有公司會把后臺系統響應到移動端使用,所以我們今天說的后臺響應式僅針對桌面設備屏幕。



3、對于iMac4k、5K這類超高分辨率的屏幕如何做響應式設計?


對于左右布局的后臺系統,實際上它是全屏展示的,也就是屏幕有多大就展示多大,因而iMac的響應策略也是按照左右布局響應策略表里的策略來響應對于上下布局,內容區域定寬的后臺系統,iMac的響應策略使用上下布局響應策略表里的策略來響應即可;


對于內容區域寬度流式的后臺系統,iMac的響應策略可以參考左右布局的響應策略表來處理欄目、水槽的變化,頁邊距保持定值即可。



4、在以8為原子單位的柵格中,Margin需要按8n的規律變化么?


能以8n的規律變化是最好的,如果無法做到也可以使用其它數值。Margin是頁邊距,主要作用是通過留白的方式將頁面內容區域與周圍環境隔離區分出來,從而突出內容;一般我們會優先考慮內容區域匹配8n的變化規律,安排完內容區域后剩余的空間自然成為頁邊距(margin)



5、響應策略制定的時機是什么?如何去制定?文中示例的策略表我可以借鑒套用么?


響應策略表一般是在主要頁面設計完成,要交付開發實現的時候來跟開發一起商定。這塊需要注意兩點:


1、如果開始設計時就已確定頁面是要具備響應式的能力,那么最好開始設計時就去跟開發溝通,看他們現有技術是如何來做響應式的,因為他們很有可能是在用Bootstrap、Foundation這類組件庫來做開發,而這些組件庫一般都有自己現成的響應規則,這種情況下我們需要了解開發他們的規則,讓自己的設計匹配已有的策略。當然了,如果他們的規則并不能很好滿足我們的業務需要,一般也是可以在這些組件的基礎上讓開發去修改調整的。


2、響應策略表只是對響應方式的結果的呈現,而這個策略的制定事實上是從設計開始執行時就要去考慮的,從我個人經驗來講,我一般會挑兩類頁面來做響應策略的研究與適配,一個是控制臺(Dashboard)頁面,另一個是表單(Form)頁面。優先規劃這兩個頁面的設計,考慮他們在各個Viewport下如何布局如何展示如何縮放變化,并且跟開發溝通想法,聽取意見,制定初步的響應計劃,當這兩個頁面設計完成,就可以更大范圍的執行設計。


3、文中示例的策略表是基于我自己項目經驗總結而來,具有實際應用價值,可以借鑒。但我更想做的是通過那個表希望跟大家分享一種與開發交流、溝通的方法和技巧。實際工作中我們并非一定要做出那么一個經過精心設計細致考慮的表,我們可能會找張紙畫一畫給開發看就可以了,這塊的重點是如何把我們設計師的想法更可視化更直觀準確的傳達給開發工程師。所以那張表是啟發而非標準。


控制臺(Dashboard)頁面示例(素材圖片作者:Coderthemes)

Image title


表單(Form)頁面示例

Image title

轉自UI中國-BYMD



柵格系統及其在后臺設計中的應用—后臺設計經驗總結01

鶴鶴

關于柵格系統文章不少,但鮮有專門針對柵格系統在后臺設計中相關應用的介紹。本文拋磚引玉,希望引起更多同行的交流與討論

Image title

Image title


柵格系統的目的


柵格系統在頁面排版布局、尺寸設定方面給了設計者直觀的參考,它讓頁面設計變得有規律,從而減少了設計決策成本;柵格化提高了頁面布局的一致性跟復用性;避免了設計師與開發者在細節上的反復溝通確認,從而提升了整個設計開發流程的效率、并能幫助開發者實現較為理想的設計還原。

但實際應用中,由于對柵格系統理解的不充分,很多設計師在應用柵格系統的實踐中產生了各種問題,本來幫助設計的工具現在反而成了設計中需要解決的問題。結合我自己后臺設計的經驗,本篇文章跟大家聊聊柵格系統在后臺設計中如何應用。



建立柵格系統的方法與規則


1、第一步:確立柵格系統的原子單位(網格)


如圖,一個比較完整的柵格系統是由許多規格一致的小網格組成,這些網格輔助我們更規范的排版、布局。

Image title

后臺系統設計中,由于后臺頁面主要以Web形式呈現,而對于web,用戶已習慣通過鼠標滾輪或滾動條(scrollbar)來縱向瀏覽頁面內容,因此,在不考慮內容優先級的情況下,Web可以實現豎直方向的“無限”加載,即豎直方向可以無限延伸,因此基于Web的后臺頁面,它的柵格系統在水平方向的柵格可以不體現出來,我們在執行設計時只要在豎直方向保持規律的變化就可以了。標準的柵格系統簡化為適用于Web后臺的設計如下圖所示

Image title

如上圖,對于后臺設計來講,柵格系統是由欄目(Column)跟水槽(Gutter)交替分布形成的,欄目(Column)是接納網頁內容的容器,水槽(Gutter)用來調節相鄰兩個欄目間距,把控頁面留白;由于欄目跟水槽的寬度是以網格作為基本單位來增加或者減小,所以柵格化的第一步需要先定義好柵格的原子單位“網格”的大小。根據本人的設計實踐以及其它已有規范經驗,目前后臺柵格系統網格大小定義為8是最普適易用的。具體原因有以下幾點:


(1)目前主流桌面設備的屏幕分辨率在豎直與水平方向基本都可以被8整除,使用8作為最小原子足夠普適.


我們選取4、6、8、10、12為柵格的候選原子單位,然后用目前主流屏幕分辨率與其相除,判斷各個分辨率在豎直(Y)與水平 (X)方向能否被候選原子整除,統計結果如圖。

Image title

顯然,對于目前市場桌面設備屏幕而言,4是整除率最高的一個原子,接下來依次是8、10、6、12。但4作為基本原子實在過于小了,太小的步進單位將導致我們決策成本的增加,因為我們將元素間間距增加4px或者減小4px視覺感受到的差異并不明顯,這種情況下我們為了找到那個“合適、滿意”的間距,就需要反復調試,這就造成了時間上的浪費,尤其對于沒有經驗的新人,這點會更為突出。但這種調整并不合適,原因是后臺管理系統設計重點在于面向用戶使用的效率與邏輯,其次才是視覺呈現,使用柵格系統的目的之一也是想減少設計師在“細節”上的糾結,希望設計師站在更全局的角度看待設計,合理安排時間,因此我們舍棄4。在剩下的6、8、10、12四個單位中,8的整除率最高(80%),以8像素作為一個步進單位的變化,我們視覺上也是能感受到較為明顯的差異,因此選取整除率最高的8做為柵格系統的原子單位。



(2)以8為單位符合“偶數原則”。偶數原則可以在頁面縮放中的避免類似于0.5、0.75、1.25等次像素的出現,從而使頁面各類元素在大多數場景下都能有比較精致的細節表現


雖然對于后臺設計而言,通常設計師是直接在目標尺寸下進行設計,并在此基礎上標注、切圖給開發實現,并不存在像移動端那樣需要對各種尺寸、各種像素密度的設備進行適配的情況,但對于Web頁面來講,仍存在向上向下適配的可能,因而從頁面的兼容性、可擴展性及可維護性層面來講,我們設計師還是有必要考慮的更加長遠,遵循“偶數原則”可以上避免各種潛在的問題。

Image title


(3)開發工程師使用的前端開源組件庫比如Metronic、Antdesign等也是基于8的原子單位來設計,因此如果設計師也使用以8為基本單位的柵格系統,開發與設計師相互對接就會更加方便,開發實現頁面時也能更高品質的去還原我們設計師的稿件



2、第二步:建立基于原子單位的柵格系統


經過第一步討論,我們現已確定后臺設計的原子單位為8,而我們也知道柵格系統是由欄目(Column)跟水槽(Gutter)交替分布形成的,所以接下來我們要利用原子單位確定欄目跟水槽在具體的頁面中如何分布以及它們各自的寬度。


通常,在一套后臺設計系統中,水槽寬度會是幾個比較固定的數值(因為后臺系統的頁面相對于其它類型的Web頁面,表現的更加整齊、規律,所以留白的方式比較固定,加之后臺往往有大量的數據、內容需要呈現,所以要盡可能提高頁面利用率,可以留白的空間也比較有限);而欄目寬度更加靈活,它可以根據頁面水平方向尺寸的改變而增大或減小以響應頁面的變化(遵循8n的變化規律,此處變化規律在下期文章《柵格化與響應式》里會詳細介紹)。


當我們做后臺設計的時候首先需要確定在什么樣的分辨率下做設計,也就是首先需要確定設計稿的尺寸,當設計稿尺寸確定后,便可建立基于該尺寸的柵格系統。假設頁面內容區域寬度為W,欄目個數為A,水槽個數為B,欄目(Column)寬度為C,水槽(Gutter)寬度為G,則W=A*C+B*G。柵格系統建立初期,由于我們并不確定之后會有什么樣的內容呈現我們的頁面上,所以為了讓柵格更加靈活、普適,我們先假定單個欄目與水槽的寬度是相同的,即C=8n(n=1、2、3、4...)=G,然后以此將頁面內容區域等分,形成初步的柵格,之后再按實際內容需要,按比例調整兩者寬度或者按比例對兩者進行組合,形成承載業務內容的盒子。目前有兩種比較主流的等分方式:12等分與24等分。


12等分的柵格系統在流行的前端開發開源工具庫Bootstrap與Foundation中廣泛使用,適用于業務信息分組較少,單個盒子內信息體積較大的中后臺頁面設計;

Image title


24等分的柵格系統適用于業務信息量大、信息分組較多、單個盒子內信息體積較小的中后臺頁面設計;相對12柵格系統,24柵格系統變化更加靈活,更適合內容比較多樣復雜的場景。

Image title



柵格系統的應用


1、頁面布局與版式設計


(1)、了解承載業務內容的盒子模型(Box Model)


建立好柵格系統后,就可以根據自己的實際業務,在柵格系統上安排內容了。頁面上最終承載內容的其實是一個個“盒子(Box)”,這個盒子的高度由盒子要容納的內容與頁面版式設計決定,按8n規律變化;寬度則由欄目與水槽按比例組合得到。


在柵格系統上容納業務內容的容器我們把它稱之為盒子(Box),柵格系統上的盒子其實跟前端工程師寫頁面時用到的盒子是一致的。如圖所示,當我們瀏覽任何一個網頁時,右鍵>檢查元素(審查元素),然后在style菜單下就可以看到這個盒子結構了。其中Padding就是主體內容(Element)距離盒子外側的距離,我把它稱之為內邊距,(Element可以是一個按鈕,一段文本、一張圖片或者一個表格等;)而Margin就是相鄰兩個盒子間的距離,對應在后臺柵格系統中其實就是水槽的大小。了解完柵格系統的盒子模型之后,下一步我們需要根據具體業務內容來確定盒子的寬度,也就是如何利用柵格系統做實際內容的布局與版式設計

Image title


(2)、根據業務內容分配頁面比例,確定盒子寬度


以24柵格系統為例,一個24柵格系統可以根據業務需要被2等分、3等分、4等分、6等分、8等分、12等分,還可以被1:1:1、1:2:1、1:3:2、2:3:3、1:2、1:3、1:5、3:5等不對稱分割,具體采用哪種比例的組合需要我們根據自己業務需求來定,我們此處所說的比例實際上就是盒子的寬度。

Image title

上圖展示了盒子在24柵格系統上的分布情況,圖中只列舉了部分比例,實際業務中,同一個頁面上使用一到兩組比例值的組合來布局是比較合適的(如下圖),組合形式過多頁面就會顯得瑣碎、雜亂,不利于閱讀和使用。因為盒子的高度根據內容來定,故下圖中沒有體現高度這一維度的變化規律。

Image title

當我們完成上圖規劃后,需要做的便是根據實際內容往每個盒子里安排內容,做視覺與交互的落地了。



2、元素對齊與間距設定


柵格系統大的層面可以幫助設計者更好的進行版式設計與內容布局,而小的方面可以輔助設計師規范頁面內各種元素的對齊與間距的設定。從用戶體驗角度來講,這兩者同等重要,從執行層面來講,我們一般先做版式設計與布局,然后再填充內容、調整細節。


柵格系統輔助對齊的作用類似于各種設計軟件中的參考線,它能讓我們更直觀的安排、調整內容的位置及對齊方式,可以使內容變得規律、有序,方便用戶瀏覽閱讀,幫助用戶提高獲取信息的效率。


柵格系統對于元素間間距設定的幫助是直觀的,當我們定義了柵格原子單位為8時,這意味頁面上各元素間距的變化也應遵循8n的規律,一致的變化規律讓頁面富有節奏感跟韻律感,在提高頁面一致性的同時也減少了設計決策成本。我們知道,柵格系統中水槽與欄目的變化也遵循8n的變化規律,此處n為大于0的正整數,即n=1、2、3...;但是用于規范元素間距的8n,n可以是0.5、1.5這類包含二分之一8的情況,原因是實際工作中,我們面臨的情況是復雜的,這樣處理可以讓間距的設定適應一些特殊的場景,從而使其更靈活普適。

Image title



注意事項


1、水槽寬度的設定


確定好內容模塊比例后,我們會發現由于之前等分的緣故,此時水槽較寬,我們需要調整水槽寬度到一個合適的值。


水槽的寬度是8n,也就是水槽可以以8為基本單位去增加或減小。為了減少設計決策成本,我們會事先設定好一系列水槽寬度,并定義好每個寬度對應的使用場景,然后設計中根據每個場景使用對應數值就可以了。我定義了一組水槽的值是8、16、 24、32 、40,為了區分它們的使用場景我們依次為其命名為XS、SM、MD、LG、XL。根據實踐經驗,正常情況下,兩個盒子間距(水槽)的值為24(MD)時,視覺上是最為舒適。

Image title


柵格化工具推薦(插件請在附件中下載)


Ps柵格系統工具


1、PS自帶柵格系統設定:新建參考線版面(重點推薦)


Ps有個功能叫做“新建參考線版面”,打開這個面板后,在預設這里可以看到Ps已經預設了8列、12列、16列、24列的柵格系統,選擇對應列數就可以看到頁面上參考線的變化。預設中“裝訂線”的寬度即柵格系統中水槽的寬度。默認均為20px,我們可以根據之前討論的8的倍數原則,將其手動更改為24;


如果預設的柵格系統無法滿足我們工作需要,我們也可以自定義柵格系統,并能將柵格參數保存為預設,這樣就可以重復利用自定義的柵格系統了;柵格系統還可以選擇將其應用在當前畫板或者所有畫板,十分方便易用。由于是Ps自帶的參考線,所以它可以通過快捷鍵靈活的控制顯示或隱藏

Image title

Image title



2、利用Ps標注工具Assistor Ps 進行柵格系統的建立


Assistor Ps在之前主要是一款頁面標注工具,但是隨著藍湖等自動標注工具的流行,這個小軟件基本沒人用了,但我發現它設置參考線的功能還是很強大的,可以媲美大名鼎鼎的guideguid(這款插件目前對Ps cc 2017及以上版本貌似已經不支持,軟件本身安裝也挺麻煩),所以就介紹給大家。(安裝包在文末下載,Win&Mac,解壓后跟常規裝軟件一樣,正常安裝就行)。但是這個插件由于很多數值都要自己算,實際上沒有Ps自帶的新建參考線面板的功能好用。算是一個工具的補充吧

Image title



Sketch柵格系統工具


1、Sketch自帶柵格系統設定:Layout Settings

Image title

Sketch端利用sketch自帶的柵格工具Layout Settings即可完成柵格系統的設置,由于sketch的柵格工具是自帶的,與Ps類似,它也可以通過快捷鍵快速顯示或隱藏,點擊左下角“Make Default”還可以將自定義的柵格系統設置為默認的柵格系統,方便以后重復調用,但sketch貌似只能儲存一組柵格系統的數值,而Ps可以儲存多組。



2、Sketch柵格系統插件:BootstrapGrid-maste


BootstrapGrid是一個專門用于建立柵格系統的插件(插件在文末附件中下載),插件可以對柵格系統的基本數據做個性化的設定,可以對多個形狀同時建立柵格系統,還可以通過快捷鍵快速調用。具體用法:先選中要建立柵格的畫板或者畫板里的形狀(可以多選),然后:插件>Bootstrap Grid(Plugins -> Bootstrap Grid)


柵格系統參數設計

Image title



單個形狀(畫板)建立柵格系統動圖演示

Image title



多個形狀(畫板)建立柵格系統動圖演示

Image title



跨平臺的web端柵格工具 http://grid.guide/


GridGuide 最大優點是可以針對一種柵格系統生成4組不同水槽寬度的柵格化方案,能比較直觀的比較不同水槽寬度下各個柵格系統的視覺感受。使用方法:在右上角設置好頁面寬度以及欄目數量,頁面內就會自動生成可以下載為png圖片的柵格。


Image title


QAQ(常見問題解答)


(1)當柵格系統中奇數不可避免的出現時,如何處理?


理想狀態下,我們應該調整內容區域的大小,使其盡可能成為可以被8整除的尺寸,但實際應用中,有時會出現無法整除的情況。基于對盒子模型的理解,此時我們保持padding、margin的值不變,改變盒子的大小去適應奇數的頁面(元素)即可,因為一致性跟效率才是柵格化要達成的首要目的,偶爾有一些不“完美”的尺寸是完全允許的,因為用戶在實際使用頁面時,并不能看到我們使用的柵格系統,也很難注意到那幾像素的變化,他們能感受到的是頁面整體呈現出來的節奏與韻律感,以及持續、一致的視覺語言帶給他們的嚴謹、可靠的心里感受。



(2)柵格系統必須以8作為原子單位?使用其它數值是否可以


首先需要指出的是使用其它數值當然也可以,柵格系統只是手段,提升設計效率、減少溝通成本、提高頁面一致性才是最終目的,所以如果你所在團隊有其它柵格化習慣,且一直以來效果良好,那么繼續使用它也是沒問題的。但是對于設計新人來講,如果能理解前人的經驗,并能較好的運用,對于他們來講,是會少一些彎路,更好的完成設計工作。



(3)柵格系統建立初期是否必須使欄目寬度與水槽寬相等,并等分內容區域?


建立柵格系統時并不是必須使欄目寬度與水槽寬相等,并等分內容區域。本篇文章介紹柵格系統時采用這種處理方式是為了讓大家更好的理解柵格系統建立的原理與過程,事實上,欄目的寬度在實際應用中往往大于水槽寬度,我們通常會先計劃好水槽的寬度、內容區域總寬度與欄目的數量,這時候欄目的寬度通過計算可得到,對于響應式頁面,欄目的寬度可以是百分比而不是具體的數值(關于響應式的內容下期文章跟大家分享)。

轉自UI中國-BYMD


九宮格方式上傳圖片(預覽并刪除)

前端達人

<view class="gallery">

    <view class="item" wx:for="{{images}}" wx:key="">

        <image src="{{item}}" data-src="{{item}}" bindtap="previewImage" mode="aspectFill" />



        <!-- 刪除按鈕 -->

        <view class="delete" bindtap="delete" data-index="{{index}}">X</view>

    </view>

    <view class="item" bindtap="chooseImage">

        <view class='addIcon'>+</view>

    </view>

</view>

<button type="primary" bindtap="submit">提交</button>

————————————————



/* pages/index/index.wxss */
/*畫廊*/
.gallery {    
  width:630rpx;
  margin: 0 auto;
  display: flex;    
  justify-content: flex-start;    
  flex-wrap: wrap;
}
/*每張圖片所占容器*/
.item {    
  position: relative;    
  margin:10rpx 5rpx;
  width: 200rpx;
  height: 200rpx;
}
.item image{
  width: 100%;
  height: 100%;
}
/*add按鈕*/
.item .addIcon{
  position:relative;
  width:200rpx;
  height:200rpx;
  text-align:center;
  line-height:200rpx;
  font-size:80rpx;
  background: #f2f2f2;
  color: #555;
}
/*刪除按鈕*/
.delete {    
  position:absolute;
  right:0;
  top:0;
  /* background:#ccc; */
  opacity:1;
  height: 36rpx;
  font-size:22rpx;
  font-weight:700;
  padding:0 8rpx 0 10rpx;
}
————————————————


var that;
Page({
  data: {
    images: [],
    uploadedImages: [],
    //imageWidth: getApp().screenWidth / 4 - 10
  },
  onLoad: function (options) {
    that = this; var objectId = options.objectId; console.log(objectId);
  },
  chooseImage: function () {
    // 選擇圖片
    wx.chooseImage({
      count: 3, // 默認9
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      // 可以指定來源是相冊還是相機,默認二者都有
      success: function (res) {
        // 返回選定照片的本地文件路徑列表,tempFilePath可以作為img標簽的src屬性顯示圖片
        var tempFilePaths = res.tempFilePaths;
        console.log(tempFilePaths);
        that.setData({
          images: that.data.images.concat(tempFilePaths)
        });
      }
    })
  },
  // 圖片預覽
  previewImage: function (e) {
    //console.log(this.data.images);
    var current = e.target.dataset.src
    wx.previewImage({
      current: current,
      urls: this.data.images
    })
  },
  // submit: function () {        
  //   // 提交圖片,事先遍歷圖集數組
  //   that.data.images.forEach(function (tempFilePath) {
  //     new AV.File('file-name', {
  //       blob: {
  //         uri: tempFilePath,
  //       },
  //     }).save().then(                
  //       // file => console.log(file.url())
  //     function (file) {                    
  //       // 先讀取
  //       var uploadedImages = that.data.uploadedImages;
  //       uploadedImages.push(file.url());                    
  //       // 再寫入
  //       that.setData({
  //         uploadedImages: uploadedImages
  //       }); console.log(uploadedImages);
  //     }
  //     ).catch(console.error);
  //   });
  //   wx.showToast({
  //     title: '評價成功', success: function () {
  //       wx.navigateBack();
  //     }
  //   });
  // }, 
  delete: function (e) {
    var index = e.currentTarget.dataset.index; var images = that.data.images;
    images.splice(index, 1);
    that.setData({
      images: images
    });
  }
})
————————————————


微信小程序轉發/分享功能 小卡片設置

前端達人

<button data-name="shareBtn" open-type="share" plain="true">轉發</button>

添加plain=”true”后button的邊框樣式可自定義 ↓ ↓


button[plain]{ border:0


 //轉發
  onShareAppMessage: function (options) {
      var that = this;
      // 設置菜單中的轉發按鈕觸發轉發事件時的轉發內容
      var shareObj = {
          title: "這是一個標題!",        // 默認是小程序的名稱(可以寫slogan等)
          //path: '/page/index/index/user?id=123',        // 默認是當前頁面,必須是以‘/’開頭的完整路徑
          imageUrl: '../../img/xiaochengxu-share.jpg',     //自定義圖片路徑,可以是本地文件路徑、代碼包文件路徑或者網絡圖片路徑,支持PNG及JPG,不傳入 imageUrl 則使用默認截圖。顯示圖片長寬比是 5:4
          success: function (res) {
              // 轉發成功之后的回調
              if (res.errMsg == 'shareAppMessage:ok') {
              }
          },
          fail: function (res) {
              // 轉發失敗之后的回調
              if (res.errMsg == 'shareAppMessage:fail cancel') {
                  // 用戶取消轉發
                       console.log("用戶取消轉發");
              } else if (res.errMsg == 'shareAppMessage:fail') {
                  // 轉發失敗,其中 detail message 為詳細失敗信息
              }
          },
            complete: function(){
              // 轉發結束之后的回調(轉發成不成功都會執行)
          },
    };
    // 來自頁面內的按鈕的轉發
    if(options.from == 'button') {
        var eData = options.target.dataset;
        console.log(eData.name);     // shareBtn
        // 此處可以修改 shareObj 中的內容
        //shareObj.path = '/pages/btnname/btnname?btn_name=' + eData.name;
    }
// 返回shareObj
return shareObj;
————————————————



微信小程序輪播功能

前端達人

<swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" circular="{{duration}}" current="{{swiperCurrent}}" bindchange="swiperChange" class="swiper">

  <block wx:for="{{imgUrls}}" wx:key="unique">

    <swiper-item>

      <image src="{{item}}" class="img" bindtap="swipclick" />

    </swiper-item>

  </block>

</swiper>

————————————————


/* swiper {
    height: 421.5rpx;
} */
swiper-item image {
    width: 100%;
    height: 100%;
}
.swiper-container{
  width: 100%;
  position: relative;
}
.swiper-container .swiper{
  height: 300rpx;
}
.swiper-container .swiper .img{
  width: 100%;
  height: 100%;
}
————————————————


const app = getApp()
Page({
  data: {
    swiperCurrent: 0,
    indicatorDots: true,
    autoplay: true,
    interval: 3000,//自動切換時間間隔
    duration: 800,//滑動動畫時長
    circular: true,//是否采用銜接滑動
    imgUrls: [
      '../../img/index/1.jpeg',
      '../../img/index/2.jpeg',
      '../../img/index/3.jpeg'
    ]
  },
  //輪播圖的切換事件
  swiperChange: function (e) {
    this.setData({
      swiperCurrent: e.detail.current
    })
    //console.log(e.detail.current);
  },
  //點擊指示點切換
  chuangEvent: function (e) {
    this.setData({
      swiperCurrent: e.currentTarget.id
    })
  },
  //點擊圖片觸發事件
  swipclick: function (e) {
    console.log(this.data.swiperCurrent);
    wx.switchTab({
      url: this.data.links[this.data.swiperCurrent]
    })
  },
})
————————————————



真機預覽本地頁面方式-簡單快捷(精簡大法Node)

前端達人

前提:真機和PC端在同一個局域網內。

1、安裝nodejs環境 (node -v 查看版本號)



2、在所在的項目下輸入命令:npm install anywhere -g



3、直接輸入命令:anywhere,這里瀏覽器自動打開所有項目的根目錄,點擊就可以看到,同一網段下,然后手機直接預覽這個地址就可以

————————————————


小程序單張圖片 和 九宮格圖片上傳、預覽、刪除示例

前端達人

<view class="gallery">

  <view class='tipTitle'>

    快去上傳自己的照片吧

  </view>

  <view class='item-ot'>

    <view class="item">

      <!-- 添加按鈕 -->

      <view class="addIcon" bindtap="chooseImage" wx:if="{{imgBoolean}}">

          <view class=''>+</view>

      </view>

      <!-- 上傳的圖 -->

      <view class='itemImg' >

        <image src="{{item}}" data-src="{{item}}" bindtap="previewImage"  mode="aspectFill" />

        <!-- 刪除按鈕 -->

        <view class="delete" bindtap="deleteImg" data-index="{{index}}">X</view>

      </view>

      <view class='boxStyle'></view>

    </view>

    <view class='itemTxt'>正面照</view>

  </view>

  <view class='uploadFinish'>

    <a class="uploadFinishBtn" href="javasctipt:;"  bindtap="submit">提  交</a>

  </view> 

</view>


/*畫廊*/
.gallery {    
  width:100%;
  margin: 0 auto;
  display: flex;    
  justify-content: flex-start;    
  flex-wrap: wrap;
  background: #fffaf0;
}
/*每張圖片所占容器*/
.item-ot{
  margin:0 auto;
  width: 100%;
  height: 100%;
}
.item {    
  position:relative;
  margin:0 auto;
  width:370rpx;
  height:490rpx;
  background:#eee;
  border:2rpx solid #f9c4c2;
  /* overflow:hidden; */
}
.itemImg{
  position: absolute;
  left: 0;
  top:0; 
  width: 100%;
  height: 100%;
  overflow: hidden;
  z-index:1;
}
.itemImg image{
  width: 100%;
  height: 100%;
}
/*add按鈕*/
 .addIcon{
   position:absolute;
  left: 0;
  top: 0; 
  width: 100%;
  height: 100%;
  text-align:center;
  line-height:490rpx;
  font-size:80rpx;
  background: #fff;
  color: #999;
  z-index:2;
}
/*刪除按鈕*/
.delete {    
  position:absolute;
  right:0;
  top:0;
  /* background:#ccc; */
  opacity:1;
  height: 36rpx;
  font-size:22rpx;
  font-weight:700;
  padding:0 8rpx 0 10rpx;
  color: #999;
}
.itemTxt{
  text-align: center;
  font-size: 30rpx;
  color: #999;
  margin-top: 50rpx;
  margin-bottom:  70rpx;
  font-weight: 700;
}
.uploadFinish{
  width: 100%;
  height: 100%;
  padding: 0 30rpx;
  box-sizing: border-box;
}
.uploadFinishBtn{
  background: #ff6666;
  color: #fff;
  display: block;
  width: 100%;
  padding: 26rpx 0;
  text-align: center;
  font-size: 36rpx;
  border-radius: 10rpx;
  margin-bottom: 40rpx;
}
.tipTitle{
  text-align: center;
  font-size: 30rpx;
  color: #f6a29d;
  font-weight: 700;
  width: 100%;
  margin: 50rpx 0;
}
.boxStyle{
  width:300rpx;
  height:100rpx;
  position:absolute;
  bottom:-1rpx;
  border-radius:50%;
  box-shadow:0rpx 10rpx 100rpx #fddbd9;
  margin-left:35rpx;
}


Page({
  data: {
    uploadedImages: [],
    imgBoolean: true,
  },
  onLoad: function (options) {
    var that = this;
  },
  chooseImage: function () {
    var that = this;
    // 選擇圖片
    wx.chooseImage({
      count: 1, // 默認9
      sizeType: ['original', 'compressed'], // 可以指定是原圖還是壓縮圖,默認二者都有
      sourceType: ['album', 'camera'], // 可以指定來源是相冊還是相機,默認二者都有
      success: function (res) {
        // 返回選定照片的本地文件路徑列表,tempFilePath可以作為img標簽的src屬性顯示圖片
        var tempFilePaths = res.tempFilePaths
        that.setData({
          item: tempFilePaths[0],
          imgBoolean: false
        });
      }
    })
  },
  // 圖片預覽
  previewImage: function (e) {
    var current = e.target.dataset.src
    wx.previewImage({
      current: current,
      urls: [current]
    })
    console.log("這是1" + current);
  },
  //刪除圖片
  deleteImg: function (e) {
    var that = this;
    var images = that.data.uploadedImages;
    that.setData({
      uploadedImages: images,
      imgBoolean: true
    });
  },
  // submit: function () {        

  // }, 
})


charts柱狀圖的X軸Y軸加單位的寫法

前端達人

  •         {
  •             type : 'value',
  •             axisLabel:{formatter:'{value} %'}
  •         }
  •     ],

  • 如果想控制百分比最大到100% 可添加


  • yAxis : [
     
            {
                type : 'value',
                max:100,//Y軸最大值 不寫的話自動調節
                axisLabel:{formatter:'{value} %'}
            }
     
        ],
    > max:100,//Y軸最大值 不寫的話自動

  • table點擊實現可編輯文本

    前端達人

    table點擊實現可編輯文

    一個簡單的例子,直接添加contentEditable=”true”標簽屬性即可

    <table>
        <tr>
            <td>姓名:</td>
            <td contentEditable="true"></td>
        </tr>
        <tr>
            <td>密碼:</td>
            <td contentEditable="true"></td>
        </tr>
    </table>

    iPhone如何改變我們的交互方式

    濤濤

    當我們回顧近20年的手機發展歷程,可以發現2007年iPhone的橫空出世真正改變了手機這個行業。喬布斯在發布會上展示初代iPhone給行業帶來的沖擊力是前所未有的,對人機交互領域也帶來了了深遠的影響。



    從外觀上來看,iPhone與那個時代手機最大的區別在于它舍棄了笨重的鍵盤,3.5英寸的全觸控屏幕在當時來說可謂石破天驚。對于現在的手機來說,全觸控屏幕可謂是標配。但是在當時來說面臨著巨大的爭議和風險。當時的微軟CEO鮑爾默,也就是現在NBA快船隊的老板就持反對意見,甚至蘋果內部的高管都不看好全觸控屏幕,因為他們覺得: “每個人都會對沒有觸摸感的東西感到不適”。

    這個理由現在看起來很無厘頭,但是如果我們看待問題總是以現在的眼光和立場,那么就會產生“我上我也行”的錯覺。這樣的復盤,除了滿足自己的YY欲,不會給我們的認知帶來任何提升。


    我們來系統的分析一下,全觸控屏幕究竟是怎么淘汰鍵盤的呢?首先最直觀的一點就是,因為去掉了實體按鍵,那么手機的屏幕面積得到了提升。 此外,鍵盤交互的時代,條目的移動速度取決于手指點按鍵盤的速度。 而在觸控交互的時代,移動條目只要手指滑動一下就可以了。 交互效率得到了指數級別的提升。



    信息限制


    而這里我想從可供性的角度來思考觸控交互帶來的體驗提升。 可供性,通俗點說,就是功能隱喻。優秀的產品設計可以有效的利用功能隱喻讓用戶快速的明白如何操作。


    而隱喻不能太多,太多的隱喻等于沒有隱喻。早期的戰機有十幾個姿態顯示儀表和100多個操作按鈕,這樣的操作界面毫無隱喻而言,飛行員很難同時處理這么多信息。后來從三代機開始,戰機艙普遍使用顯示屏,化繁為簡,限制了操作選項,降低了駕駛成本。

    在實體鍵盤時代,要限制操作選項是非常困難的。因為用戶與手機進行交互是依賴鍵盤這個媒介,而鍵盤無法針對特定的場景提供定制化服務,例如我打電話撥號需要數字鍵,發短信需要26位字母鍵。那個時代音樂手機(諾基亞5300)甚至要將音樂按鍵放置在機身。


    一款產品可以給用戶提供很多功能,但并不是每一個功能都是用戶全程需要的。 只有判斷在某個場景下,用戶對特定功能的訴求很高,才展示相關的信息。 如果訴求很低,可以隱藏相關信息,避免給用戶造成干擾。

    例如,在知乎中,你想搜索跟葉問相關的內容。在搜索結果頁滑動了大概3屏左右,在界面底部會出現“向知友提問”的按鈕。因為滑動了3屏,那么極有可能對當前的搜索結果不滿意,這時引導用戶去提問。如果從一開始就給用戶展示去提問的按鈕,那么對于不想提問的用戶來說,其實是一種干擾,并且減少了閱讀區域。


    在微博中停留3秒左右,就會提醒你去評論。在用戶不斷刷微博的狀態下,一旦出現了停留,說明你被這條內容給吸引住了。與其每條微博下放一個評論框,還不如提醒你去評論感興趣的內容。


    不同的場景,用戶對功能的需求是不一樣的,因此交互方案需要做出相應的調整。在有網的狀態下,啟動網易云音樂進入的是首頁;無網情況下,啟動網易云音樂進入的是我的音樂。因為用戶在無網情況下進入網易云音樂,最大的可能性就是聽之前下載好的歌曲。


    我們再來思考一個問題,為什么QQ的對講功能是長按,而錄音功能卻是點擊?錄音與對講最大的區別在于,錄音完成后不會直接發送給對方。你可以聽一下錄音效果,感覺不錯后再發送給對方。而對講是說完之后直接就發送對方的。


    因此對講功能更加看重效率,而且錄音功能追求的是嚴謹。因為追求效率,用戶對講完成手指松開就可以直接發送了。如果使用點擊,用戶需要點擊“發送”按鈕才能發送,增加了操作步驟。


    目前很多電商平臺支持語音搜索,用戶可以直接說出商品名稱進行搜索。京東采用長按的交互方式,長按說話,說完松開。而淘寶用的卻是點擊開始說話,說完自動發送。


    為什么淘寶這里做了差異化?這是因為,語音搜索商品,更多是短字符。用戶在這里不太可能會說很長一段話,因此一旦用戶的語音出現了中斷,就可以判斷已經完成了語音錄入。交互流程就簡化為點擊開始錄音,說完自動發送。

    操作與反饋


    我在前面提到了,全觸控屏幕可以節省屏幕面積。這時可能會有人存在疑問,翻蓋和滑蓋手機不也能節省屏幕面積嗎?

    所有的人機交互流程我們都可以簡化為兩個步驟: 操作與反饋。 按鍵手機,用戶與手機進行交互都必須依賴鍵盤這個媒介,而反饋區在屏幕,你的視線需要不斷的來回移動。全觸控屏幕,用戶可以跟屏幕中元素直接進行互動。視線可以集中在一點。


    即使在全觸控屏幕,產品設計中操作區與反饋區的關系一樣值得我們思考。以拍攝視頻這個場景為例:

    目前抖音、快手和微博都支持用戶分段拍攝視頻,一個長視頻可以由幾段短視頻拼接而成。這個就產生了一個新的場景,如果我對上一段視頻不滿意怎么辦?


    我們先來看微博的處理方式,用戶可以點擊左邊的關閉按鈕,這時頂部的視頻進度條開始閃爍。表明需要用戶確定是否要刪除這段視頻?這種 通過閃爍和搖擺等不穩定狀態來提醒用戶進行決策的交互方式很常見,例如我們長按iPhone桌面圖標,圖標就會不斷的抖動來詢問是否要卸載該應用。

    這里存在一個問題, 觸發區和反饋區距離太遠,而且閃爍的樣式不明顯,首次使用的用戶可能無法在短時間內快速的理解閃爍的進度條是在詢問用戶是否要刪除該段視頻。

    相比較而言,抖音的提醒方式更加直接,直接出現一個對話框。簡單明了的詢問用戶是否要刪除上一段視頻,降低了用戶的理解成本。當然抖音的交互方式也有缺點,對話框的出現增加了用戶的操作成本。


    如果用戶不想刪除視頻,抖音需要首先點擊“取消”,關閉對話框,才可以進行后續流程。而微博用戶取消刪除,不需要任何操作,可以直接進行后續流程。


    如果用戶“確定”要刪除視頻,抖音和微博用戶的操作動作都是點擊。但是微博用戶手指不需要進行任何移動,等于是原地重復點擊兩次。所以我們無法判斷雙方孰好孰壞,只能說抖音的交互方式對新用戶來說更加的友好。

    總結


    在做這期視頻的時候,適逢微信新版本發布。其中一個改動點是,視頻和圖片查看界面的按鈕都統一移到界面的底部。因為考慮到用戶在單手握持手機的情況下,拇指很難直接夠得著界面頂部。這樣的改動可以方便用戶操作。我看了一下反饋,發現持反對意見的較大,原因很簡單:不習慣。


    做一款好產品,我們需要秉持著一顆尊重用戶的態度。但是我不贊成把“用戶當成上帝”的觀點,大多數用戶都是偏愛舊有模式的。即使你的改動從長期上來看,對他們來說是有益的,用戶也會抗拒。因為他們看的永遠都是當下的利益,因為你的改動我要離開我的舒適區,我要重新學習并適應新的交互模式了。人民創造了歷史,但是人民本身也是創造歷史的最大阻力。

    任何一個新事物的出現,人們總是傾向于從現有的知識體系中尋找類似的事物進行描述與概括,以尋求情感上的歸屬和理性上的辨識。但是過于超前的創新,往往是現有的知識體系無法解釋的。無法解釋,自然無法接受。


    文章來源:站酷

    日歷

    鏈接

    個人資料

    藍藍設計的小編 http://www.gerard.com.cn

    存檔

    主站蜘蛛池模板: 91中文啦 | 日本天堂在线播放 | 日韩精品射精管理在线观看 | 国产成人无码综合亚洲日韩 | 日躁夜躁狠狠躁2001 | 暖暖 在线 日本 免费 中文 | 国产精品区一区二 | 99久久免费只有精品国产 | 免费在线视频一区 | 国产精品久久久久久99 | 成人乱码一区二区三区av | 韩日毛片| 国产91玉足脚交在线播放 | 51精品视频在线视频观看 | 久久99深爱久久99精品 | 国产精品视频六区 | 自拍偷拍在线播放 | 亚洲天堂男人影院 | 精品熟人妻一区二区三区四区不卡 | 亚洲免费大全 | 久久中文字幕高清 | 久久成年片色大黄全免费网站 | 精品久久久久久久久亚洲 | 午夜精品免费看 | 羞羞视频网站 | 日日噜噜夜夜狠狠久久丁香五月 | 逼特逼在线视频 | 首尔之春在线看 | 婷婷激情偷拍在线 | 国产午夜三级一区二区三桃花影视 | 在线黄色免费网站 | 欧美日韩国产专区 | 自拍偷拍国产精品 | 男女www视频| 午夜性刺激在线视频免费 | 91精品视频一区 | 久久精品国产av一区二区三区 | 黄色一级在线 | 91人人爽久久涩噜噜噜 | 国产春色| 欧美激情性做爰免费视频 | 免费av不卡 | 日韩毛片在线视频x | 五月丁香六月综合av | 国产福利精品一区二区 | 国产精品成人久久久久久久 | 国产精彩视频在线 | 国产又色又爽又黄的视频在线观看 | 51国偷自产一区二区三区的 | 国产精品无码一区二区三区不卡 | 91精品福利少妇午夜100集 | 亚洲性久久久影院 | 丰满熟妇人妻av无码区 | 绿色地狱在线观看 | 欧美日韩在线免费观看 | 久久躁狠狠躁夜夜av | 美女一区 | 日本少妇bbwbbw精品 | 亚洲女则毛耸耸bbw 亚洲女子a中天字幕 | 97国产最新 | 黄色福利片| 亚洲激情片| 成年美女黄网色视频免费4399 | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 久久久久国产一区二区三区四区 | 少妇av一区 | 久久中文字幕无码专区 | 少妇激情偷人三级 | 无码国产乱人伦偷精品视频 | 久草免费福利 | 中文字幕在线看片 | 国产精品日韩av在线播放 | 四虎国产精品成人永久免费影视 | 国产三级久久久精品麻豆三级 | 日本少妇一级 | 国精产品一区一区三区有限在线 | 欧美孕妇孕交黑巨大网站 | 亚洲国产视频在线观看 | 亚洲爱爱图 | 亚洲色偷精品一区二区三区 | 91精品国自产拍在线观看不卡 | 国模一区二区三区白浆 | 激情综合婷婷 | 国产真实夫妇交换视频 | 天天做天天爱天天做 | 狠狠色综合网站久久久久久久高清 | 三级福利片 | 91精品久久久久久久久青青 | 蜜臀久久99静品久久久久久 | a级黄色片免费看 | 国产精品久久久精品 | 免费观看午夜视频 | 亚洲色成人网站www永久男男 | 成年人a级片 | 国产成人精品123区免费视频 | 国产熟女一区二区三区五月婷 | 好吊妞视频一区二区三区 | 亚洲视频图片 | 国产一级aa大片毛片 | 91调教打屁股xxxx网站 | 小sao货水好多真紧cao视频 | 青青青国产在线观看免费 | 国产精品成人网 | 一级特级片 | 日韩精品一区二区免费视频 | 日本极品少妇videossexhd 天天躁日日躁狠狠躁av麻豆 | 狠狠色狠狠色综合日日小说 | 久久婷婷国产综合尤物精品 | 国产一三四2021不卡 | 91com在线观看 | 亚洲精品国精品久久99热 | 噜噜狠狠狠狠综合久久 | 亚洲一区二区三区在线看 | 欧美黑人疯狂性受xxxxx野外 | 激情精品 | 黄色网战大全 | 丰满老女人乱妇dvd在线播放 | 美日韩av在线 | 日韩免费看片网站 | 国产99久久久国产精品 | 97偷拍视频 | 欧美一区二区二区 | 免费在线播放毛片 | 国产精品h片在线播放 | 久久摸摸碰碰97网站 | 一二三四视频社区在线 | 找个毛片看看 | 精品黑人一区二区三区久久 | 婷婷天天| 国产性夜夜春夜夜爽 | 狠狠色噜噜狠狠狠狠米奇777 | 美女av在线免费观看 | 久久不卡影院 | 91久久精品www人人做人人爽 | 国产精品精品久久久久久甜蜜软件 | 久久视频在线看 | 国产精欧美一区二区三区久久久 | 一区二区国产精品 | 激情网站在线观看 | 色哟哟国产精品免费观看 | 黄色片欧美 | 欣赏asian国模裸体pics | 精品国产乱码91久久久久久网站 | 久久久久久久久女人体 | 国产免费一区二区三区四在线播放 | 久久小草成人av免费观看 | 性色av一区二区三区咪爱四虎 | 9lporm自拍视频区九色 | 日韩欧美一区二区在线观看视频 | 7799精品视频天天看 | av永久免费在线观看 | 亚洲精品久久久久久久久久吃药 | 少妇久久久久久被弄到高潮 | 国产aⅴ激情无码久久久无码 | 亚洲精品怡红院 | 免费无遮挡在线观看视频网站 | 一道本无吗一区 | 欧美aⅴ视频 | 国产高清性xxxxxxxx | 国产偷久久一区精品69 | 视频在线一区二区 | 国产高清不卡一区二区 | 久久99精品国产.久久久久 | 东北老女人av | 欧美成人激情在线 | 国产又黄又硬又湿又黄的网站免费 | 澳门永久av免费网站 | 日本三级日产三级国产三级 | 国产卡一卡二卡三无线 | 欧美日本国产在线 | 无遮挡边吃摸边吃奶边做 | 美女撒尿毛片视频免费看 | 天天色天天爱 | 操极品美女 | 成人51网站 | 懂色中文一区二区三区在线视频 | 人人妻人人澡人人爽人人精品av | 国产对白叫床清晰在线播放 | 青娱乐在线视频免费观看 | 日韩中文字幕在线看 | 亚洲国产精品日韩av不卡在线 | 波多野结衣一二三四区 | 国产三级视频在线播放 | 97视频免费 | 日韩综合在线视频 | 毛片网站在线观看 | 久久婷婷久久一区二区三区 | 成年片色大黄全免费网站久久 | 97人人超碰国产精品最新 | 亚洲精品美女久久7777777 | 黄色日批视频 | 国产一区二区三区免费视频 | 久久综合精品视频 | 久久3p| 好看的av网址| 免费av地址 | 免费无码不卡视频在线观看 | 国色天香久久久久久久小说 | 午夜探花视频 | 国产精品精品视频一区二区三区 | 久久99精品久久久秒播软件优势 | 国产伦久视频免费观看视频 | 俞飞鸿早期三级 | 97人妻天天摸天天爽天天 | 又粗又大又硬毛片免费看 | 久久久99精品免费观看 | 欧美情爱视频 | 激情小说五月天 | 丰满少妇高潮叫久久国产 | 日韩少妇高潮抽搐 | 天海冀一二三区 | 久久精视频| 绝顶高潮合集videos | 大尺度网站在线观看 | 国产精选在线观看 | av美女在线 | 四虎4545www精品视频 | 少妇激情av一区二区 | 老司机在线精品视频网站的优点 | 99久久免费精品国产免费高清 | 悠悠色在线 | 激情五月婷婷网 | 国语对白乱子 | 免费a级毛片| 又湿又紧又大又爽a视频国产 | 欧美黄色成人 | 免费一级做a爰片性视频 | 色综合狠狠| 久久综合九九 | 久久精品三级视频 | 欧美又大又硬又粗bbbbb影院 | 少妇太紧太爽又黄又硬又爽视频 | 99久久免费精品国产男女性高好 | 亚洲国产精品第一区二区 | 亚洲免费视频一区二区三区 | 一区国产精品 | 国内精品久久久久影视老司机 | 久色伊人 | 涩av | 亚洲国产成人精品无色码 | 国产高清在线视频 | 色老板精品视频在线观看 | 亚洲国产另类久久久精品小说 | 国产久草视频 | 欧美一二三四五区 | 欧美中文字幕在线视频 | www黄色片com| 欧美精品人人做人人爱视频 | 日日碰狠狠躁久久躁9 | 搡8o老女人老妇人老熟 | 国产一二在线观看 | 中国黄色毛片 大片 | 色人阁网站 | 激情按摩系列片aaaa | 欧美一区二区黄色 | 无码人妻h动漫 | 国产精品制服 | 可以免费观看av | 亚洲精品欧美 | 久久久国产亚洲精品 | 五月天精品视频在线观看 | 麻豆91精品91久久久的内涵 | 又爽又黄又无遮挡的视频 | 日韩一区二 | 波多野结衣有码 | 国产成人在线免费观看视频 | 久久99精品国产99久久6尤物 | 求毛片网站 | 国模精品一区 | 成年人免费高清视频 | 亚洲午夜精品久久久 | 多啪视频 | 尤物永久网站 | 瑜伽美女健身视频集锦 | 欧美一区二区三区四区五区六区 | 国产小视频免费在线观看 | 天天草天天操 | wwww亚洲| 国产亚洲精品精品精品 | 一本色道久久88亚洲精品综合 | 亚洲激情视频 | 直接看的毛片 | 亚洲成熟女人毛毛耸耸多 | 成人性生交大片免费看96 | 亚洲日韩国产中文其他 | 人妻激情偷乱视频一区二区三区 | 手机av在线不卡 | 亚洲成人高清在线 | 九九久久精品国产 | 性欧美18一19性猛交 | 国产 欧美 日本 | 亚洲国产无线乱码在线观看 | 爆爽久久久一区二区又大又黄又嫩 | 97激情| 麻豆视频黄色 | 国产高清精品在线 | 亚洲毛片一级 | 人人妻久久人人澡人人爽人人精品 | av片在线免费看 | 亚洲成人www| 亚洲精品自产拍在线观看 | 美女黄视频在线观看 | 欧美视频在线观看免费 | 越南少妇做受xxx片 越南性xxxx精品hd | 成人av片在线观看 | 手机免费在线观看av | 美日韩一区二区 | 巩俐性三级播放 | 懂爱av性色av粉嫩av | 我们高清中文字幕mv的更新时间 | 天天干夜夜操视频 | 国产香蕉视频在线 | 欧美精品在线观看视频 | 综合色综合 | 久久久综合激的五月天 | 五月天婷婷爱 | 五月婷婷综合激情网 | 日本人做爰大片免费网站 | 成年女人免费视频播放体验区 | 老司机在线精品视频 | 亚洲乱码中文字幕综合 | 亚洲综合图片区 | 亚洲欧美日本另类 | 亚洲色欲色欲大片www无码 | 又粗又硬又猛又黄网站在线观看高清观看视频 | 先锋久久 | 69久久99精品久久久久婷婷 | 性色a码一区二区三区天美传媒 | 国产在线超碰 | 久久精品日产第一区二区 | jizz黄| 91免费版在线观看免费 | 91偷拍一区二区三区精品 | 亚洲美女自拍偷拍 | 午夜小视频免费在线观看 | 97欧美视频 | 香蕉午夜视频 | 毛片视频免费播放 | 极品尤物一区二区三区 | 国产做爰xxxⅹ高潮 国产做爰xxxⅹ高潮69 | 少妇人妻无码专区在线视频 | 超h高h污肉校园np在线观看 | 91视在线国内在线播放酒店 | 亚洲一级片在线观看 | 99国产精品视频免费观看一公开 | 正在播放东北夫妻内射 | 18禁成人网站免费观看 | 亚洲一区二区三区av在线观看 | 九九热免费视频 | 欧美性福利 | 日本黄色片 | 日韩一区高清 | 久草久热 | 激情综合色综合啪啪开心 | 特级特黄aaaa免费看 | 8x8ⅹ国产精品8x红人影库 | 99久久这里只有精品 | 久草视频在线资源 | 精品无码一区二区三区不卡 | 欧美亚州国产 | 久久久精品久久日韩一区综合 | 亚洲精品国产精品乱码视色 | 成人精品在线播放 | 欧美精品v国产精品 | 伊人色在线视频 | 中文字幕第一页在线 | 色狠狠久久aa北条麻妃 | 无码专区一ⅴa亚洲v天堂 | 综合久久伊人 | 在线播放www | 亚洲国产天堂一区二区三区 | 亚洲涩涩在线 | 午夜成人亚洲理伦片在线观看 | 九九热在线视频观看这里只有精品 | 人人干人人模 | 青青青手机视频在线观看 | 尤果网福利视频在线观看 | 国产精品久久久久久久久久免费 | 国产精品一区二区久久精品爱微奶 | 在线观看黄色片网站 | 欧美综合网 | www黄色网址 | 欧美嫩草影院 | 天堂无码人妻精品一区二区三区 | 风间由美性色一区二区三区 | 欧美激情亚洲激情 | 澳门永久免费av | 一级免费看视频 | 韩国精品一区二区三区无码视频 | 叼嘿视频在线免费观看 | 国产成人精品日本亚洲第一区 | 看av的网址| 免费成人精品 | 久久久久久一 | 18禁女裸乳扒开免费视频 | 国产精品视频一区二区三区四区国 | 婷婷伊人久久大香线蕉av | 美女视频黄是免费 | 国内自拍av| 97视频久久久| 激情久久婷婷 | 首尔之春在线看 | 国产一区免费在线观看 | 欧美日韩在线观看精品 | 国产国语熟妇视频在线观看 | 51真实女性私密spa按摩偷拍 | 日韩欧美一区二区三区在线 | bb日韩美女预防毛片视频 | 亚洲欧美成人中文日韩电影网站 | 在线免费毛片 | 无码少妇一区二区三区芒果 | 午夜av剧场 | 在线看污片 | 无码国内精品人妻少妇蜜桃视频 | 久伊人网 | 日韩欧美网站 | 麻豆精品 | 精品视频不卡 | 久久九九久久九九 | 天堂无人区乱码一区二区三区介绍 | 亚洲国产精品久久久久秋霞蜜臀 | 中文字幕久久久久人妻中出 | 亚州激情 | 噜妇插内射精品 | 日韩一级二级三级 | 天天爽夜夜爽国产精品视频 | 国产在线精品成人欧美 | 久久毛片视频 | 91久久久久久久国产欧美日韩- | 美女视频黄频大全免费 | 久操国产精品 | 国偷自产一区二区三区在线观看 | 26uuu亚洲国产精品 | 伊人色综合久久久天天蜜桃 | 亚洲无毛 | 国产女人18毛片水真多1 | 久久机热 | 精品国产国产综合精品 | 好看的黄色网址 | 色噜噜狠狠狠综合曰曰曰 | 91亚色在线观看 | 国产天堂精品 | 亚洲国产一区二区三区日本久久久 | 亚洲精品午夜无码电影网 | 亚洲成av| 国产精品成人免费一区久久羞羞 | 欧洲高潮视频在线看 | 欧美一级片免费观看 | 午夜视频在线 | 久久人人爽人人爽人人片av不 | 拨开少妇两片肥嫩的肉 | 一区二区三区久久久 | 国产网红福利视频一区二区 | 老头与老头性ⅹxx视频 | 国产成人综合久久亚洲精品 | 成年人黄色网址 | 老熟仑妇乱一区二区 | 国产精品毛片无遮挡高清 | 国产精品欧美一区二区三区 | 国产精品午夜无码体验区 | 欧美色精品| 毛片久久久 | 91中文字幕在线观看 | 色乱码一区二区三在线看 | 中文字幕免费在线看 | 中文字幕乱码人妻无码久久 | 亚洲精品久久久久国色天香 | 国产精品最新乱视频二区 | 麻豆 美女 丝袜 人妻 中文 | 成年人免费看视频 | 午夜宅男影院 | 欧美国产亚洲日韩在线二区 | 少妇精品导航 | 美女狂揉羞羞的视频 | 成人精品在线 | 性猛交富婆╳xxx乱大交视频 | 久久免费看少妇a高潮一片黄特 | 久久精品香蕉视频 | 四虎少妇做爰免费视频网站四 | 久久丫丫| 大尺度做爰床戏呻吟舒畅 | 草比视频在线观看 | 五级黄高潮片90分钟视频 | 日本欧美一区二区 | 欧美国产日韩久久 | 亚洲成人教育av | 99国产在线观看 | 国产一级网站 | 四季久久免费一区二区三区四区 | 国精产品一区一区三区免费视频 | 亚洲第7页 | 国产成人精品免费视频大全 | 大地资源网中文第五页 | 五月开心播播网 | 99在线精品免费视频九九视 | 成人深夜影院 | 伊人精品久久 | 国产va免费精品观看精品 | 激情文学亚洲 | 九一国产视频 | 成人性生交大片免费 | 欧美色图网址 | 偷拍区另类欧美激情日韩91 | 怡红院av久久久久久久 | 日韩精品一区二区三区不卡 | 久久国产精品免费一区二区三区 | 日韩精品久久一区 | 国户精品久久久久久久久久久不卡 | 国产又猛又黄又爽 | 在线视频99 | 日本欧美一区二区三区 | 亚洲美女在线播放 | 国产女同疯狂激烈互摸 | 国产精品特级毛片一区二区三区 | 日韩欧美亚洲国产精品字幕久久久 | 韩日三级视频 | 久草资源在线 | 日韩日日夜夜 | 日本精品久久久久中文字幕 | 国产精品岛国久久久久 | 丰满少妇在线观看资源站 | 欧美深夜福利视频 | 青青草在线视频网站 | 成人免费mmmmm视频 | 天天射夜夜骑 | 国外成人在线视频网站 | 91福利一区二区 | 国产av一区二区精品久久凹凸 | 欧洲vi一区二区三区 | 日本不卡专区 | 国产视频在线看 | 香蕉视频免费 | 看a网站| 日韩精品久久久久久久 | 肉体肉体xxx肉体d久久 | 亚洲最大成人免费视频 | 97超碰碰碰 | 一本大道av伊人久久综合 | 伊甸园成人入口 | 久久久精品在线观看 | 91精品国自产拍在线观看不卡 | 国模一区二区 | 91精品福利少妇午夜100集 | 亚洲精品午夜久久久久久久久久久 | 台湾av在线播放 | 福利在线看| 日本特黄特色aaa大片免费 | 国产在线无码视频一区二区三区 | 在线不卡日韩 | 久9re热视频这里只有精品 | 久夜精品 | 日本欧美成人 | 久久久久久久久久久久久大色天下 | 亚洲天堂2013 | 精品一区二三区 | 精品国产乱码久久久久久虫虫 | 九一自拍中文字幕 | 亚洲卡一卡二卡三 | 欧美性xxxx极品hd大豆行情 | 国产山村乱淫老妇av色播 | 豆花av在线| 好男人在在线社区www在线影院 | 色老头一区二区三区 | 免费成人视屏 | 久久国产一区二区三区 | 欧美aa在线观看 | 性一交一乱一色一情丿按摩 | 一区二区三区四区在线观看视频 | 欧美色图11p | 免费放黄网站在线播放 | 男女一边摸一边做爽视频 | 日韩不卡毛片 | 亚洲超碰在线观看 | 2024av在线播放 | 免费久久网站 | 成人免费看片98 | 综合激情四射 | 78成人天堂久久成人 | 在线观看亚洲国产 | 亚洲天堂成人在线观看 | 亚洲成人av影片 | 国产精品区一区二区三在线播放 | 久久久久国产精品嫩草影院 | 色婷婷综合久色aⅴ五区最新 | 在线观看视频一区二区 | 99热都是精品 | 亚洲蜜桃精久久久久久久久久久久 | 黑人巨大精品欧美一区二区小视频 | 国产午夜亚洲精品午夜鲁丝片 | av手机免费在线观看 | 91华人在线 | 日韩欧美性视频 | 亚洲视频网站在线观看 | 天天看天天干 | 亚洲国产欧美在线成人 | 欧美亚洲综合另类 | 日本a级无毛 | 毛片基地免费观看 | 黄色小视频在线播放 | 伊人久久大香线蕉综合5g | 精品国精品无码自拍自在线 | 日本人做爰大片免费网站 | 国产精品99久久免费观看 | 五月婷婷一区 | 日韩国产高清在线 | 免费av导航 | 橘梨纱连续高潮在线观看 | 久久天天躁夜夜躁狠狠躁2022 | 亚洲色偷偷男人的天堂 | 欧洲hdxxxx女同av性恋 | 亚洲中文字幕无码中字 | 午夜之声l性8电台lx8电台 | 天堂av中文| 亚洲精品无码久久久影院相关影片 | 激情小说av|