多個細節幫助你更優雅地書寫頁面

2020-12-05 雷鋒網

【編者按】本文作者@EdwardUp 我們常以「整齊」,「易讀」,「親切」,「易於維護」,「復用性強」等來形容一些優秀的開發者所寫的代碼。現在,對代碼的好評還有一個更為時尚的詞「優雅」,是不是聽起來覺得很親切呢?

頁面是網際網路產品的表現層面,不僅講求外觀,而且會應對更新迅速的網際網路產品需求。要成為一名優秀的開發者,經驗積累是必不可少的,而一部分經驗歸納起來正是在工作過程中的細節。下文介紹的即是在頁面開發流程中的多方面的細節內容,希望對這些細節內容的探討,可以幫助各位頁面開發者做得更出色,以更優雅的姿態來書寫頁面。

從Photoshop開始

從UI設計稿到靜態頁面一般都稱作「切圖」。這個詞很容易令人聯想到Photoshop中的「切片工具」,但現在切片工具用得並不多,大部分在頁面中需要用到的視覺元素,都需要拼合到一個或多個單獨的圖片中。

視覺元素的分離和拼合

快速更新的網際網路產品需求使得UI設計師需要優先保證UI設計稿的視覺效果,也因此有時候沒有時間整理UI設計稿源文件。所以,拿到手邊的UI設計稿,可能存在圖層缺少命名,分組混亂等問題。

如何快速找到需要分離的視覺元素所在的圖層?這時候應該使用的是Photoshop的「自動選擇」。另外要注意的是,某些邊緣陰影及高光是由圖層樣式生成的,在選取這些部分時應選取旁邊的實際繪圖內容。

Photoshop的「移動工具「,在使用時勾選一個「自動選擇」的複選框即可。此外可以設置是自動選擇圖層還是圖層所在的分組。

拼合是在一個新建立的psd源文件上進行,命名應當與最後輸出的圖片命名相同。拼合時應當使用網格做整齊的排列(快捷鍵Ctrl + 『 切換網格顯示)。整齊的拼圖不僅方便多人編輯,而且css代碼中的背景坐標定位會更加快捷(誰都喜歡有規律的數字)。

在Photoshop的編輯→首選項中可以設置合適的網格尺寸。

為方便後續編輯,拼圖源文件應適當保留原UI設計稿圖層(如保留文本圖層,不做圖層合併,方便以後的文本更改),同時做好圖層命名和分組。此外,推薦在底部增加2個圖層:底色層和網格尺寸描述層。

底色層:Photoshop默認的表示透明區域的網格背景(和前面的尺寸標識的「網格」不同)中,子網格的邊線不容易看清。而加上一個鋪滿全畫布的底色,網格線就很容易辨識了。底色一般用純白色即可,對於部分顏色偏白的UI元素,可以填充黑色作為底色。底色層只是方便排列元素,在輸出圖片時,底色層設置為不可見再輸出。

網格尺寸描述層:空白圖層,採用「20×20」這種格式的命名,說明使用的網格尺寸大小。這樣,多人編輯時,可以方便別人很快的設置出適合編輯此拼圖源文件的的網格尺寸。

拼圖源文件一定要保存到開發目錄中,可以在images目錄中,單獨建立命名為_psd的目錄,然後相關的拼圖源文件都保存在這個目錄中。

對應的,在靜態頁中用作圖片佔位和示意的臨時圖片(如用戶頭像),可以保存在命名為_temp的目錄中。

gif與png-8圖片的雜邊

為什麼gif和png-8格式的圖片存在雜邊?這是因為,gif和png-8格式的圖片使用的是索引顏色編碼,而索引顏色中,只存在全透明索引顏色(用來繪製全透明的像素點,也即空白點),而不存在半透明索引顏色。但是,一般的視覺元素的邊緣都存在半透明的像素點以形成視覺上的平滑過渡,這些半透明點要保留到gif和png-8,就必須指定用一種實色替代。這也就是Photoshop中的雜邊選項的意義。

Photoshop的這個顏色表中可以看到,只有這一個全透明索引色。

Photoshop中也可以選擇雜邊為「無」,這時半透明點會被丟棄,不再保留到輸出的圖像中。由於邊緣缺少用作過渡的像素點,這樣的圖像可能會有明顯的鋸齒,多數情況下效果不佳。

點擊「雜邊」旁邊的小箭頭,下拉菜單中即可以選擇「無」。

如果選擇一個顏色作為雜邊色,Photoshop在生成索引顏色表時會把圖像中的半透明像素點也考慮進去,並用合適的索引顏色(參考選定的雜邊色)替換這些半透明像素點。存在雜邊色的gif和png-8圖中的視覺元素,處於和雜邊色相同的背景色中的時候,效果最佳,所以雜邊色的選取應參考最終元素所在的背景。

如果有多種類別的背景而無法保證效果,應使用png-24。這裡的png-24實際上基本都是png-32,即應包含透明度alpha通道。這樣表述也是因為在Photoshop中,只用了一個複選框的設置來區分png-24和png-32。

勾選「透明度」後,實際上保存的是png-32。

針對不支持png-32的IE6,單獨輸出一個效果較差的png-8或gif,在一定程度上保證IE6的正常外觀。這也是針對不同瀏覽器的「漸進增強」開發思想的體現。

為IE6單獨保存的png-8圖。

書寫內容與HTML

在寫html之前,仔細閱讀UI設計稿是必要的。一方面,理清頁面的各個組成部分以及這些組成部分相互之間的聯繫。另一方面,分析頁面及頁面的組成部分應該用怎樣的DOM結構實現。

頁面的DOM結構因人而異。從基礎的層面來說,只要能夠實現UI設計稿的意圖,用什麼DOM結構都是可行的。而從專業的層面來說,頁面的DOM結構不僅要易於其他的開發者辨識和讀取,方便協同開發,而且要有良好的可維護性和拓展性,方便後續的增減和更新。

語義化or非語義化

「語義化」的意思是說,在寫html時,依照頁面的內容,選取最合適的html標籤,以體現html標籤的本意。如<p>表示文本段落,那麼如果一段文本確實是段落,那麼就應該把它們放在<p>標籤中,而不是使用沒有語義的<div>。

語義化,不僅有利於SEO,而且更重要的是使網頁內容層次和結構清晰,在可讀性上十分友好。試想一下,如果一個頁面的<em>標籤中的內容,從上下文看確實就是emphasis(強調)的內容,會不會覺得這個頁面很整潔很親切呢?


但是,語義化也不是絕對的。微博的新的的站外組件(widget),並不遵從語義,僅使用限定的標籤,如塊元素只使用<div>,非連結行內元素只使用<cite>,圖標只使用<u>。如下圖所示最近的新版集體微博組件。

新版集體微博組件的標題部分(紅線圈出部分)的代碼:

這樣無視語義並限定標籤的使用,是為了儘可能減少組件被引用的站點的樣式,對組件本身樣式的幹擾。<cite>和<u>都是很少使用的標籤,<div>又是非語義的標籤,這樣,站點css中以標籤作為選擇器寫的樣式,就很少會影響到組件(沒有多少站點會直接對<div>等非語義標籤寫reset或默認樣式)。

完備的class命名

先來看使用Firebug查看的以下一段html代碼。(取自開發中的微博話題組件)

能看出特別的地方嗎?沒錯,就是所有的html節點,不管位於DOM結構中多深的位置,都有自己的class命名。
為什麼要這麼做?

首先,需要明確,少一些class命名,通過節點之間的相互關係,當然也可以實現對正確的html節點設置樣式。這也是我們過去寫html一般的做法,並認為這樣可以精簡html。事實的確如此,但現在我們應該認識到,精簡的html卻會帶給我們越來越麻煩的css維護。

CSS Wizardry的Harry Roberts對此做了簡單的解釋說明。

Imagine a teacher trying to control a class of kids who have no names. That’s how we used to write HTML  >.<

意思是說,就像我們為什麼給人取名字一樣,當事物被精確地命名後,事情會變得容易許多。稍微想一下就可以理解,直接說「皮卡丘」比說「小智一直帶在身邊的神奇寶貝」要簡單地多。更重要的是,如果節點的位置發生了改變,原來的基於節點位置的寫法就不再正確了,但使用名字的寫法則不會存在這個問題。

把一些工作推給html,讓css更加容易一些吧。想像自己是一個班級的老師,有什麼會比每一位同學的名字更方便表示每一位同學呢?

外觀與CSS

CSS本身很容易寫,但合理的CSS架構卻不是一個簡單的事情。要保持CSS的可維護性,最簡單的做法就是追求CSS的復用性,儘可能減少CSS量。

任何時候,都要寫CSS注釋

CSS一般來說可讀性較差,因此需要我們多寫CSS注釋。注釋內容越豐富和細緻越好,而且建議結合ASCII Art(字符畫)。如果有時間,甚至可以在一個CSS文件中寫一個目錄。

如果是後續增加更改,還可以附上時間和項目相關信息,這在多人協作中很有用。

優雅的CSS選擇器

優雅的CSS選擇器不僅看起來親切,而且也可以提升瀏覽器的樣式渲染效率。
主要使用類名(CLASS)作為選擇符,不做額外的限定。

上圖中下一種寫法更好是因為非<p>標籤元素也有效,標籤可以隨意替換,而且樣式渲染時更加高效。

避免不必要的繼承關係。繼承寫法是為了避免相同命名的選擇符的樣式相互影響,但在層級使用上要注意適度。

瀏覽器樣式渲染引擎是按照從右向左的順序來解析CSS選擇器,最右邊的選擇符稱為關鍵選擇符(Key Selector),每一個額外的繼承選擇符都會增加樣式渲染引擎的查找匹配時間。而且,如果沒有額外的繼承關係,子元素會有更好的重用性。

總結

在實際的經歷中,我們開發者所遵循的,主要是在經驗積累中的成果,稱為「最佳實踐」。在心中明確這樣一種「最佳實踐」的理念,就可以幫助自己培養良好的習慣,在頁面書寫上做得更加自然,更加「優雅」。
期待和各位前端開發者共同進步!

(文中截圖取自Photoshop,Firebug,Sublime text 2)

設計團隊:微博UDC

雷鋒網原創文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • 我在角落裡發光,你怎麼還沒有看到 | 書寫超試隱藏好物推薦
    書寫超試SUPERTRY的進度條已經過半,你是否已經試寫到了自己的心選文具,也曾抱著剛剛下單的好物向好友聲情並茂地分享?溫暖自然的木質、優雅的鍍鉑筆蓋、精緻的稜紋筆桿緊密結合,紋理與顏色之間的自然差別意味著每支書寫工具都是獨一無二的。
  • 關於軟體系統的幫助文檔頁面,你該知道的那些事兒
    幫助文檔一方面能夠幫助新用戶快速上手使用你的產品,給到新用戶很好的使用體驗,它是用戶和產品之間很好的一個溝通方式,通過幫助文檔的訪問數據以及文章閱讀,能夠了解產品目前的狀況以及需要優化的地方;另一方面這是一個很好的機會宣傳產品以及公司,用戶目前遇到問題,很多時候都是直接百度或者通過其他搜尋引擎獲得答案,做好幫助文檔的seo優化也是一個很好的方式宣傳,對內而言,
  • 知乎的「更多」頁面:從重複入口看知乎在產品設計的細節
    本文作者將從最簡單、最常見的「我的」頁面——知乎裡面的「更多」頁面入手,從重複入口看知乎在產品設計的細節知乎是一個問答社區,用戶分享著彼此的專業知識、經驗和見解,社區裡面不斷地湧現高質量的信息,這是一個不斷傾聽各種不同聲音的社區。筆者是2014年初就註冊了知乎,3年多的時間,見證了知乎的不斷發展。很感謝知乎給我提供了很多思考問題的角度。
  • B端產品設計3大流程業務流程圖、功能流程圖、頁面流程圖
    本文介紹了B端產品設計的三個流程圖:業務流程圖、功能流程圖、頁面流程圖,與大家分享!B端產品往往涉及複雜的業務關係和場景,線下業務一般會涉及到採購、銷售、物流、財務、人力、倉管等多個不同的部門和角色。如何用產品支撐B端業務落地是一項非常有挑戰性的工作,要求產品經理既要有對宏觀的把控能力,又要有對細節的專注力。
  • 如何讓你的英文書寫更漂亮 How to Improve Your Handwriting
    學英語的你,書寫英文的機會一定不會少。那麼你知道在書寫英文時,有哪些地方是我們需要注意的嗎?怎樣才能練就工整好看的英文書寫體?觀看這份指南,一起來學習吧。假如你的新年願望是提高書寫水平,這裡的實用小技巧,可以讓你的書寫重現光彩。Quick Tips.小貼士。A few tweaks to your natural style can make it easier to read your handwriting.對書寫風格做一些調整可以讓書寫更容易辨認。
  • 德國家具品牌COR品味細節,探尋優雅線條中的家居美學!
    偉大的建築師密斯·凡·德羅用一句話概括其成功的原因, 那就是「魔鬼在細節」。德國家具品牌COR盡得這句名言的精髓,在創作中將每一個細節都把控到位,帶來了家居線條設計的極致優雅!換句話說,用戶只要按自己的需求進行搭配,你就不會在任何場合看到重複的設計組合。Elm沙發重新詮釋了典型設計方式,其使用的所有材料都帶有舒適性和工藝性。每一個設計細節都清晰可見,並通過無數細節修飾為用戶帶來源源不斷的驚喜。新系列的Elm沙發以「自然的親和力」為主題,採用精選原木材料,為沙發整體帶來了創新的線條設計。
  • 工作學習高效裝備|順滑、好寫、好看的鋼筆,讓你愛上書寫
    想讓寫字成為你的職場加分項,首先要挑選一支順手的鋼筆,它可以成為陪伴你最久的辦公物品!    一支好的鋼筆絕對能帶給你行雲流暢的書寫感受。  筆尖順滑有勁,書寫漢字更易出峰, 經久耐用,只要好好使用,用個幾年完全沒有問題。
  • 怎樣更優雅地使用LaTeX撰寫文章?這裡分享一些設計模式與建議
    另外可能會重複代碼還有這樣的場景,我們有時候會在正文陳述定理內容,但是其證明放在附錄中,優雅的做法是應用上面方法來調用正文中的定理。同樣,如果你有在圖題中重複的模板(例如,相同的圖例),考慮定義一個宏來整合它。關注編譯過程中的錯誤和警告: LaTeX 編譯器會對各種常見的問題發出警告,如引用未定義的參考文獻等等。我建議趁熱打鐵,立即修復這些警告。
  • Wish | FBS推薦頁面,你的哪些產品有潛力?
    這個新頁面包含了5個主要的版塊,簡化了你的備貨、補貨流程,更重要的是,你可以發現意想不到的產品潛力! 針對FBW項目 在「針對FBW項目」標籤頁,你將一如既往地看到過去30天的熱銷FBW產品,並且可以在這個頁面進行產品補貨操作,保持熱銷產品的持續銷售。
  • 工程生物創新大會現場直擊丨「基因書寫」將成為未來醫學超凡工具
    把一個完整的基因、一個更小的序列、一個外顯子或是多個基因寫進基因組,這個過程聽起來很簡單,但對醫學卻有著廣泛影響。在過去幾年中,我們發明了一種名為 「基因書寫」 的技術,實現了這個過程。這一方法極有可能成為未來醫學在遺傳水平上具有超凡應用意義的工具。阻止一個基因在染色體間跳來跳去,這種通過跳躍基因向基因組中引入變化的能力,極有可能幫助人類倖免某些疾病。
  • 草書的三種書寫方式,你更喜歡哪種字體?
    草書形成的契機是為求實用而將隸書書寫速度加快,從而「解散隸體」,出現用筆連綿、點畫省簡、偏旁假借等筆法、結構特徵。1.章草章草是隸書的草寫,即早期帶有隸意的草書,用筆連綿省簡,筆法、體勢較隸書豐富多變。
  • Bibliography寫作要點以及正確的書寫格式
    其實中的書寫關鍵又是什麼呢?帶著這個問題,HotEssay今天就來大家來講一講:bibliography寫作要點以及正確的書寫格式,希望對同學們有所幫助及參考。在講寫作要點之前,為什麼首先要搞明白reference和bibliography之間的區別,reference是參考文獻,而bibliography則是參考書目,這兩者看似雷同,卻又不同,那麼區別是什麼呢?
  • 5W2H,幫助你梳理B端產品業務流程
    目標用戶測試:將設計好的頁面帶入原場景中進行測試,有能力的邀請目標用戶並運用輔助工具幫助獲取測試結果,加以調整。這裡我重點描述前面三點梳理的過程,細節設計的第四點和測試驗證的第五點不在此累述。針對B類產品客戶、商家可能不僅僅是單一角色,可能還會涉及到多個角色,如:業務員、內勤人員、財務人員,在不同階段參與人和參與度都不同。可能會涉及到產品定位以外的人員,比如行政管理人員等。早期可不做深入挖掘,但也需要收集,了解其參與的作用。2.
  • 404 的傳說:你訪問的頁面找不到了!
    (你對這個頁面也許不陌生)這樣的說法讓「 404 錯誤」的傳奇色彩蕩然無存,可能會讓很多人失望吧。不過自從網際網路誕生以來,設計師們為了讓你不會因為錯誤訪問而對網站失望,在 404 頁面上花了不少功夫,而 404 頁面的變化也是網際網路交互形式發展的一個剪影。
  • 以後圖像管理與編輯工作會更高效
    信息數位化時代,什麼都要講究效率,圖片、文字信息的處理也要高效,這樣才能花更少的時間做更多有效的工作。對於需要長期進行圖像管理與編輯工作的朋友來說,擁有一款高效、實用、智能、專業的圖像管理與編輯軟體非常重要,比如ACDSee。
  • 雨雲美麗優雅的讀書生活
    她嫻靜優雅,愛茶愛書,生活中不是喝茶就是看書。每次遇到她,她總是微笑著邀請我:「瓶子,有空到家裡喝茶。」雨雲家很雅致,她家的廳就是一個茶室兼書房,桌上總有一套茶盤茶壺,牆邊好幾個高高的書架,整齊地擺放著古今中外的書。書架上錯落著幾盆小小的綠蘿,書架邊還有個架子,上面是各色紫砂壺。茶几對面牆掛著「雲一齋」「歲月靜好」的書法,在雨雲的雲一齋裡,我們自然而然放低聲音,微笑著,聽雨雲說話。
  • 網站頁面布局的三種設計方式
    網站頁面布局的三種設計方式在網站設計中,進行頁面布局設計時,出現了一些布局的潮流趨勢,主要有無邊框設計、卡片設計以及分割線設計。無邊框設計在近幾年比較流行,在設計頁面的時候,將頁面中的風格線、邊框刪掉,用間距來代替的一種設計方法。無邊框設計一般是以大圖為主,圖片本來就是一種分割元素。而內容基本是有規律的,留白間距之間的內容一定要相對一致、重複、緊密,這樣用戶在瀏覽的時候才會認為這些內容是一體的。一般來說,小眾垂直的產品更適合使用無邊框設計。第二、卡片設計。
  • 德國黑科技「永恆筆」:不用墨水,永久書寫
    當時在文藝復興的踐行者隊伍中有一位叫切尼諾·德·安德烈·琴尼尼(約1370-1440)的畫家。雖然作為畫家他不算知名,幾乎沒有幾張畫作流傳下來。書寫效果類似於HB的字跡,由於金屬與紙張之間的磨損程度,磨損小到幾乎可以忽略,且比普通鉛筆更硬使用更久,所以「永恆筆」的稱號也正是因此而來。
  • 字如其人,怎樣才能提升書寫水平?
    一、書寫的重要性1、外化的形象儘管現在信息技術高速發展,但是書寫也是一個人的外化標誌之一。你想,寫的字好看是給自己長臉,這不也是自己的一個形象嗎?這和穿衣打扮是一樣的道理,好的衣服可以稱相貌身材,好的書寫能夠稱內涵修養。
  • 書寫夢想《思維導圖》學員招募! 一起了解探索大腦思維
    書寫夢想《思維導圖》學員招募! — 歡迎關注西陵婦聯 — 書寫夢想公益項目是由宜昌市婦聯發起