/面包理想
一轉(zhuǎn)眼已經(jīng)2018年,前端行業(yè)也風風雨雨地走過了10多年,網(wǎng)頁布局也從最原始的文檔變成了精彩紛呈的交互。當我看到第四代CSS布局技術(shù)的時候,在驚嘆互聯(lián)網(wǎng)發(fā)展如此突飛猛進的同時,不禁會有一個疑問:CSS經(jīng)歷1.0到3.0的版本變遷,最終又將走向哪里?
今天我們就回顧一下CSS簡史和四次布局技術(shù)的躍遷。
1.CSS簡史
為什么我們需要回顧一下CSS簡史呢?
1.了解過去能夠更好地預測未來,畢竟太陽底下沒有什么新鮮事。
2.相比預測未來,通過了解CSS發(fā)展演變趨勢,能夠科學合理地評判CSS的發(fā)展,指導我們學習CSS的核心技術(shù),讓我們在有限的精力和時間內(nèi)學對知識,學好知識。
那是1989年的第一場雪,比1988年來的更早一些,伯納斯·李(Tim Berners-Lee)以超人的智慧和消耗了前額無數(shù)濃密的頭發(fā)為代價發(fā)明了World Wide Web,沒有他就沒有我們今天互聯(lián)網(wǎng)相關(guān)的工作,也就沒有了這個專欄教程,請允許我代表廣大前端致以崇高的敬意。我們先一睹大神的風采。
對互聯(lián)網(wǎng)之父,我只想對他說一句話,有一款洗發(fā)水增發(fā)效果挺好的,我一直用,你要不要試試?
互聯(lián)網(wǎng)誕生了以后,最初的網(wǎng)頁僅僅是純文本,但是隨著互聯(lián)網(wǎng)的發(fā)展,大家意識到web的原始版本根本就沒有提供一種裝飾網(wǎng)頁的方法。這就好比一個嬰兒不會穿著衣服出生一樣,孩子大了,總不能裸奔吧?這個時候兩個大神提供了解決方案Pei Yaun Wei和Andreesen。
Pei Yaun Wei說,這個好辦,我們可以給孩子穿上紙尿褲。
Pei-Yuan Wei在1991年創(chuàng)建圖形瀏覽器 ViolaWWW ,他整合了自己提出的樣式語言到自己開發(fā)的瀏覽器中,還期望自己的樣式語法最終能成為web關(guān)于樣式的官方標準。雖然這個目標并未達到,但是他提出的樣式語法確實為其它的一些樣式語法提供了一些靈感。
Andreesen說,那玩意得換多麻煩,我給孩子畫一身衣服吧,當然你懂的,最后Pei Yaun Wei的方案被采用了,但是我們還是看看Andreessen畫出來的情況有多亂。
與此同時,Andreessen 在他開發(fā)的網(wǎng)景瀏覽器中進行了不同的嘗試。他并沒有創(chuàng)建一種分離式的標記語言,而是采取拓展HTML標簽的方法來包含非標準化的HTML標簽已達到裝飾網(wǎng)頁的目的。不幸的是,沒過多久,網(wǎng)頁就失去了所有的語義化并看起來像下面這樣混亂:
<MULTICOL COLS="3" GUTTER="25"> <P><FONT SIZE="4" COLOR="RED">This would be some font broken up into columns</FONT></P></MULTICOL>
最終被大家采納的語言是由Hakon Wium 在 1994年 10月提出的樣式語法。它被稱為樣式層疊表,簡稱CSS,但是直到1996年的時候,CSS才演變成我們熟悉的樣子。
html { margin-left: 2cm; font-family: "Times", serif; }h1 { font-size: 24px; }
然后在1998年5月W3C發(fā)表了CSS2,緊接著一個讓我們深惡痛覺的瀏覽器誕生了!對沒錯,就是你深惡痛絕的那個萬能的IE6,2001年微軟發(fā)布了IE6,不過搞笑的是,IE6最初的出現(xiàn)確實很大程度推動了CSS發(fā)展。那時候的網(wǎng)頁已經(jīng)變成跟現(xiàn)在很接近了。
按照常理你肯定會想,后面我就知道了,你不用說了,然后就是CSS3.0了。好吧,如果是我,我也這樣想,但是國際友人的腦回路可能跟我們不一樣,事實上,CSS3早于1999年已經(jīng)開始制訂,直到2011年6月7日,CSS 3 Color Module終于發(fā)布為W3C Recommendation。這個故事告訴我們兩件事:
1.w3c這個組織活的真夠長,甚至比很多讀者年齡都大。
2.不是CSS正式版發(fā)布了你才放心使用,如果等到那個時候使用,你的項目可能未曾綻放就枯萎了。
細心的讀者可能會問了,CSS3正式版什么時候發(fā)布???另外CSS4.0什么時候發(fā)布?
好吧,我只能告訴你隨緣吧……而且沒有CSS4.0了,也不會有CSS5.0了。
來我們再看看國際友人的腦回路:
簡單地說,就是從CSS3開始,CSS規(guī)范就被拆成眾多模塊(module)單獨進行升級,或者將新需求作為一個新模塊來立項并進行標準化。因此今后不會再有CSS4、CSS5這種所謂大版本號的變更,有的只是CSS某個模塊級別的躍遷。
按照CSS工作組的說法,CSS歷史上并沒有版本的概念,有的只是“級別”(level)的概念。比如,CSS3其實是CSS Level 3,CSS2是CSS Level 2,而CSS Level 1當然就是CSS1。每個級別都以上一個級別為基礎。
大家可能說這個命名好亂啊,這事兒我只想跟你說,你就把CSS工作組當成你女朋友就好了,她開心就好,她說的都是對的,她說啥就是啥……
至于我們,會用就好了。
CSS出現(xiàn)的好處就是讓結(jié)構(gòu)和表現(xiàn)分離,可以更靈活的修飾網(wǎng)頁,學習也很簡單。這里我更想說說它的不足。
1.CSS只有一個全局的命名空間,所以是無法避免出現(xiàn)選擇器沖突的。
2.模塊化做的不夠好,所以造成嵌套和覆蓋混亂,容易產(chǎn)生一大堆亂糟糟的樣式。
所以現(xiàn)在CSS也在向“模塊化、JS化發(fā)展”
不過客觀地說,CSS的出現(xiàn)確實是互聯(lián)網(wǎng)里程碑式的進步。
CSS其實就做了兩件事:
1.如何布局
2.元素怎么表現(xiàn)
說直白一點就是兩件事,一個房子是蓋成兩室一廳還是三室兩廳,另一件事是精裝修。
這里大家就會看到如果一個房子180平米隔成1個10平米的主臥170平米的廁所,你再怎么精裝修也不會是一個宜居的房間。所以布局在CSS中是極其重要的。與CSS發(fā)展簡史類似,CSS布局也經(jīng)歷了一代又一代的迭代,才成為當前的樣子。
接下來我們就說說CSS布局簡史。
2.CSS布局簡史
初代table布局
在1997年的時候,David Siegel 改變了web,他自己研究出了一項網(wǎng)頁布局技術(shù),利用html中的table元素和gif圖片縫合在一起,創(chuàng)造了表格布局技術(shù),之后他就猶如一頭猛獸泛濫起來。
優(yōu)點:布局容易、快捷、兼容性好
缺點:改動不便,需要重新調(diào)整,工作量大
由于互聯(lián)網(wǎng)網(wǎng)站越來越復雜,內(nèi)容和業(yè)務更新頻繁,所以table布局是完全不能勝任的,以至于table布局的發(fā)明人都說:
“我把炸醬和面倒在了一起,并且沒法分開它?!?/p>
不過這個真不是我杜撰出來的,原文:
David Siegel:“有人說我毀掉了Web,我回答他們,的確如此。我毀掉了Web是因為我把巧克力和花生醬混合在一起卻再也不能把它們分開。我犯下了把結(jié)構(gòu)跟表現(xiàn)混合在一起的錯誤?!?/p>
然后第二代布局技術(shù)登場了,
CSS+div布局
CSS+div布局總結(jié)起來有三大優(yōu)點,
1.省時,學習容易,寫代碼也很容易,很快,效率高
2.省事,如果業(yè)務邏輯變了,改起來特別方便快捷
3.省錢,代碼量少,省帶寬,適合seo
基于這三年不難看出CSS+div布局人畜無害,人見人愛,也就不難解釋為什么被廣泛地使用成為目前主流的布局技術(shù)了。當然了他也有缺點:
1.需要考慮平臺兼容性,對制作人員的技能要求較高。
2.在移動端布局顯得有些力不從心,如未知寬高float內(nèi)部元素居中、垂直水平布局、響應式布局等方面略顯繁瑣。
基于此,第三代布局技術(shù)應運而生。
Flex布局
優(yōu)點:
1.CSS3的布局方式,可以在不使用其他框架的情況下,簡便、完整、響應式地實現(xiàn)各種頁面布局 2.移動端布局簡直太友好
缺點:
兼容性較差,IE瀏覽器版本在9.0以上,基本要10.0 對于其他瀏覽器,要求兼容性寫法
Flex布局日漸成為移動端主流布局技術(shù),但是它是單一維度的布局,這個我會在專欄后面講到,有時候也會捉襟見肘,所以目前出現(xiàn)了第四代的布局技術(shù):
grid布局
因為目前大部分瀏覽器并不支持這種技術(shù),但是它代表了網(wǎng)絡發(fā)展,這里大家保持關(guān)注就好,這里我重點說下它為什么可以稱為第四代網(wǎng)絡布局技術(shù)。首先一個觀點大家先記?。?/p>
它并不會取代第三代的布局技術(shù),而是顛覆和突破。就好像Flex遠比div+CSS布局更方便,但是div+CSS依然有用武之地。
我們說下它的突破之處:
1.flex對標的是float,本質(zhì)上還是一維布局,這就跟別人開著夏利,你開奔馳都是地面上跑沒啥本質(zhì)區(qū)別一樣。但是grid升維了,grid是飛機,在地面馬路這條線一維之上讓人能夠思考高度這個維度,以前是汽車一維交通工具(你只能在水平方向一個方向開),飛機是二維(能俯沖了(橫向、縱向同時)),所以grid可以說是拓寬了CSS布局的維度。不排除將來會有三維布局的出現(xiàn)。到時候CSS不僅僅能控制橫向布局,縱向布局,還可以深度布局(這個要依賴于三維展示的出現(xiàn),如VR,AR三維立體的展示設備出現(xiàn))。
2.grid布局里面采用了“可視化布局(template部分,所見即所得)”,這個是顛覆了傳統(tǒng)的,寫一句代碼刷一下瀏覽器這樣的開發(fā)方式,不排除以后會出現(xiàn)代碼即效果的開發(fā)模式。比如你在一個設備上畫一個區(qū)域,然后畫輪播圖。
這種方式類似于vc++控件方式,但是更智能,也更友好。誰說不可能呢?大家不要忘了grid布局的來源是早就廢棄的table布局。說到這里我多說一句搞笑的微軟,frontpage沒火,dreamwaver火了,最早提出“canvas”概念的 VML沒火,最后html5的canvas火了,連CSS3網(wǎng)格布局也是由微軟創(chuàng)建的一個模塊 ,最后火起來居然沒人認識它。心疼微軟一秒鐘。
說到這里大家對CSS簡史和布局也有所了解了,我們總結(jié)下,通過本文你應該學到:
(1)CSS的發(fā)展歷史。
(2)熟知布局的發(fā)展歷史,以便對未來布局技術(shù)的發(fā)展有一個客觀的判斷,來選擇是否學習。
通過本文的學習大家已經(jīng)對CSS相關(guān)基礎知識有所了解,接下來我們就開始真正的進入技術(shù)的學習,大家是不是迫不及待了呢?
2月24日消息,“高莊村村委會委員單某長期霸占村集體耕地!”今年6月,一封舉報件送到了河南省鄲城縣宜路鎮(zhèn)紀委工作人員的手中。被舉報人單某系宜路鎮(zhèn)高莊村村委會委員、文書,卻并非黨員。
村(社區(qū))一級的黨員干部違了紀,會由相關(guān)黨組織進行處理。那么,如果是非黨員干部胡作非為,誰可以來管呢?
監(jiān)察機關(guān)管。監(jiān)察體制改革后,根據(jù)監(jiān)察法,“基層群眾性自治組織中從事管理的人員”被納入監(jiān)察范圍,各級監(jiān)察機關(guān)均可以按照管理權(quán)限管轄本轄區(qū)內(nèi)上述人員所涉監(jiān)察事項。另外,上級監(jiān)察機關(guān)可以辦理下一級監(jiān)察機關(guān)管轄范圍內(nèi)的監(jiān)察事項,必要時也可以辦理所轄各級監(jiān)察機關(guān)管轄范圍內(nèi)的監(jiān)察事項。
同時,監(jiān)察法規(guī)定了監(jiān)察委員會設立到縣一級,那么廣大的鄉(xiāng)鎮(zhèn)區(qū)域呢?當然有辦法。根據(jù)監(jiān)察法,各級監(jiān)察委員會可以向所管轄的行政區(qū)域等派駐或者派出監(jiān)察機構(gòu)、監(jiān)察專員。派駐或者派出的監(jiān)察機構(gòu)、監(jiān)察專員根據(jù)授權(quán),按照管理權(quán)限依法對公職人員進行監(jiān)督,提出監(jiān)察建議,依法對公職人員進行調(diào)查、處置。
實踐中,縣級監(jiān)委主要通過向轄區(qū)鄉(xiāng)鎮(zhèn)(辦事處)設立派出監(jiān)察機構(gòu),設置若干監(jiān)察員,有效承接、履行監(jiān)察職能,推動監(jiān)察職能向基層延伸。
接到舉報后,鄲城縣宜路鎮(zhèn)派出監(jiān)察員辦公室立即把問題線索呈報縣監(jiān)委,履行相應程序后便成立調(diào)查組進行調(diào)查核實。通過詢問、走訪、實地測量,最終查實了單某依仗其村干部身份霸占村集體耕地1畝11年的事實,并依據(jù)縣監(jiān)委授權(quán)對其進行相應處理。
當然,有的鄉(xiāng)鎮(zhèn)面臨監(jiān)督力量薄弱、能力不強等問題。一些縣區(qū)通過將轄區(qū)劃分為若干片區(qū),設置派出監(jiān)察員辦公室,通過整合工作力量,破解鄉(xiāng)鎮(zhèn)監(jiān)督難題。比如,江蘇省南通市崇川區(qū)監(jiān)委設置三個派出監(jiān)察員辦公室,聯(lián)系11個街道(開發(fā)區(qū)),與街道紀工委聯(lián)合開展對街道、社區(qū)黨員和監(jiān)察對象的日常監(jiān)督。
機構(gòu)、人員有了,具體如何監(jiān)察呢?實踐中,縣區(qū)監(jiān)委相應地賦予鄉(xiāng)鎮(zhèn)(街道)派出機構(gòu)和人員部分監(jiān)察權(quán)限,有的調(diào)查措施可以自主實施,有的則由縣區(qū)監(jiān)委批準后以縣區(qū)監(jiān)委的名義實施,以此行使監(jiān)察職能。
監(jiān)察到鄉(xiāng)鎮(zhèn)就“見底”了嗎?不,還有向下的延伸和觸角。多地都探索了將監(jiān)察職能延伸至村(社區(qū))的相關(guān)制度,通過設置“消息哨”,緊盯基層“微權(quán)力”。比如,四川省廣元市朝天區(qū)紀委監(jiān)委從退休干部、大學生村官、農(nóng)村黨員中擇優(yōu)挑選村級特邀監(jiān)督員,一旦發(fā)現(xiàn)重要問題線索可直接向區(qū)紀委監(jiān)委報告。河南省淮陽縣紀委監(jiān)委在全縣各村設立1名監(jiān)察信息員,由村(社區(qū))務監(jiān)督委員會主任兼任,履行發(fā)現(xiàn)問題、報送信息職責等。
縱向到底、橫向到邊,監(jiān)察職能向基層有效延伸覆蓋,非黨員村干部也休想“跑脫”?!俺隽藛栴},有人被處理,有人就不被處理”的怪事兒,很難再有了。
(來源:中央紀委國家監(jiān)委網(wǎng)站微信公號)
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。