怎么去設(shè)計(jì)好看Web前端_Web前端設(shè)計(jì)有哪些技巧
web設(shè)計(jì)排版多種多樣,如何更好的排版、設(shè)計(jì)出更符合美學(xué)的設(shè)計(jì)了?下面由學(xué)習(xí)啦小編為大家整理的Web前端設(shè)計(jì)技巧,希望大家喜歡!
Web前端設(shè)計(jì)技巧
一、強(qiáng)調(diào)字體
字體的設(shè)計(jì)與強(qiáng)調(diào)在網(wǎng)頁當(dāng)中相當(dāng)重要,合適的排版和適當(dāng)?shù)淖煮w強(qiáng)調(diào),不僅可以讓用戶快速的抓住網(wǎng)站中的重點(diǎn),同樣可以增強(qiáng)網(wǎng)站對用戶的吸引力
二、單頁面設(shè)計(jì)
隨著互聯(lián)網(wǎng)的發(fā)展,用戶的習(xí)慣更傾向于鼠標(biāo)滾輪。在用戶的體驗(yàn)和習(xí)慣方面來講,與其在多個(gè)頁面中來回點(diǎn)擊查看,不如直接滾輪來的方便。
三、網(wǎng)頁色塊設(shè)計(jì)
隨著互聯(lián)網(wǎng)的發(fā)展和H5的出現(xiàn),網(wǎng)站網(wǎng)頁的排版方式越來越傾向于簡潔大方,這最根本的原因在于:用戶的視覺和心理。不同的色塊放在一起形成強(qiáng)烈的對比,要么以純文字形式,要么以方形照片配上文字形式,這兩者在一定程度上刺激了用戶的視覺興趣,進(jìn)而使用戶繼續(xù)探索。
四、背景
網(wǎng)頁以什么樣的方式作為背景呢?純色?漸變?圖片?這三種都是可以的,但以商業(yè)化為目的展示,用照片作為網(wǎng)站網(wǎng)頁的背景,不僅可以達(dá)到展示的目的,而且還可以達(dá)到強(qiáng)烈的視覺表達(dá)效果。這種設(shè)計(jì)方式在時(shí)尚、品牌和旅游等行業(yè)最為常見。
五、圖片
簡約、設(shè)計(jì)時(shí)尚、顏色對比突出,表達(dá)清楚、突出目的的大圖,是很多網(wǎng)站開發(fā)者所追捧的。同樣與枯燥的文字相比,用戶也更愿意繼續(xù)觀賞這樣的網(wǎng)站。
六、響應(yīng)式設(shè)計(jì)
隨著手機(jī)和移動(dòng)端設(shè)備廣泛的被人們使用,響應(yīng)式設(shè)計(jì)成為目前網(wǎng)站開發(fā)比不可少的內(nèi)容。不僅能節(jié)省開發(fā)者的成本和時(shí)間,更能方便用戶在不同尺寸的設(shè)備上暢通無阻的瀏覽你的網(wǎng)站。
七、視差滾動(dòng)
讓多層背景以不同的速度移動(dòng),形成運(yùn)動(dòng)視差的3D效果,這樣的效果以后很可能會(huì)在H5的網(wǎng)站中更加常見和流行
Web前端知識(shí)技巧
1、函數(shù)原型鏈
Javascript雖然沒有繼承概念,但Javascript在函數(shù)Function對象中建立了原型對象prototype,并以Function對象為主線,從上至下,在內(nèi)部構(gòu)建了一條原型鏈。
簡單來說就是建立了變量查找機(jī)制,當(dāng)訪問一個(gè)對象的屬性時(shí),先查找對象本身是否存在,如果不存在就去該對象所在的原型連上去找,直到Object對象為止,如果都沒有找到該屬性才會(huì)返回undefined。
因此我們經(jīng)常會(huì)利用函數(shù)的原型機(jī)制來實(shí)現(xiàn)JS繼承。關(guān)于函數(shù)原型鏈可參考博客:JS原型對象和原型鏈
2、函數(shù)作用域
函數(shù)作用域就是變量在聲明它們的函數(shù)體以及這個(gè)函數(shù)體嵌套的任意函數(shù)體內(nèi)都是有定義的。在JS中沒有會(huì)塊級(jí)作用域,只有函數(shù)作用域,因此JS中還存在著另外一種怪異現(xiàn)象,那就是變量提升。關(guān)于作用域的介紹請參考博客:函數(shù)的作用域和作用域鏈
3、函數(shù)指針 this
this 存在于函數(shù)中,它指向的是該函數(shù)在運(yùn)行時(shí)被調(diào)用的那個(gè)對象。在實(shí)際項(xiàng)目中,遇到this的坑比較多,因此需要對this作深入的理解。
Function對象還提供了call、apply和bind等方法來改變函數(shù)的this指向,其中call和apply主動(dòng)執(zhí)行函數(shù),bind一般在事件回調(diào)中使用,而call和apply的區(qū)別只是參數(shù)的傳
遞方式不同。關(guān)于call,apply和bind的用戶請參考博客:詳解JS的call,apply和bind
4、構(gòu)造函數(shù) new
JS中的函數(shù)即可以是構(gòu)造函數(shù)又可以當(dāng)作普通函數(shù)來調(diào)用,當(dāng)使用new來創(chuàng)建對象時(shí),對應(yīng)的函數(shù)就是構(gòu)造函數(shù),通過對象來調(diào)用時(shí)就是普通函數(shù)。
普通函數(shù)的創(chuàng)建有:顯式聲明、匿名定義、new Function() 等三種方式。
當(dāng)通過new來創(chuàng)建一個(gè)新對象時(shí),JS底層將新對象的原型鏈指向了構(gòu)造函數(shù)的原型對象,于是就在新對象和函數(shù)對象之間建立了一條原型鏈,通過新對象可以訪問到函數(shù)對象原型prototype中的方法和屬性。new的詳細(xì)介紹請參考博客:理解JS中的new運(yùn)算符
5、閉包
閉包其實(shí)是一個(gè)主動(dòng)執(zhí)行的代碼塊,這個(gè)代碼塊的特殊之處是可以永久保存局部變量,但又不污染全局變量,可以形成一個(gè)獨(dú)立的執(zhí)行過程,因此我們經(jīng)常用閉包來定義組件。關(guān)于閉包的介紹請參考:干貨分享:讓你分分鐘學(xué)會(huì)JS閉包
6、單線程和異步隊(duì)列
setTimeout和setInterval是JS內(nèi)置的兩個(gè)定時(shí)器,使用很簡單,但這兩個(gè)方法背后的原理卻不簡單。
我們知道,JS是單線程語言,在瀏覽器中,當(dāng)JS代碼被加載時(shí),瀏覽器會(huì)為其分配一個(gè)主線程來執(zhí)行任務(wù)(函數(shù)),主線程會(huì)形成一個(gè)全局執(zhí)行環(huán)境,執(zhí)行環(huán)境采用棧的方式將待執(zhí)行任務(wù)按順序依次來執(zhí)行。
但在瀏覽器中有一些任務(wù)是非常耗時(shí)的,比如http請求、定時(shí)器、事件回調(diào)等,為了保證其他任務(wù)的執(zhí)行效率不被影響,JS在執(zhí)行環(huán)境中維護(hù)了一個(gè)異步隊(duì)列(也叫工作線程),并將這些任務(wù)放入隊(duì)列中進(jìn)行等待,這些任務(wù)的執(zhí)行時(shí)機(jī)并不確定,只有當(dāng)主線程的任務(wù)執(zhí)行完成以后,才會(huì)去檢查異步隊(duì)列中的任務(wù)是否需要開始執(zhí)行。這就是為什么setTimeout(fn,0) 始終要等到最后執(zhí)行的原因。關(guān)于單線程和異步隊(duì)列問題請參考:setTimeout(0)
7、異步通訊 Ajax技術(shù)
Ajax是瀏覽器專門用來和服務(wù)器進(jìn)行交互的異步通訊技術(shù),其核心對象是XMLHttpRequest,通過該對象可以創(chuàng)建一個(gè)Ajax請求。為了防止XSS攻擊,瀏覽器對Ajax做了限制,不允許Ajax跨域請求服務(wù)器,就是只能訪問當(dāng)前域名下的url。
當(dāng)然,如果確信你的站點(diǎn)不存在跨域的風(fēng)險(xiǎn),可以在服務(wù)端主動(dòng)開啟跨域請求。 也可以直接通過CORS或JSONP來實(shí)現(xiàn)。
JSONP是利用腳本(script)跨域能力來模擬Ajax請求。
CORS是一個(gè)W3C標(biāo)準(zhǔn),全稱是"跨域資源共享"(Cross-origin resource sharing)。它允許瀏覽器向跨源服務(wù)器,發(fā)出XMLHttpRequest請求,從而克服了AJAX只能同源使用的限制。 關(guān)于CORS的介紹請參考:跨域資源共享 CORS 詳解
8、DOM對象 document
document對象里保存著整個(gè)web頁面dom結(jié)構(gòu),在頁面上所有的元素最終都會(huì)映射為一個(gè)dom對象。 document也提供了很多api來查找特定的dom對象,比如getElementById,querySelector等等。
9、事件系統(tǒng) Event
事件是用戶與頁面交互的基礎(chǔ),到目前為止,DOM事件從PC端的 鼠標(biāo)事件(mouse) 發(fā)展到移動(dòng)端的 觸摸事件(touch) 和 手勢事件(guesture)
由于DOM結(jié)構(gòu)可能會(huì)多層嵌套,因此也衍生出了兩種事件流:事件捕獲和事件冒泡,后者最常用。利用事件冒泡機(jī)制可以實(shí)現(xiàn)很多功能,比如頁面點(diǎn)擊統(tǒng)計(jì)。關(guān)于兩種事件流的介紹請參考:事件冒泡和捕獲
除此之外,在頁面初始化、滾動(dòng)、隱藏、返回等操作時(shí)分別內(nèi)置了onload/onDOMContentLoaded、onscroll、onvisibility和onhashchange等事件,如果想要捕獲這些事件,需要通過addEventLisener/attachEvent來進(jìn)行綁定。
10、全局對象 window
在JS中,當(dāng)一段JS代碼在瀏覽器中被加載執(zhí)行,JS引擎會(huì)在內(nèi)存中構(gòu)建一個(gè)全局執(zhí)行環(huán)境,執(zhí)行環(huán)境的作用是保證所有的函數(shù)能按照正確的順序被執(zhí)行,而window對象則是這個(gè)執(zhí)行環(huán)境中的一個(gè)全局對象,window對象中內(nèi)置了很多操作api和對象,document對象就是其中一個(gè)。關(guān)于JS執(zhí)行環(huán)境的介紹請參考博客:深入理解JS執(zhí)行細(xì)節(jié)
Web前端開發(fā)的職責(zé)是什么
1、使用Div+css并結(jié)合Javascript負(fù)責(zé)產(chǎn)品的前端開發(fā)和頁面制作;
2、熟悉W3C標(biāo)準(zhǔn)和各主流瀏覽器在前端開發(fā)中的差異,能熟練運(yùn)用DIV+CSS,提供針對不同瀏覽器的前端頁面解決方案;
3、負(fù)責(zé)相關(guān)產(chǎn)品的需求以及前端程序的實(shí)現(xiàn),提供合理的前端架構(gòu);
4、與產(chǎn)品、后臺(tái)開發(fā)人員保持良好溝通,能快速理解、消化各方需求,并落實(shí)為具體的開發(fā)工作;
5、了解服務(wù)器端的相關(guān)工作,在交互體驗(yàn)、產(chǎn)品設(shè)計(jì)等方面有自己的見解。