雖已數(shù)年,但未就學(xué)習(xí)專(zhuān)門(mén)寫(xiě)過(guò)文章,這回破處了。蒼蠅不叮沒(méi)有縫隙的雞蛋,領(lǐng)導(dǎo)不做沒(méi)有跟拍的表演,同樣,想到寫(xiě)CSS學(xué)習(xí)的文章也是有原因的(雖然我的不少行為沒(méi)有原因)。
情景再現(xiàn)(尊重隱私,下面故事中人名均為化名,有加工):
如月姑娘(本屆D2上微博中獎(jiǎng)上臺(tái)最漂亮的那位)的內(nèi)部分享會(huì)——關(guān)于CSS3 background相關(guān)內(nèi)容~~
……一頓巴拉巴拉……如月:假設(shè)背景圖片500px*500px,則應(yīng)用background-size:50%后,顯示的背景圖片大小就是250px*250px
三晶:咔!不對(duì)吧!……CSS中的所有百分比都是相對(duì)于父級(jí)元素的,不會(huì)是自身……
仁力:是啊,50%應(yīng)該相對(duì)的是容器指定類(lèi)型的box的尺寸…………又巴拉巴拉百分比值相關(guān)東西……
如月:哦,教我們網(wǎng)頁(yè)的那個(gè)老師讓我們line-height使用百分比形式,說(shuō)這樣更好,行高自適應(yīng)~~
三晶:咔!我信了你老師的邪!百分比行高并不具有自適應(yīng)性,除非使用該死低效的*通配符……
上面場(chǎng)景劇情可以總結(jié)為:“一個(gè)百分號(hào)認(rèn)識(shí)所引發(fā)的討論”,然后,引發(fā)的后續(xù)劇情就是:“一個(gè)百分號(hào)討論所引發(fā)的寫(xiě)文章的沖動(dòng)”。
“沖動(dòng)”在何處?在于我似乎看到了很多人都正面對(duì)的,但同時(shí)自己并未意識(shí)到的學(xué)習(xí)瓶頸。當(dāng)然,所謂瓶頸并不是你不能夠搞明白line-height:150%
和line-height:1.5
的區(qū)別,而是你沒(méi)有意識(shí)到要搞明白。
這就是我多次提到的:想法、意識(shí)遠(yuǎn)比技術(shù)本身更有傳授的價(jià)值!
一、何為瓶頸?“瓶頸”指瓶子的頸部,相對(duì)狹窄。這是很傳神的一個(gè)詞,因?yàn)楠M窄,因此難以突破;但是,一旦突破了,就是廣闊天空(偌大瓶身)!
小弟不才,湊合畫(huà)了個(gè)瓶頸示意圖,如下:
圖中,A → B → C → … 表示進(jìn)階,即相關(guān)技能的提升;①②③④則表示各個(gè)階段要進(jìn)入的瓶頸!這個(gè)適用于各行業(yè),各學(xué)派。
楊過(guò)的武功學(xué)習(xí)與瓶頸
我們都看過(guò)《神雕俠侶》,為便于理解,我就以“神雕大俠”楊過(guò)的武功成長(zhǎng)經(jīng)歷解釋上圖的含義:
各進(jìn)階階段:
各階段瓶頸:
您可以對(duì)照您目前CSS或JS的學(xué)習(xí),您覺(jué)得您目前突破的幾個(gè)學(xué)習(xí)瓶頸,目前在第幾階段?
二、只緣身在此山中CSS的學(xué)習(xí)入門(mén)很容易,也可以說(shuō)CSS學(xué)習(xí)的第①個(gè)瓶頸很大(見(jiàn)上圖①處瓶口),以至于不能稱(chēng)為“瓶頸”。可能只要1年甚至半年的時(shí)候,我們就能根據(jù)設(shè)計(jì)圖迅速成型頁(yè)面,能熟練使用些CSS hack,這個(gè)階段我們的成長(zhǎng)很快,只要有頁(yè)面寫(xiě)或只要四處轉(zhuǎn)轉(zhuǎn),我們每天都能汲取新知識(shí)。如果用二維曲線表示就是:
滿(mǎn)瓶不動(dòng)半瓶搖,這個(gè)階段實(shí)際上是CSS非常初級(jí)的階段,也是廣大頁(yè)面仔們最為浮躁,最自以為是,最覺(jué)得CSS不過(guò)如此的階段!所學(xué)越多越知所知甚少,那些成天叫囂的人往往半吊子居多。
所以,我這里有必要提個(gè)醒,睡在凍床上不知冷熱的“牛人”們,小看CSS的結(jié)果就是你丫直接在高速公路上被淹死!
不過(guò),大多數(shù)這個(gè)階段的同行們都清楚,自己還有很多東西要學(xué)的。但問(wèn)題在于,每天也努力工作了,也去花時(shí)間學(xué)習(xí)了,只是似乎只是純粹經(jīng)驗(yàn)的積累,沒(méi)有學(xué)到多少實(shí)質(zhì)性的東西。這就是學(xué)習(xí)的瓶頸!
拿“如月”同學(xué)舉例:工作是很認(rèn)真的,頁(yè)面也是能寫(xiě)的,前端書(shū)籍也買(mǎi)了很多,技術(shù)博客也會(huì)逛,前端技術(shù)論壇也參加。但是最后的效果呢?在我看來(lái),還是那個(gè)層次,沒(méi)有實(shí)質(zhì)性的提高!為什么呢?
泛泛的經(jīng)驗(yàn)積累式學(xué)習(xí),看不到自己技術(shù)的瓶頸所在,總在同一層次添磚加瓦。就跟楊過(guò)的A階段一樣,總是不停地學(xué)習(xí)新功夫,但都不是很深入很牛逼,結(jié)果,連對(duì)付霍都都吃力。
廣度與深度
任何一門(mén)學(xué)科都有其廣度以及深度。在CSS的A級(jí)階段,顯然所學(xué)基本上是擴(kuò)展自己知識(shí)面的廣度:各個(gè)CSS屬性熟悉,各個(gè)基本盒模型,各個(gè)聲明在不同瀏覽器下的表現(xiàn)熟悉,兼容性問(wèn)題如何修復(fù)熟悉等。然而,CSS的屬性就那么多,如果只從了解每個(gè)CSS屬性名稱(chēng)、屬性值上來(lái)看,肯定會(huì)有一天達(dá)到飽和的。此時(shí),我們就會(huì)覺(jué)得似乎沒(méi)有什么新的東西可學(xué)了,CSS的那點(diǎn)東西我都知道了;似乎工作就成了每天的重復(fù)。這就是瓶頸期!
看看這張圖:
我們很自然想到,要從A到B階段,只要向下,向深度發(fā)展就可以了。所以,如果您覺(jué)得現(xiàn)在CSS這塊學(xué)到的東西不多了,試試向垂直方向?qū)W習(xí)。
補(bǔ)充:瓶口間的跳躍
CSS3的出現(xiàn)似乎讓一些CSSer們的學(xué)習(xí)有了新的方向:CSS2.1中的那些CSS代碼我閉著眼睛都能敲出來(lái),實(shí)在太無(wú)趣了,終于出來(lái)個(gè)小三 – CSS3來(lái)調(diào)劑生活!
然而,從CSS2到CSS3的學(xué)習(xí)增加的只是一點(diǎn)廣度的知識(shí),多點(diǎn)時(shí)間,誰(shuí)都可以達(dá)到你這種程度(學(xué)習(xí)門(mén)檻低啊!)。在我看來(lái),無(wú)非就是從一個(gè)瓶口跳到另外一個(gè)稍顯時(shí)髦的瓶口而已。
視角的局限
武俠中,主角們的進(jìn)階似乎都離不開(kāi)所謂的“高人指點(diǎn)”;就算現(xiàn)實(shí)生活中,我們的人生也可能因?yàn)橐痪湓?huà)而發(fā)生重大改變。那“指點(diǎn)”的是什么呢?“改變”的又是什么呢?——看待問(wèn)題的方式以及角度!據(jù)說(shuō)阿里有個(gè)倒立文化,換個(gè)視角看問(wèn)題,會(huì)得到不同的答案。
我們很多人找不到學(xué)習(xí)的突破口,可能就是由于視角的問(wèn)題。
我們往往不是這樣子看的:
而是從上往下,只看到瓶口——
看不出水有多深,看不到瓶頸在哪里!想起了一部美劇——《迷失》,想起了一句古話(huà)——“只緣身在此山中”。
三、瓶頸在哪?我先問(wèn)幾個(gè)問(wèn)題,看看你是否能夠回答上來(lái)?
以上問(wèn)題可以大致判別你是A階段還是B階段。倒不是問(wèn)題本身,而是問(wèn)題所指的類(lèi)別。
問(wèn)題1, 2表示“深入的細(xì)節(jié)掌握”;3, 4表示“深入的機(jī)制理解”。再往后可能就是“網(wǎng)頁(yè)大事,為我所控”,“天下頁(yè)面,聽(tīng)我號(hào)令”,這要C階段了,先不予討論。
換句話(huà)說(shuō),您現(xiàn)在的瓶頸可能在于“細(xì)節(jié)掌握不夠”、“機(jī)制等理解不夠”。
關(guān)于細(xì)節(jié)
有人可能會(huì)反問(wèn):我為什么要知道dl, dd, dt標(biāo)簽?zāi)J(rèn)的margin值大小?我一般都是直接在CSS reset中設(shè)置:
body,h1,... ,dl,dt,dd,...,th,td { margin:0; padding: 0; }
你看,淘寶網(wǎng)首頁(yè)就是這么干的(global-min.css)!從實(shí)際應(yīng)用來(lái)看,我無(wú)需關(guān)心!
這樣的想法,類(lèi)似于:我根本不需要知道我的前任、現(xiàn)任、后任女友是否是處女,因?yàn)槲叶贾苯幼屗齻冏鎏幣ば迯?fù)!從實(shí)際應(yīng)用來(lái)看,我無(wú)需關(guān)心!
很多事情,如果你足夠了解之,就能靈活掌控之!即所謂的駕馭能力。CSS細(xì)節(jié)了解,有助于你更好地駕馭CSS, 而不是被CSS調(diào)試,被瀏覽器劫持。
3~4兩的大閘蟹雖然也有人要,但是,多啊,不值幾個(gè)錢(qián);但是半斤以上的大閘蟹的單價(jià)就要翻番。
盲從CSS reset的人也有人要,但是,多啊,不值幾個(gè)錢(qián);但是,知根究底的人這身價(jià)就要翻番了。
如果你有自己想法,知根知底,你可能就是這樣做reset的:
body, h1, ..., dl, dd { margin: 0; }
dt
標(biāo)簽的reset只是白白浪費(fèi),增加頁(yè)面渲染負(fù)荷;padding
屬性值僅極少標(biāo)簽(ol
, ul
)有,其他標(biāo)簽無(wú)需浪費(fèi)渲染重新設(shè)置。
//zxx: 對(duì)于淘寶首頁(yè)的渲染速度我就不說(shuō)什么了
有不少人曾問(wèn)我:“你的那個(gè)CSS架構(gòu)我用了,很不錯(cuò),使用很方便。但是,我經(jīng)常CSS庫(kù)的類(lèi)名有5個(gè)甚至更多!而你寫(xiě)的頁(yè)面很少會(huì)這樣,為什么呢?”
<span class="db l h24 lh24 b">注意:</span>我是……
如果你對(duì)CSS細(xì)節(jié)足夠掌握,可能您的使用就會(huì)是這樣:
<strong class="l lh24">注意:</strong>我是……
這就是我說(shuō)過(guò)的,如果頁(yè)面開(kāi)發(fā)工程師對(duì)CSS屬性理解不夠透徹,我的這種架構(gòu)對(duì)其而言反而會(huì)略顯吃力!
關(guān)于理解
你是否有這樣的調(diào)試經(jīng)歷:尼瑪IE(x)瀏覽器下出了個(gè)奇怪問(wèn)題,哥哥我不知道原因啊原因啊原因,然后很苦逼地把覺(jué)得有可能的CSS屬性一個(gè)一個(gè)試驗(yàn)——改一個(gè)刷一下,看看有沒(méi)有變好。
唉,可憐的娃,寶貴的青春就這么蹉跎掉了,省下來(lái)和前臺(tái)美女MM調(diào)調(diào)情也比這強(qiáng)多了~~
為什么我們需要深入理解CSS的一些表現(xiàn)?
1. 所謂“對(duì)癥下藥”,你要先知道這個(gè)癥,這個(gè)根才可以。同樣,當(dāng)我們對(duì)CSS的底層表現(xiàn)有一定的理解與認(rèn)識(shí)的時(shí)候,遇到一些看似奇怪的問(wèn)題,我們可以一針見(jiàn)血,一語(yǔ)中的,分分鐘搞定,然后,聊天,喝茶,把妹~~
2. 所謂“發(fā)明創(chuàng)造”,你要先知道其基本原理,工作機(jī)制。同樣,當(dāng)我們面對(duì)CSS的一些特殊需求的時(shí)候,一些看似蛋疼的問(wèn)題,我們可以發(fā)揮我們的創(chuàng)造性思維,創(chuàng)建一個(gè)屬于你的首創(chuàng)新方法,然后賣(mài)萌,邀功,得瑟~~
例如,我之前折騰過(guò)的inline-block兩端對(duì)齊等。
理解的對(duì)與錯(cuò)
每個(gè)人的成長(zhǎng)經(jīng)歷不同,大腦擅長(zhǎng)處理的東西也不同,導(dǎo)致其看待與理解事物的方式也不同。因此,對(duì)于同一CSS表現(xiàn)的差異,每個(gè)人的理解都不同。
一旦有所差異,就有所謂的“對(duì)錯(cuò)”之爭(zhēng)。估計(jì)不少人會(huì)拿《CSS權(quán)威指南》上的東西說(shuō)事:你那種理解是錯(cuò)誤的,CSS權(quán)威指南上說(shuō)……或W3C官方文檔解釋說(shuō)……
我大學(xué)電路老師最后一節(jié)課專(zhuān)門(mén)講了她的科學(xué)觀:何為科學(xué)?能夠自圓其說(shuō),自成體系即是科學(xué)。中醫(yī)算科學(xué)嗎?算!因其有一套自己解釋暢通的理論體系。
同樣,對(duì)于CSS的理解,我個(gè)人一直認(rèn)為什么對(duì)錯(cuò)的爭(zhēng)執(zhí)等都是沒(méi)有意義的。如果你的解釋可以自圓其說(shuō),自成體系,且應(yīng)用無(wú)誤,哪怕你的解釋與什么規(guī)范啊權(quán)威啊八竿子都打不著,別人壓根理解不了,你都是對(duì)的,OK的!
拘泥只會(huì)限制自身的創(chuàng)造力以及認(rèn)知能力。火影的世界算是世界嗎?是,自圓其說(shuō),自成體系!海賊王的世界算是世界嗎?是自圓其說(shuō),自成體系。
因此,如果你是設(shè)計(jì)出身,或文學(xué)出身的。什么復(fù)雜邏輯,深?yuàn)W解釋理解不了,你大可摒棄之,用你自己的世界去解釋其表現(xiàn),你的感性思維以及藝術(shù)情懷只會(huì)讓這個(gè)世界變得更精彩!那些自以為是,抱殘守缺的雜碎們就不用鳥(niǎo)他們,讓他們隨著時(shí)間消逝去吧~~
好比面對(duì)“浮動(dòng)元素會(huì)讓外部高度塌陷的原因?”這個(gè)問(wèn)題,你可以這樣解釋?zhuān)?/p> 浮動(dòng)是敏感詞浮動(dòng)是海市蜃樓浮動(dòng)是個(gè)不孝子,會(huì)讓爸爸顏面無(wú)存,顯得很矮小浮動(dòng)是個(gè)魔鬼,和絕對(duì)定位是兄弟,本都屬于天上人浮動(dòng)是中國(guó),講究面子工程浮動(dòng)是中國(guó)股市,吸引屁民跟在左右,本身就是個(gè)泡沫……
只要這類(lèi)解釋能夠把其他所有的CSS表現(xiàn)都解釋地通,成為體系,都是正確且深入的理解。
四、如何突破?知道問(wèn)題在哪里,其實(shí)已經(jīng)解決了一大半。下面的問(wèn)題如何實(shí)踐了!
楊過(guò)16年前就開(kāi)始意識(shí)到要可以自創(chuàng)武功(類(lèi)似于我們自創(chuàng)CSS實(shí)現(xiàn)),但是,最終實(shí)現(xiàn)確實(shí)N年以后,不斷的感悟以及練習(xí)才得以成功。
即使你再天才(楊過(guò)夠天才吧),機(jī)遇夠神奇(楊過(guò)經(jīng)歷夠神奇吧),也也是要會(huì)很多功夫和精力才能到達(dá)另外一個(gè)層次的。只是別人可能30年的,你只要20年而已(黃藥師說(shuō)過(guò),楊過(guò)20歲的武功修為其30歲才達(dá)到)。
我想了想,關(guān)于突破瓶頸的建議我有三個(gè):戒驕戒躁、分享討論、打破重組。
關(guān)于戒驕戒躁
如果有人當(dāng)面說(shuō)你:“旺財(cái)啊,你這個(gè)人有時(shí)候比較浮躁啊!”你可能心里或嘴上就嘀咕了:“有嗎?我不覺(jué)得啊。我做事很認(rèn)真的啊!”
究竟如何呢?人們常說(shuō)當(dāng)局者迷旁觀者清。
假設(shè)你看到了一個(gè)用法:
新聞熱點(diǎn)
疑難解答
圖片精選