開發(fā)好的Web前端需要哪些技術(shù)_Web前端開發(fā)有什么技術(shù)
Web前端技術(shù)是一個龐大而復(fù)雜的技術(shù)體系,其復(fù)雜程度不低于任何一門后端語言。下面由學(xué)習(xí)啦小編為大家整理的Web前端開發(fā)技術(shù),希望大家喜歡!
Web前端開發(fā)技術(shù)
1、選擇器
css的選擇器有很多種,常用的有類選擇器、標簽選擇器、ID選擇器、后代選擇器、群組選擇器、偽類選擇器(before/after)、兄弟選擇器(+~)、屬性選擇器等等。
2、定位
定位一般有相對定位(relative)、絕對定位(absolute)、固定定位(fixed),relative和absolute在移動端用的最多,fixed 在移動端有兼容性問題,因此不推薦使用,在移動端替代fixed的方案是 absolute+內(nèi)部滾動。
3、浮動
設(shè)置float為left或right,就能使該元素脫離文檔流,向左或向右浮動。一般在做宮格模式布局時會用到,如果子元素全部設(shè)置為浮動,則父元素是塌陷的,這時就需要清除浮動,清除浮動的方法也很多,常用的方法是在元素末尾加空元素設(shè)置clear:both, 更高級一點的就給父容器設(shè)置before/after來模擬一個空元素,還可以直接設(shè)置overflow:auto/hidden。除過浮動可以實現(xiàn)宮格模式,行內(nèi)盒子(inline-block)和table也可以。
4、盒子模型
盒子模型是css最重要的一個概念,也是css布局的基石。 常見的盒子模型有塊級盒子(block)和行內(nèi)盒子(inline-block),盒子最關(guān)鍵的幾個屬性包括margin、border、padding和content,這幾個元素可以設(shè)置盒子和盒子之間的關(guān)系以及盒子和內(nèi)容之間的關(guān)系。還有一個問題是計算盒子的大小,需要注意的是,box-sizing屬性的設(shè)置會影響盒子的width和height。只有普通文檔流中塊框的垂直外邊距才會發(fā)生外邊距合并。行內(nèi)框、浮動框或絕對定位之間的外邊距不會合并。
5、Flex布局
Flex布局的容器是一個伸縮容器,首先容器本身會更具容器中的元素動態(tài)設(shè)置自身大小;然后當(dāng)Flex容器被應(yīng)用一個大小時(width和height),將會自動調(diào)整容器中的元素適應(yīng)新大小。Flex容器也可以設(shè)置伸縮比例和固定寬度,還可以設(shè)置容器中元素的排列方向(橫向和縱向)和是否支持元素的自動換行。有了這個神器,做頁面布局的可以方便很多了。注意,設(shè)為Flex布局以后,子元素的float、clear和vertical-align屬性將失效。
6、transition(過渡) 和 transform(旋轉(zhuǎn))
應(yīng)用transform可以對元素進行平移(translate)、旋轉(zhuǎn)(rotate)、放大縮小(scale)、傾斜(skew)等處理,而transition使css屬性值(包括transform)在一段時間內(nèi)平滑的過渡。使用transition和transform就可以實現(xiàn)頁面的滑動切換效果。
7、動畫 Animation
Animation首先需要設(shè)置一個動畫函數(shù),然后以這個動畫的方式來改變元素的css屬性之的變化,動畫可以被設(shè)置為永久循環(huán)演示。 和transition相比,animation設(shè)置動畫效果更靈活更豐富,二者還有一個區(qū)別是:transition只能通過主動改變元素的css值才能觸發(fā)動畫效果,而animation一旦被應(yīng)用,就開始執(zhí)行動畫。
8、Sprite圖
對于大型站點,為了減少http請求的次數(shù),一般會將常用的小圖標排到一個大圖中,頁面加載時只需請求一次網(wǎng)絡(luò), 然后在css中通過設(shè)置background-position來控制顯示所需要的小圖標。
9、字體圖標 iconfont
所謂字體圖標就是將常用的圖標轉(zhuǎn)化為字體資源存在文件中,通過在CSS中引用該字體文件,然后可以直接通過控制字體的css屬性來設(shè)置圖標的樣式。
Web前端開發(fā)知識技術(shù)
1、Web語義化 和 SEO
html 常規(guī)標簽有html,head,body,div,span,table,ul,ol,dl,p,b,h1~h6,strong,form,input,img,em,i 等等,另外html5 還新增了很多語義化的標簽,比如header,acticle,aside,section,footer,audio,radio 等等。
Web語義化是指使用語義恰當(dāng)?shù)臉撕?,使頁面有良好的結(jié)構(gòu),頁面元素有含義,能夠讓人和搜索引擎都容易理解。
SEO是指在了解搜索引擎自然排名機制的基礎(chǔ)之上,對網(wǎng)站進行內(nèi)部及外部的調(diào)整優(yōu)化,改進網(wǎng)站在搜索引擎中關(guān)鍵詞的自然排名,獲得更多的展現(xiàn)量,吸引更多目標客戶點擊訪問網(wǎng)站,從而達到互聯(lián)網(wǎng)營銷及品牌建設(shè)的目標。
搜索引擎通過爬蟲技術(shù)獲取的頁面就是由一堆html標簽組成的代碼,,人可以通過可視化的方式來判斷頁面上哪些內(nèi)容是重點,而機器做不到。 但搜索引擎會根據(jù)標簽的含義來判斷內(nèi)容的權(quán)重,因此,在合適的位置使用恰當(dāng)?shù)臉撕?,使整個頁面的語義明確,結(jié)構(gòu)清晰,搜索引擎才能正確識別頁面中的重要內(nèi)容,并予以較高的權(quán)值。比如h1~h6這幾個標簽在SEO中的權(quán)值非常高,用它們作頁面的標題就是一個簡單的SEO優(yōu)化。
2、頁面渲染機制
頁面渲染就是瀏覽器的渲染引擎將html代碼根據(jù)CSS定義的規(guī)則顯示在瀏覽器窗口中的過程。大致工作原理如下:
用戶輸入網(wǎng)址,瀏覽器向服務(wù)器發(fā)出請求,服務(wù)器返回html文件;
渲染引擎開始載入html代碼,并將HTML中的標簽轉(zhuǎn)化為DOM節(jié)點,生成DOM樹;
如果中引用了外部css文件,則發(fā)出css文件請求,服務(wù)器返回該文件;
如果中引用了外部js文件,則發(fā)出js文件請求,服務(wù)器返回該文件后開始運行;
渲染引擎繼續(xù)載入html中的部分的代碼,并開始解析前面返回的css文件,然后根據(jù)css選擇器計算出節(jié)點的樣式,創(chuàng)建渲染樹;
3、重繪和回流
當(dāng)渲染樹中的一部分(或全部)因為元素的規(guī)模尺寸,布局,隱藏等改變而需要重新構(gòu)建。這就稱為回流。比如上面的img文件加載完成后就會引起回流,每個頁面至少需要一次回流,就是在頁面第一次加載的時候。
當(dāng)渲染樹中的一些元素需要更新屬性,而這些屬性只是影響元素的外觀,風(fēng)格,而不會影響布局的,比如background-color。則就叫稱為重繪。
從上面可以看出,回流必將引起重繪,而重繪不一定會引起回流。
會引起重繪和回流的操作
添加、刪除元素(回流+重繪)
隱藏元素,display:none(回流+重繪),visibility:hidden(只重繪,不回流)
移動元素,比如改變top,left,transform的值,或者移動元素到另外一個父元素中。(重繪+回流)
對style的操作(對不同的屬性操作,影響不一樣)
還有一種是用戶的操作,比如改變?yōu)g覽器大小,改變?yōu)g覽器的字體大小等(回流+重繪)
4、本地存儲
本地存儲最原始的方式就是 cookie,cookie 是存放在本地瀏覽器的一段文本,數(shù)據(jù)以鍵值對的形式保存,可以設(shè)置過期時間。 但是 cookie 不適合大量數(shù)據(jù)的存儲,因為每請求一次頁面,cookie 都會發(fā)送給服務(wù)器,這使得 cookie 速度很慢而且效率也不高。因此cookie的大小被限制為4k左右(不同瀏覽器可能不同,分HOST),如下所示:
Firefox和Safari允許cookie多達4097個字節(jié),包括名(name)、值(value)和等號。
Opera允許cookie多達4096個字節(jié),包括:名(name)、值(value)和等號。
Internet Explorer允許cookie多達4095個字節(jié),包括:名(name)、值(value)和等號。
在所有瀏覽器中,任何cookie大小超過限制都被忽略,且永遠不會被設(shè)置。
html5提供了兩種在客戶端存儲數(shù)據(jù)的新方法:localStorage 和 sessionStorage, 它們都是以key/value 的形式來存儲數(shù)據(jù),前者是永久存儲,后者的存儲期限僅限于瀏覽器會話(session),即當(dāng)瀏覽器窗口關(guān)閉后,sessionStorage中的數(shù)據(jù)被清除。
localStorage的存儲空間大約5M左右(不同瀏覽器可能不同,分 HOST),這個相當(dāng)于一個5M大小的前端頁面的數(shù)據(jù)庫,相比于cookie可以節(jié)約帶寬,但localStorage在瀏覽器隱私模式下是不可讀取的,當(dāng)存儲數(shù)據(jù)超過了localStorage的存儲空間后會拋出異常。
此外,H5還提供了逆天的websql和indexedDB,允許前端以關(guān)系型數(shù)據(jù)庫的方式來存儲本地數(shù)據(jù),相對來說,這個功能目前應(yīng)用的場景比較少,此處不作介紹。
5、瀏覽器緩存機制
瀏覽器緩存機制是指通過 HTTP 協(xié)議頭里的 Cache-Control(或 Expires)和 Last-Modified(或 Etag)等字段來控制文件緩存的機制。
Cache-Control 用于控制文件在本地緩存有效時長。最常見的,比如服務(wù)器回包:Cache-Control:max-age=600 表示文件在本地應(yīng)該緩存,且有效時長是600秒(從發(fā)出請求算起)。在接下來600秒內(nèi),如果有請求這個資源,瀏覽器不會發(fā)出 HTTP 請求,而是直接使用本地緩存的文件。
Last-Modified 是標識文件在服務(wù)器上的最新更新時間。下次請求時,如果文件緩存過期,瀏覽器通過 If-Modified-Since 字段帶上這個時間,發(fā)送給服務(wù)器,由服務(wù)器比較時間戳來判斷文件是否有修改。如果沒有修改,服務(wù)器返回304告訴瀏覽器繼續(xù)使用緩存;如果有修改,則返回200,同時返回最新的文件。
Cache-Control 通常與 Last-Modified 一起使用。一個用于控制緩存有效時間,一個在緩存失效后,向服務(wù)查詢是否有更新。
Cache-Control 還有一個同功能的字段:Expires。Expires 的值一個絕對的時間點,如:Expires: Thu, 10 Nov 2015 08:45:11 GMT,表示在這個時間點之前,緩存都是有效的。
Expires 是 HTTP1.0 標準中的字段,Cache-Control 是 HTTP1.1 標準中新加的字段,功能一樣,都是控制緩存的有效時間。當(dāng)這兩個字段同時出現(xiàn)時,Cache-Control 是高優(yōu)化級的。
Etag 也是和 Last-Modified 一樣,對文件進行標識的字段。不同的是,Etag 的取值是一個對文件進行標識的特征字串。在向服務(wù)器查詢文件是否有更新時,瀏覽器通過 If-None-Match 字段把特征字串發(fā)送給服務(wù)器,由服務(wù)器和文件最新特征字串進行匹配,來判斷文件是否有更新。沒有更新回包304,有更新回包200。Etag 和 Last-Modified 可根據(jù)需求使用一個或兩個同時使用。兩個同時使用時,只要滿足基中一個條件,就認為文件沒有更新。
另外有兩種特殊的情況:
手動刷新頁面(F5),瀏覽器會直接認為緩存已經(jīng)過期(可能緩存還沒有過期),在請求中加上字段:Cache-Control:max-age=0,發(fā)包向服務(wù)器查詢是否有文件是否有更新。
強制刷新頁面(Ctrl+F5),瀏覽器會直接忽略本地的緩存(有緩存也會認為本地沒有緩存),在請求中加上字段:Cache-Control:no-cache(或 Pragma:no-cache),發(fā)包向服務(wù)重新拉取文件。
6、History路由機制
用戶訪問網(wǎng)頁的歷史記錄通常會被保存在一個類似于棧對象中,即history對象,點擊返回就出棧,跳下一頁就入棧。 它提供了一些方法來操作頁面的前進和后退:
window.history.back() 返回到上一個頁面
window.history.forward() 進入到下一個頁面
window.history.go([delta]) 跳轉(zhuǎn)到指定頁面
HTML5 對History Api 進行了增強,新增了兩個Api和一個事件,分別是pushState、replaceState 和 onpopstate
pushState是往history對象里添加一個新的歷史記錄,即壓棧。
replaceState 是替換history對象中的當(dāng)前歷史。
當(dāng)點擊瀏覽器后退按鈕或js調(diào)用history.back都會觸發(fā)onpopstate事件, 與其類似的還有一個事件: onhashchange 。
onhashchange是老API, 瀏覽器支持度高, 本來是用來監(jiān)聽hash變化的, 但可以被利用來做客戶端前進和后退事件的監(jiān)聽,onpopstate是專門用來監(jiān)聽瀏覽器前進后退的, 不僅可以支持hash, 非hash的同源url也支持。
7、HTML5離線緩存
HTML5離線緩存又叫Application Cache,是從瀏覽器的緩存中分出來的一塊緩存區(qū),如果要在這個緩存中保存數(shù)據(jù),可以使用一個描述文件(manifest file),列出要下載和緩存的資源。
manifest 文件是簡單的文本文件,它告知瀏覽器被緩存的內(nèi)容(以及不緩存的內(nèi)容)。manifest 文件可分為三個部分:
– CACHE MANIFEST – 在此標題下列出的文件將在首次下載后進行緩存
– NETWORK – 在此標題下列出的文件需要與服務(wù)器的連接,且不會被緩存
– FALLBACK – 在此標題下列出的文件規(guī)定當(dāng)頁面無法訪問時的回退頁面(比如 404 頁面)
離線緩存為應(yīng)用帶來三個優(yōu)勢:
離線瀏覽 – 用戶可在應(yīng)用離線時使用它們
速度 – 已緩存資源加載得更快
減少服務(wù)器負載 – 瀏覽器將只從服務(wù)器下載更新過或更改過的資源。
8、Canvas和SVG
Canvas 通過Javascript 來繪制 2D 圖形。Canvas 是逐像素進行渲染的。在 Canvas 中,一旦圖形被繪制完成,它就不會繼續(xù)得到瀏覽器的關(guān)注。如果其位置發(fā)生變化,那么整個場景也需要重新繪制,包括任何或許已被圖形覆蓋的對象。
SVG 是一種使用 XML 描述 2D 圖形的語言。SVG 基于 XML,這意味著 SVG DOM 中的每個元素都是可用的。你可以為某個元素附加 JavaScript 事件處理器。在 SVG 中,每個被繪制的圖形均被視為對象。如果 SVG 對象的屬性發(fā)生變化,那么瀏覽器能夠自動重現(xiàn)圖形。
web前端需要掌握的知識
掌握HTML是網(wǎng)頁的核心,是一種制作萬維網(wǎng)頁面的標準語言,是萬維網(wǎng)瀏覽器使用的一種語言,它消除了不同計算機之間信息交流的障礙。因此,它是目前網(wǎng)絡(luò)上應(yīng)用最為廣泛的語言,也是構(gòu)成網(wǎng)頁文檔的主要語言,學(xué)好HTML是成為Web開發(fā)人員的基本條件。
學(xué)好CSS是網(wǎng)頁外觀的重要一點,CSS可以幫助把網(wǎng)頁外觀做得更加美觀。
學(xué)習(xí)JavaScript的基本語法,以及如何使用JavaScript編程將會提高開發(fā)人員的個人技能。
了解Unix和Linux的基本知識雖然這兩點很基礎(chǔ),但是開發(fā)人員了解Unix和Linux的基本知識是有益無害的。
了解Web服務(wù)器當(dāng)你對Apache的基本配置,htaccess配置技巧有一些掌握的話,將來必定受益,而且這方面的知識學(xué)起來也相對容易。
1.需要熟練掌握的技能
熟悉版本控制系統(tǒng)的用法熟悉使用一種優(yōu)秀的版本控制系統(tǒng),你在實際工作中就會發(fā)現(xiàn)精通一種版本控制系統(tǒng)是很幸福的事情。
學(xué)好Web框架當(dāng)你掌握了HTML,服務(wù)器端腳本語言,CSS和JavaScript后,就應(yīng)該找一個Web框架加快你的Web開發(fā)速度,使用框架可以節(jié)約你很多時間,如果你使用PHP,可選的框架有CakePHP,CodeIgniter,Zend等,Python程序員喜歡使用Django和 webpy,Ruby程序員喜歡使用RoR。
對于初學(xué)開發(fā)人員來說,以上知識是不是看起來很復(fù)雜,其實,當(dāng)你一步步學(xué)習(xí)并為企業(yè)開發(fā)成功案例時,你會發(fā)現(xiàn)一切都是有意義的付出。
2.較強的視覺設(shè)計
前端技術(shù)包括4個部分:前端美工、瀏覽器兼容、CSS、HTML“傳統(tǒng)”技術(shù)與Adobe AIR、Google Gears,以及概念性較強的交互式設(shè)計,藝術(shù)性較強的視覺設(shè)計等等.
根據(jù)該詞可以做這樣的理解,用互聯(lián)網(wǎng)來做比喻,凡是通過瀏覽器到用戶端計算機的統(tǒng)稱為前端技術(shù).相反存貯于服務(wù)器端的統(tǒng)稱為后端技術(shù).