做為一名在校學生而言,從其職業發展的角度出發,在學習 Web 前端開發的時候有必要花時間兼容 IE6、IE7 這些瀏覽器嗎?


這還是技術和技巧的問題。如果認為學習兼容ie6/7就是撐握一堆css hack那沒必要,css hack無非是利用css錯誤處理的差異繞過一些瀏覽器,這都是技巧,碰到一個搜一下就有答案。了解一下css錯誤處理有點用,重要是合理的html/css寫法可以避免很多兼容性的問題,典型就是濫用float,如果是從更合理的設計html結構,運用更好的布局技術,從這個角度出發,解決兼容問題就不是撐握css hack,而是撐握一些fallback的方案,這是對的,也是有意義的。

ie6/7沒了,新的兼容問題又會出現。桌面瀏覽器和手機瀏覽器的差異,低端手機瀏覽器不亞於ie6。前端工程師很長一段時間內都會面對兼容性問題。學會正確面對兼容性問題是有必要的。


絕對沒有必要。

【更新:樓下那些說有必要的,麻煩你們切題清楚點,你們自己要兼容IE6你公司可能是為此付錢給你,但是提問者還是在校生,有人付錢讓他學習兼容IE6嗎?

目前(2012年10月)IE6、IE7的市場佔有率即使在最小白的市場,份額也下降到了25%以下。考慮你還是在校生,意味著你進入可以承擔較為獨立的工作崗位時,至少還有2年以上時間,屆時IE6、7的佔有率估計至少將跌至10%以下,甚至可能小於5%。這意味著屆時只有很少的互聯網產品才會考慮兼容,比如那些最最基礎的互聯網應用和網站,而這類網站、應用往往都是已經非常成熟的codebase,沒你什麼事。

另外,作為在校生,我不建議你現在就確定前端開發方向。前端開發的職業前景並不樂觀。如果你想從事編程類工作,最好是把計算機基礎打好,例如數據結構、演算法、編譯原理等。甚至好好學習下互聯網基礎協議,比如HTTP(1.1和未來2.0草案),絕對比花時間在IE6、7上有價值。


個人以為,瀏覽器兼容性的問題並非IE6消失了就解決了

雖然有W3C,但是各個瀏覽器廠商為了凸顯自己產品的特性還是各自為政。

HTML5和CSS3標準還沒出來,各瀏覽器的實現程度都不一樣,即使出來了,又會有HTML6、CSS4……,到時候可能又會有人舉起吶喊「打倒IE9」

對於一些配置比較差但依然服役的PC而言,XP+IE6的性能要優於比較現代的瀏覽器,而隨著瀏覽器功能的增多,對硬體的要求越高,IE9可能為了兼顧用戶的硬體不回持續更新而緊跟新標準

IE6的問題不過是科技進步的副作用,對於有些做Windows程序的人而言,可能使用Win7的Win32API,同樣得想辦法兼容XP

回到這個問題本身,在下也是做網站的,前段後端的代碼都寫,就在下的經驗來看,只要按著CSS本身的設計理念和機制來做,少用浮動,慎用定位(相對定位和絕對定位),熟悉盒式模型,多用流布局,其他的如文字樣式、顏色、背景等都沒什麼兼容問題,一些修飾性的CSS3特性如漸變、陰影、高光等IE9都不支持,不用也不影響用戶閱讀,就不用考慮IE6了。選擇器方面有些不兼容的可能需要js代替,不建議使用複雜的選擇器。

至於該不該花時間去處理兼容性,應該說,各個瀏覽器之間都有差異,當初IE6也是非常先進的,如今受人唾棄,而如今這些現代的瀏覽器也都有布這後塵的一天,也許有人說瀏覽器都像Chrome一樣後台升級不就玩了,但是軟體可以升級,硬體無法升級,瀏覽器新特性的增加是有瓶頸的,尤其是以後大量應用直接運行在瀏覽器中,性能更堪憂

低版本的瀏覽器基本上保持一致,不影響用戶閱讀就可以了。重點還是熟悉CSS的運行機制和各瀏覽器的實現機制,多學多模仿多練,各瀏覽器的差異了解多了自然就沒那麼不淡定了,所以,技術和心態很重要。

借用古語結束:無他,唯手熟爾


首先,有一個誤區就是,一說要「兼容 IE6」,就等於讓網站在 IE6 下和在現代瀏覽器下一模一樣

破除這個誤區和強迫症,你就沒什麼可糾結的了。你要接受 IE6 和其他瀏覽器不一樣,優雅降級,至少給 IE6 用戶一個提示。對於新的、符合標準的技術,要敢用會用,如果在 IE6 下不支持,那就不支持好了(但是你要考慮到解決方法,而不是徹底不管)。所有 IE6 的問題,我相信都可以在標準的框架下面得到解決,不一定是完美解決(不要勉強)。

至於那些 hack 什麼的奇技淫巧還是少接觸為妙。當然,你在自學的時候,可以嘗試任何東西,但是就怕你產生了依賴,以為那樣是正常無可厚非的的(業內的一種奇怪的論調「管用就行」)。從這個角度講,豈止是兼容 IE6 的問題,還有很多問題是需要你做選擇的。比如經常遇到的元素的垂直居中、背景圖的「填充」效果等有很多的近乎 hack 的技巧:div 套 div,把背景圖改成 img 元素什麼的。你直接 copy 代碼,然後實現了這樣的效果,卻沒有思考這樣做的合理性和必要性——長此以往,你的水平也不會有本質的提高。

我覺得,在一開始,能夠用 CSS 把設計意圖表達清楚就不錯了(很多人未必能做到),不用要求一模一樣。

你在參加工作之前,沒有人逼著你必須做出某種效果來否則就滾蛋,也沒有整天嚷嚷著「沒有什麼是技術上實現不了的」的上司,那麼你何苦呢?


看樓主的細分方向吧,如果是pc,5年內保守估計你作的東西需要兼容6、7;如果是移動設備、webapp,則需要多學習html5、css3和手機瀏覽器,webkit核等,甚至是nodejs、coffeescript


不同意第一名的回答,必須有必要稍微了解一下IE6瀏覽器兼容性的處理方法(IE7就不需要了),因為IE6至今在國內依舊是很大的一塊市場份額,

http://brow.data.cnzz.com/

這裡有瀏覽器市場份額數據,可以看出,IE6至今仍然是互聯網排名第2的瀏覽器,眾多xp都是自帶IE6,而至今電腦城負責裝機的帥哥們都是首推xp,他們手裡的xp盤又都是很老的那些番茄花園之類的ghost盤,去年我去修電腦的時候,甚至聽到了一哥們說,qq我只要08版.這些人構成了互聯網用戶的最低層,只要你能搞定IE,你的網站就可以侵佔那21%的市場,你認為多少boss會放棄呢

而主要的問題就是IE6消亡時間問題,我查看了2012年1月份的數據,市場份額是25%左右,整個市場波動圖在這裡看http://brow.data.cnzz.com/main.php?s=brow_detailuv=brow=st=2012-01-25et=2012-10-24

我覺得之所以IE6能夠下降這麼快,估計還有360的功勞,但是短時間內下降的趨勢已經不會很明顯了,所以除非體問者是剛剛上大學的小朋友,不然我覺得至少需要去了解下兼容,其實個人認為剛上大學的同學不會這麼快想到未來的方向吧,總之,如果你還有2年就畢業的話, 就了解下,不一定要精通,其實就算你想精通,也必須等到工作的時候.

如果時間還很久,我覺得還是多學點東西吧,不用局限於前端


如果從純的就業角度看 是否關注IE6,7和你選擇什麼樣的公司 是分不開的。

例如yahoo美國 已經完全放棄了IE9一下瀏覽器的兼容,而國內很多的互聯網公司還存在大量IE6,7用戶 做為工程師的使命就是 只要有需求 就要去做,這和業務本身是密不可分的。

但是作為在校學生 我建議還是多關注更前沿的技術,有時間多學習一些新的東西,畢竟趨勢是新的技術代替老的技術,可能當你畢業的時候 做前端的人早就不用關心IE6,7的問題了。

客戶端的兼容問題是一直存在的一個歷史問題 即使是以後不考慮IE的兼容 還會有手機瀏覽器的兼容 不同解析度的兼容等更多問題,這是一個工程師需要的基本能力,如果有機會 嘗試多解決一些兼容性要求很高的項目 未必不可。

但是樓上有人說前端開發的職業前景並不樂觀 這個不敢苟同 我覺得關鍵還是要看自己是否有興趣 是否願意做。不知道他是如何衡量一個技術是否有前景的,但是目前來看沒有哪個一個產品的成功是因為他用了什麼有前景的技術。而且前端存在著不可替代性,後端可以被前端的一些技術替代例如nodejs的出現 yahoo已經把很多後端工程師全部拿去搞js了,但是前端展示目前還沒有被後端替代的現象


首先你強調了從職業角度出發,在國內做前端開發,瀏覽器的兼容性(這裡我姑且認為僅僅是PC不同瀏覽器的顯示差異)是必須要掌握的,當然如果你以後的公司是嚴重傾向做技術主導的,那麼你可以忽略我所說的。但是目前大多數的公司都需要照顧市場群體,IE6,IE7在中國市場依然佔有很大的比重,特別是在政府機關,小型傳統私企。假如你認為你的產品可以忽略這部分人群,那麼你依然可以忽略我所說的。

我個人很贊同@張克軍 所說的沒必要對於hack過分研究,當你遇到這些問題網上搜索一下,幾乎都有解決方案。當然,自己多點實踐一下,到公司裡面實習一下,你就發覺你會找到這個問題的答案。


當然沒有,而且我覺得也沒有必要去學很新的技術,作為學生,應該把基礎打紮實,英語水平,基本的數據結構演算法知識,一門底層一點的語言(c/c++),這些基礎要有,然後在深入學習css和js,還有像linux要接觸一下,正則啊,一門後台語言,資料庫這些都要去了解。。。


不需要。

做技術和做產品,甚至做媒體都一樣,需要有態度

沒有態度的結果是,你在用你的技術生涯,前途回報,甚至直白些說,在用你的生命為別人的腦殘標準付賬。

IE 6,7 甚至 8 的反人性我想不用多說了。而花時間去對應這些會付出實在的機會成本。有這個時間,還不如去深入今天最新的標準和前端框架。

你會做的更愉快,也賺的更多。更重要的,為世界帶來更好的東西。

否則?

VB 或者 .Net 程序員就是你很好的前車之鑒。


先學標準,等標準掌握了,再考慮兼容的事情


你可以有態度,但你首先必需有能力。如果客戶要求你支持ie6,ie7,你做不出卻跟他談態度?沒有能力為基礎的態度,就是bullshit。

jQuery支持ie6,難道是因為John Resig沒有態度?如果John Resig的Javascript能力不足以支持他開發出兼容ie6的庫來,他的態度再高傲,jQuery也不會像今天這樣流行。現在,你們享受著jQuery的便利,卻來嘲笑那些為技術做出貢獻的人,John Resig的付出到底是為誰的腦殘付賬?

一個html和javascript工程師,如果不懂基本的兼容ie的技巧,你還是最好自己創業吧。這無關ie6,ie7的市場佔有率,而是關乎學習的本質。你說你Javascript牛逼,證明給我看,別跟我扯什麼態度。


好吧,我也是在校的。

雖然去兼容 IE6/7/8 的話會花掉大量的時間,但是目前在去兼容這些古老瀏覽器的同時,你能學到的不僅僅是一個兼容性問題的解決方案,在你解決一個兼容性問題的時候你要考慮的東西會很多,包括瀏覽器發展的歷史,IE 特有的 hasLayout,BFC,更深入的是在你解決這個這個問題的同時你可能會去考慮,這是一個 bug 還是特性?設計者在支持這個功能的是怎樣考慮的?這些都是基礎,了解一下不至於花上你那麼多的時間。

雖然只是解決一些兼容性的問題,但是在你解決一個問題的同時你可能得到的更多。假如一直在符合規範,支持最新特性的瀏覽器里做開發,因為都是最新的標準,你寫的代碼都能信手拈來,你寫著很舒服的代碼,一些本質性的東西你可能會被忽略掉。

當然也不是很虐心的每次都要去做 ie6/7/8 的兼容,但是漸進增強,平穩退化,至少要保證可訪問性,這也是一個前端必須做到的吧?

目前 IE6/7 的份額還保持在 30% (不包括 360 安全瀏覽器之類的 IE 加殼瀏覽器)左右,雖然說兩年之後的份額會下降很多,但是下降到可以忽略不計的時候還沒有那麼快。

至於說做以後只做移動端的,可以不做 IE6/7 的兼容,但是學多一點沒什麼壞處吧?


雖然這題已經比較完善了,但是還是想簡要說明下我自身的情況——

1.理解兼容性問題,可以幫助完善自己HTML/CSS的不標準的地方。

——所以有必要理解,但沒必要花太多時間。

2.Hack的原理很簡單,只是利用特殊字元等,讓一部分瀏覽器無法識別某些樣式;

——所以用到時候再去搜也不遲。

2.實際應用中,IE6基本已經可以忽略,倒是有部分框架用了IE7的內核;

——所以實際中很少處理兼容性問題。

【前提:你不是做QQ空間那樣用戶群體複雜、覆蓋面廣的產品……】


都快死的玩意,還學他幹嘛. 把他們當成故事歷史書看看就行了 用不著當成數學深究 會影響你的腦袋瓜子的

其實如果中國可以向國外購物網站一樣 如果你使用的是ie8以下的 那麼你在購物的結算的時候 會多收你1美元作為開發者的辛苦費的話 我還可以接受


用明天的技術,不要用昨天的技術——吉姆 格雷


要兼容,這是基本功。


去了解學習"HTML5"就不需要兼容IE 6 IE7了.

不會"HTML5"就必須要全兼容.

不同公司不同要求


專門學就算了,但是遇到問題能找到對應的解決方案,

註:現在做移動、聯通、電信這種2X企業內部系統依然要兼容!!!


喜歡告訴你不要的說法,但根據「讀史可以明智」來推斷,來自未來的人對兼容ie 6 7 的學習過程,可以體驗到真正的遠古前端,史前生活是多麼的糾結和充滿挑戰


推薦閱讀:

關於sass樣式預處理器的的用法?
sass的compass已經半年沒有更新了,是否需要考慮轉型到別的css預編譯器和框架?
為什麼要用compass?
如何高效的載入scss文件?
css 當中如何實現一個元素的hover, focus 狀態改變其他元素的樣式?

TAG:前端開發 | CSS | JavaScript | HTML5 | InternetExplorer | Web標準 |