為解決CSS設(shè)計(jì)難題而生

趁著Web項(xiàng)目的開工哲思,我一口氣看完了《CSS揭秘》這本書页畦。此書面向中高級CSS用戶坯临,部分內(nèi)容難度不小,不亞于編程本身故痊。難以置信顶瞳,如此精彩的內(nèi)容,是一位年輕的女士寫就崖蜜,致敬!

這本書是為了解決網(wǎng)站開發(fā)中CSS的設(shè)計(jì)難題而產(chǎn)生的客峭。它針對常見卻又比較難以現(xiàn)的需求豫领,給出了較好的解決方案,并且說明了背后的原理舔琅。但是此書并不是只對從事Web開發(fā)的人有價(jià)值等恐,稍后有說明。

回顧一下近年來Web開發(fā)的歷史和人們手中設(shè)備的迭代改進(jìn)备蚓,我們可以看到一個(gè)較為清楚的脈絡(luò)课蔬。似乎事物總沿著這樣的路徑發(fā)展:

能用 –> 好用 –> 漂亮 –> 個(gè)性。

先做到能用郊尝,再改進(jìn)成好用二跋;然后追求漂亮和個(gè)性,以及更好的體驗(yàn)流昏。

想想你用過的手機(jī)吧扎即!顯示3行文字的黑白屏 —> 彩屏的飛躍 —> 更大、顯示效果更佳的彩屏 —> 劃時(shí)代的iPhone —> 未來况凉。網(wǎng)站也是一樣谚鄙,你可以找一下10多年前網(wǎng)站頁面的截圖,以現(xiàn)在的網(wǎng)站設(shè)計(jì)標(biāo)準(zhǔn)和展示效果來看刁绒,土的都掉渣了闷营,慘不忍睹。

從功能需求到追逐個(gè)性體驗(yàn)知市,人類從不吝嗇消費(fèi)計(jì)算能力傻盟。為了實(shí)現(xiàn)各種特別的顯示效果速蕊,達(dá)到更好的人機(jī)交互體驗(yàn),消耗能量在所不惜莫杈。從某種意義上說互例,人類是視覺動(dòng)物。但是筝闹,這種對體驗(yàn)無止境的需求媳叨,導(dǎo)致對界面的要求日益提升,挑戰(zhàn)很嚴(yán)峻关顷。不光是火熱的Web開發(fā)糊秆,其它涉及界面的軟件開發(fā)也一樣面臨這個(gè)壓力。

很多IT公司里面有一個(gè)必備的職位 – 美工议双,或者有一個(gè)設(shè)計(jì)團(tuán)隊(duì)痘番。習(xí)慣上,一個(gè)產(chǎn)品在設(shè)計(jì)時(shí)平痰,都讓美工先設(shè)計(jì)出效果圖汞舱。在經(jīng)過反復(fù)的討論修改,最終定稿后宗雇,美工切圖昂芜,按指定的格式,給出分割好的元素赔蒲,技術(shù)人員再想辦法套到軟件或頁面里面去泌神,調(diào)校,生成產(chǎn)品舞虱。

麻煩來了欢际。這里面的矛盾在于:設(shè)計(jì)習(xí)慣追求個(gè)性,標(biāo)新立異矾兜,打破常規(guī)损趋。設(shè)計(jì)出的界面顯示、交互效果好椅寺,意味著更多的破壞系統(tǒng)既有元素的默認(rèn)效果和規(guī)則舶沿,甚至創(chuàng)造完全沒有的東西。但是這種創(chuàng)意配并,實(shí)現(xiàn)往往較為困難括荡。比如使用一批特別設(shè)計(jì)的按鈕,像這種:

純CSS按鈕

按鈕很有質(zhì)感溉旋,做的很好看畸冲,而且是真正的按鈕,點(diǎn)擊有反應(yīng)的。下面這個(gè)邑闲,是瀏覽器默認(rèn)的按鈕效果:

瀏覽器默認(rèn)渲染出的按鈕效果實(shí)在稀松平常算行,正是因?yàn)闆]人喜歡,不夠個(gè)性苫耸,才要重新設(shè)計(jì)州邢。但是復(fù)現(xiàn)美工的設(shè)計(jì)并不容易。技術(shù)上比較偷懶的辦法褪子,就是貼圖量淌,用切好的圖片元素模擬一下∠油剩可弊端是細(xì)節(jié)模擬難度大呀枢,比如按下按鈕的細(xì)微變化。Web上使用笼痛,甚至要借助JavaScript代碼完成裙秋,不但要管理圖片,還要管理關(guān)聯(lián)的代碼缨伊。

默認(rèn)效果
毛玻璃效果

如果是客戶端程序使用這些設(shè)計(jì)摘刑,則意味著要寫很多代碼,即便你使用第三方類庫刻坊,也不能完全擺脫枷恕。假如不想用簡陋的圖片模擬設(shè)計(jì)效果,就必須自己用代碼去一個(gè)線條一個(gè)背景的逐個(gè)繪制紧唱,這會(huì)耗費(fèi)程序員很多的時(shí)間和精力活尊,逼真的復(fù)現(xiàn)設(shè)計(jì)隶校,絕非易事漏益。更讓人泄氣的是,這個(gè)開發(fā)過程本質(zhì)上和業(yè)務(wù)邏輯卻沒有什么關(guān)系深胳,它就是一套界面效果绰疤。而且它還不好修改,這次實(shí)現(xiàn)出來舞终,下次設(shè)計(jì)變了轻庆,代碼還得重寫。

迅速發(fā)展的CSS敛劝,很可能成為拯救者余爆。Web開發(fā)的火熱,推動(dòng)著相關(guān)領(lǐng)域的飛速進(jìn)步夸盟。原本混作一團(tuán)的HTML技術(shù)蛾方,分化為3大支柱:HTML-結(jié)構(gòu)、CSS-表現(xiàn)、JavaScript-行為桩砰。隨著瀏覽器對相關(guān)標(biāo)準(zhǔn)的逐步實(shí)現(xiàn)拓春,CSS逐漸發(fā)展出了令人難以置信的界面展示能力,而且潛力還遠(yuǎn)未釋放出來亚隅。

為什么這么講硼莽?我覺得可以把瀏覽器看成繪圖機(jī),CSS指令很精巧煮纵,它告訴繪圖機(jī)如何正確的繪制各種預(yù)定義的效果懂鸵,如同編程語言的“宏定義”一般。用戶可以把獲得瀏覽器支持的各類“宏定義”組合起來醉途,通過參數(shù)反復(fù)調(diào)校矾瑰,達(dá)到自己的期望。這是更高程度的抽象隘擎,效率當(dāng)然比手工開發(fā)繪圖機(jī)要高的多殴穴。比如一條正確的CSS gradient指令就可以生成一個(gè)漸變效果,手工寫要費(fèi)多少工夫货葬?

界面的實(shí)現(xiàn)大體可以分成兩大類:效果顯示和位置控制采幌。在我看來,CSS精于效果顯示震桶,而位置控制較弱休傍,需要通過指令更多調(diào)整。這其實(shí)跟HTML布局特性蹲姐、瀏覽器渲染流程有關(guān)磨取。CSS技術(shù)的演進(jìn)和能力的提升,大量的消除了對圖片裁切柴墩、管理的需要忙厌。常見的各種界面元素,CSS都能控制江咳,一些常見的圖標(biāo)逢净,甚至都有可以用于CSS的字體實(shí)現(xiàn),根本無需作圖歼指。那些所謂的圓角爹土,就是一條指令。我甚至認(rèn)為踩身,界面中除了具備宣示意義的圖片胀茵,其它只有裝飾作用的圖,都可以通過CSS指令生成挟阻,完全無須切圖琼娘,更不必單獨(dú)管理呵哨。這些改進(jìn),減輕了網(wǎng)站的訪問壓力轨奄,提高了訪問速度孟害,節(jié)約了流量成本,是值得一做的挪拟。

不過挨务,要熟練的應(yīng)用CSS指令也并非易事。主要原因是:Web領(lǐng)域變化很快玉组,CSS指令很多谎柄,背后的原理理解起來也不是輕而易舉。瀏覽器對一些新的指令支持度參差不齊惯雳,越是新的指令朝巫,支持度越低。所以石景,我們需要老師指導(dǎo)劈猿,告訴我們?nèi)绾握_的去做。

《CSS揭秘》就是一位老師潮孽,它面向解決效果顯示和位置控制問題揪荣。這本書不是針對一個(gè)Web項(xiàng)目編纂的完整的教程,也不是API說明往史。它對當(dāng)下常見的界面需求仗颈,給出了自己的解決辦法。比如控制背景椎例、邊框挨决,生成形狀,產(chǎn)生視覺效果订歪,控制字體脖祈,調(diào)整結(jié)構(gòu)布局,使用動(dòng)畫陌粹。根據(jù)不同的問題分類撒犀,它像本手冊一般做出了問題的解答福压。作者展現(xiàn)了對CSS指令的深刻理解掏秩,功力深厚。一些效果的實(shí)現(xiàn)思路荆姆,沒有扎實(shí)的功底是很難想得到的蒙幻。

它遵循“問題提出、解決方案胆筒、思路和原理”這個(gè)過程進(jìn)行闡述邮破。你不僅可以知道那炫目的頁面效果是通過什么CSS指令做出來的诈豌,還能了解背后的設(shè)計(jì)思路和CSS指令原理。很多人解決問題的辦法是:搜索出一個(gè)看上去還行的例子抒和,復(fù)制代碼過來矫渔,稍加修改,能用就好摧莽∶硗荩可如果對背后的原理和思路不做推敲和研究,就會(huì)導(dǎo)致無法應(yīng)對變化镊辕。而理解了原理油够,你就能舉一反三,不受現(xiàn)有效果的拘泥征懈。即便你記不住具體細(xì)節(jié)石咬,還可以查閱它嘛。所以花點(diǎn)時(shí)間去理解設(shè)計(jì)原理卖哎,是值得的鬼悠。

這本書,其實(shí)并不僅僅對Web開發(fā)亏娜,前端開發(fā)有參考價(jià)值厦章,對其他涉足界面開發(fā)的人員都有潛在的幫助。這是因?yàn)閃eb開發(fā)的模式照藻、理念及其技術(shù)袜啃,已經(jīng)廣泛滲透到其它領(lǐng)域。比如手機(jī)應(yīng)用程序幸缕,傳統(tǒng)Windows客戶端應(yīng)用群发,都已經(jīng)有了不錯(cuò)的使用Web技術(shù)開發(fā)產(chǎn)品的解決方案。應(yīng)用程序內(nèi)嵌瀏覽器內(nèi)核发乔,渲染應(yīng)用內(nèi)部的HTML熟妓、CSS,執(zhí)行JavaScript指令栏尚。CSS在這里起愈,顯示出巨大的威力。各種絢麗的效果译仗,幾條指令就能完成抬虽,修改也很容易。既不用作圖纵菌,更不用切圖阐污、管理。讓你自己寫代碼繪制咱圆,要搞到什么時(shí)候笛辟?它大大節(jié)省了界面開發(fā)的成本功氨。

CSS變得越來越復(fù)雜,各類指令字手幢、參數(shù)一大堆捷凄。它越來越像一門特定領(lǐng)域的編程語言,解釋器是瀏覽器围来。它也在侵蝕JavaScript的地盤纵势。一些界面效果,原本要依靠js代碼完成管钳,可是如果大家發(fā)現(xiàn)是通用需求钦铁,可能瀏覽器就增加個(gè)指令,一步到位才漆。

不過牛曹,本書的作者也提到,針對一些特定的需求醇滥,使用SVG結(jié)合CSS黎比,效果會(huì)更好。常用的解決問題的思路是:層疊鸳玩、重復(fù)阅虫。層疊可以前后元素指令不同,進(jìn)而產(chǎn)生覆蓋不跟、抵消颓帝,重復(fù)則可以創(chuàng)造整體效果。 如果要用好CSS窝革,還得參考下CSS標(biāo)準(zhǔn)規(guī)范购城,了解已有的指令功能,并根據(jù)目標(biāo)瀏覽器平臺(tái)虐译,確定支持程度瘪板。下面幾個(gè)網(wǎng)站可以參考:

https://www.w3.org/TR/#tr_CSS

http://caniuse.com/#home

http://html5test.com/

我想過這個(gè)問題:究竟是什么讓CSS這么強(qiáng)大?是深思熟慮定義的統(tǒng)一概念漆诽,全面多樣的屬性設(shè)定侮攀,靈活強(qiáng)大的指令字、參數(shù)厢拭,以及它們的相互組合造就了這一切兰英。

本文后面給出當(dāng)下瀏覽器對W3C標(biāo)準(zhǔn)的支持程度,以得分為序蚪腐。

谷歌瀏覽器是最積極的Web標(biāo)準(zhǔn)支持者


Firefox緊隨其后



Microsoft Edge也還行


Safari差強(qiáng)人意箭昵,不太滿意

最后一名IE税朴,只能呵呵回季,難怪招人恨

作者博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末家制,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子泡一,更是在濱河造成了極大的恐慌颤殴,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鼻忠,死亡現(xiàn)場離奇詭異涵但,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)帖蔓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進(jìn)店門矮瘟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人塑娇,你說我怎么就攤上這事澈侠。” “怎么了埋酬?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵哨啃,是天一觀的道長。 經(jīng)常有香客問我写妥,道長拳球,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任珍特,我火速辦了婚禮祝峻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扎筒。我一直安慰自己呼猪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布砸琅。 她就那樣靜靜地躺著宋距,像睡著了一般。 火紅的嫁衣襯著肌膚如雪症脂。 梳的紋絲不亂的頭發(fā)上谚赎,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機(jī)與錄音诱篷,去河邊找鬼壶唤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛棕所,可吹牛的內(nèi)容都是我干的闸盔。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼琳省,長吁一口氣:“原來是場噩夢啊……” “哼迎吵!你這毒婦竟也來了躲撰?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤击费,失蹤者是張志新(化名)和其女友劉穎拢蛋,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔫巩,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡谆棱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了圆仔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垃瞧。...
    茶點(diǎn)故事閱讀 40,110評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖坪郭,靈堂內(nèi)的尸體忽然破棺而出皆警,到底是詐尸還是另有隱情,我是刑警寧澤截粗,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布信姓,位于F島的核電站,受9級特大地震影響绸罗,放射性物質(zhì)發(fā)生泄漏意推。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一珊蟀、第九天 我趴在偏房一處隱蔽的房頂上張望菊值。 院中可真熱鬧,春花似錦育灸、人聲如沸腻窒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽儿子。三九已至,卻和暖如春砸喻,著一層夾襖步出監(jiān)牢的瞬間柔逼,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工割岛, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留愉适,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓癣漆,卻偏偏與公主長得像维咸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,176評論 25 707
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案癌蓖? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,754評論 1 92
  • 轉(zhuǎn)載請注明:作者叨叨戚 這個(gè)話題费坊,因?yàn)橐粋€(gè)愛抱怨的人引發(fā)倒槐。我告訴他旬痹,之所以抱怨附井,最關(guān)鍵的,是他有任性的口和...
    船長戚戈XGeek001閱讀 862評論 0 2
  • 紅鯉魚自出生两残,便活在自己的世界里永毅,一個(gè)魚缸,小而透明人弓,所以它時(shí)常撞的一塌糊涂沼死,直到有一天,它發(fā)現(xiàn)崔赌,水面上是開闊的意蛀,...
    小狗汪汪汪閱讀 1,210評論 0 2
  • 算了算了算了算了算了算了算了再見
    要做個(gè)講道理的人閱讀 182評論 0 0