fcc項(xiàng)目總結(jié)系列1:個(gè)人作品展示頁面制作項(xiàng)目

begin: 20170724
version: 20170724

導(dǎo)言

近兩天勉強(qiáng)完成了free code camp的portfolio項(xiàng)目(題目地址),自己原生寫的,感覺不用框架確實(shí)挺麻煩(雖然我目前只接觸過一點(diǎn)點(diǎn)bootstrap,但是感覺用起來應(yīng)該會(huì)節(jié)省非常多代碼),而且做出來的東西我估計(jì)在移動(dòng)端就不能看了。不過做這個(gè)項(xiàng)目過程中還是感覺頗有收獲。

主要技術(shù)點(diǎn)

1.表單label動(dòng)態(tài)隱藏/顯示

通過對(duì)表單項(xiàng)focusblur事件監(jiān)聽,修改相應(yīng)label項(xiàng)的樣式(顏色、可見性、相對(duì)定位位置),特別是label項(xiàng)的顯示并不是以focus的觸發(fā)為標(biāo)準(zhǔn),而是要檢測表單項(xiàng)中是否有有效字符輸入,這一點(diǎn)通過利用超時(shí)調(diào)用模仿間歇調(diào)用,不斷查詢表單項(xiàng)的value值,來確定是否顯示label。

2.點(diǎn)擊導(dǎo)航欄鏈接時(shí),漸變地改變頁面滾動(dòng)位置

在此過程中需要?jiǎng)討B(tài)地獲取和設(shè)置整個(gè)頁面滾動(dòng)條的位置,為此定義了兩個(gè)函數(shù),可以在跨瀏覽器條件下獲取和設(shè)置頁面相對(duì)視口滾動(dòng)的高度(scrollTop):

function getDocScrollTop(){
  return Number(document.documentElement.scrollTop 
  || window.pageYOffset 
  || document.body.scrollTop);
}
function setDocScrollTop(height){
  document.documentElement.scrollTop = height;
  if(getDocScrollTop() !== height){
    // unsucceed
    document.body.scrollTop = height;
    if(getDocScrollTop() !== height){
      // unsucceed yet
      if(window.pageYOffset){
        window.pageYOffset = height;
      }
    }
  }
}

另外我們要做的就是獲取鏈接目標(biāo)元素在頁面中的位置,可以利用如下的函數(shù)實(shí)現(xiàn):

function getOffsetTop(ele){
  //get element(ele)'s position from the start of the document
  var top = 0;
  do{
    top += ele.offsetTop;
    ele = ele.offsetParent;
  }while(ele !== null);
  return top;
}

定義好這些函數(shù)以后,我們只需要監(jiān)聽導(dǎo)航欄中各個(gè)鏈接的click事件,事件觸發(fā)時(shí),先取消其默認(rèn)操作,然后將整個(gè)頁面的滾動(dòng)高度(scrollTop)漸變地修改到等于鏈接目標(biāo)在頁面中位置高度。

3.根據(jù)頁面滾動(dòng)位置,動(dòng)態(tài)修改導(dǎo)航欄鏈接的樣式

這一點(diǎn)和上面一個(gè)技術(shù)點(diǎn)有點(diǎn)反向操作的意味,我們需要檢測頁面滾動(dòng)高度,檢測出當(dāng)前是哪一個(gè)區(qū)塊在視窗內(nèi)(比較頁面的scrollTop和各區(qū)塊元素位置(調(diào)用getOffsetTop()),然后讓導(dǎo)航欄中與這個(gè)區(qū)域?qū)?yīng)的那個(gè)鏈接突出顯示。頁面的滾動(dòng)我們檢測鼠標(biāo)滾動(dòng),普遍支持的是mousewheel事件(firefox不支持),實(shí)際上這個(gè)事件不是標(biāo)準(zhǔn)事件,標(biāo)準(zhǔn)是wheel事件(高版本firefox將其實(shí)現(xiàn)了),為了兼容老版本firefox,可以檢測DOMMouseWheel事件(我沒有在老版本測試驗(yàn)證)。如此,各個(gè)瀏覽器能較好兼容。

  document.onmousewheel = handleScroll;
  document.onDOMMouseWheel = handleScroll;//for lower edition ff
  document.onwheel = handleScroll;//for lower edition ff

4.twitter,linkedin等外鏈圖標(biāo)

通過引入font-awesome字體:

<link rel="stylesheet" 
>  

bugs

一直不能完成加載

通過移出腳本后測試、注釋主函數(shù)調(diào)用后測試、注釋代碼行后測試逐步確定問題的位置,最后發(fā)現(xiàn)是代碼中出現(xiàn)了無限循環(huán)。

項(xiàng)目github地址

https://github.com/jacktown11/fcc/tree/master/Build_a_Personal_Portfolio_Webpage0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,501評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,673評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,610評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,939評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,668評(píng)論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,004評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,001評(píng)論 3 449
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,173評(píng)論 0 290
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,705評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,426評(píng)論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,656評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,139評(píng)論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,833評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,247評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,580評(píng)論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,371評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,621評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容