JS初體驗-做一個導(dǎo)航頁面

參考一個并不好看的頁面:http://www.36start.com/
本博客著重寫javascript,所以關(guān)于css要求能用就寫

1. 準(zhǔn)備構(gòu)思

先畫一個用例圖
用例圖
選擇數(shù)據(jù)結(jié)構(gòu)

有hash衙传,有四個數(shù)組蜒秤。
為了簡化一下,去掉最上面一行测蘑,三個數(shù)組就夠了

2. 寫代碼

HTML的基本結(jié)構(gòu)和構(gòu)思
  1. 在<body>里寫<header>份帐,<main>膏萧,<footer>三個標(biāo)簽作為基本結(jié)構(gòu)
  2. 在<main>里生成網(wǎng)頁上鍵盤的代碼,所以要再加個<div>在里面饮怯,用來控制鍵盤的居中
  3. 用<kbd>表示鍵盤的按鍵闰歪,再加個<button>用于用戶修改該按鍵的網(wǎng)頁信息(用js生成即可)
  4. 給<main>下面的<div>加一個id,名為id="divFirst"蓖墅,用于js定位
用JS生成HTML元素
  1. 聲明數(shù)組和hash
    在<body>里寫<script>库倘,直接在里面寫:
keys = { //聲明一個二維數(shù)組临扮,用于后面生成<div>,<kbd>以及<button>
  '0':{0:'q',1:'w',2:'e',3:'r',4:'t',5:'y',6:'u',7:'i',8:'o',9:'p',length:10},
  '1':{0:'a',1:'s',2:'d',3:'f',4:'g',5:'h',6:'j',7:'k',8:'l',length:9},
  '2':{0:'z',1:'x',2:'c',3:'v',4:'b',5:'n',6:'m',length:7},
  'length':3
}
hash = {  //聲明一個hash,用來存按鍵對應(yīng)的網(wǎng)址
  'q':'qq.com',
  'w':'weibo.com',
  'e':'ele.me',
  ....
 }
  1. 給<main>添加一個<div>教翩,重復(fù)三次杆勇,以儲存三排鍵盤
    繼續(xù)寫
index = 0
while(index < keys['length']){  //當(dāng)index小于keys數(shù)組個數(shù)時,執(zhí)行以下代碼饱亿,直到不滿足條件為止
  div1 = document.createElement('div')  //文檔.創(chuàng)建一個標(biāo)簽名為div的標(biāo)簽蚜退,放入div1容器中
  divFirst.appendChild(div1)  //給divFirst容器追加一個名為div1的兒子
  index = index + 1  //每次循環(huán)完index+1,共循環(huán)3次
}
  1. 給每一個<div>里添加一排該行個數(shù)的<kbd>
    且每個<kbd>中含有其對應(yīng)的鍵盤值
    可以從keys中取
    寫在創(chuàng)建三個div的循環(huán)里
row = keys[index] //第一個數(shù)組 第二個數(shù)組 第三個數(shù)組 也就是key的length值
index2 = 0
while(index2< row['length']){ // 0-9 0-8 0-7三個數(shù)組的length值
  kbd1 = document.createElement('kbd')  //文檔.創(chuàng)建一個標(biāo)簽名為kbd的標(biāo)簽彪笼,放入kbd1容器中
  kbd1.textContent = row[index2]  //三個數(shù)組對應(yīng)的鍵盤值寫到kbd1中
  div1.appendChild(kbd1)  //把kbd1的值追加到div1容器中
  index2 = index2 + 1  //循環(huán)該行鍵位個數(shù)的次數(shù)
}
用CSS讓鍵盤居中
  1. 先讓所有小寫英文字母變成大寫字母
div > kbd{
text-transform:uppercase;
}
  1. 將<main>下面的<div>變成內(nèi)聯(lián)元素钻注,然后給他的父元素加上text-align:center使鍵盤居中
  2. 完整代碼為
*{margin:0;padding:0;}
a{text-decoration: none;}
div > kbd{
    border:1px solid red;
    width:4em;
    height:4em;
    display: inline-block;
    text-transform: uppercase;
    position: relative;//給后面按鈕定位準(zhǔn)備的
}
JS監(jiān)聽鍵盤

比如,需求是用戶輸入鍵位時配猫,打開對應(yīng)網(wǎng)頁
使用鍵盤監(jiān)聽事件即可

document.onkeypress = function(fjogjosjogo){
//這個名為"fjogjosjogo"的hash里包含了用戶輸入的所有信息队寇,當(dāng)然名字是隨便取的
  key = fjogjosjogo['key']    // q s d j...拿到用戶按的鍵
  website = hash[key]     //得到hash數(shù)組中對應(yīng)按鍵的地址
  window.open('http://' + website, '_blank')
//使用http協(xié)議在新窗口頁面訪問該地址
}
用戶可編輯hash

用戶可編輯鍵位對應(yīng)網(wǎng)址
且刷新頁面可保存
先把<button>寫到每個<kbd>中
然后讓用戶點擊按鈕可把hash變更后的值寫入瀏覽器的loclaStorage中
以下內(nèi)容寫在<kbd>的循環(huán)中

button1 = document.createElement('button')
button1.textContent = '編輯'
button1.id = row[index2]    //給每個按鈕標(biāo)記以其對應(yīng)的字母id
button1.onclick = function(fjogjosjogo){    //當(dāng)用戶點擊時,去fjog..中取要的值
  key = fjogjosjogo['target']['id']    //取fjog..中的target值的id章姓,存到key容器中
  urlId = prompt('給我一個網(wǎng)址')  //瀏覽器彈出一個輸入框,把用戶輸入的值存到urlId這個容器中
  hash[key] = urlId   //hash變更
  localStorage.setItem('hashEnd',JSON.stringify(hash))    //localStorage里有很多桶,hashEnd就是桶的名字识埋。將變更后的hash存到hashEnd這個容器里
}
kbd1.appendChild(button1)

如果存在變更后的hash值凡伊,就取出localStorage中變更后的hash值,覆蓋原網(wǎng)頁的hash值
以下內(nèi)容寫在所有循環(huán)外

//取出 localStorage 中的hashEnd對應(yīng)的hash
hashInLocalStorage = JSON.parse(localStorage.getItem('hashEnd') || 'null')
if(hashInLocalStorage){ //如果瀏覽器中的hashEnd存在
  hash = hashInLocalStorage   //就拿hashEnd覆蓋網(wǎng)頁的原h(huán)ash
}
用css裝飾按鈕

使按鈕hover時才出現(xiàn)

div > kbd > button{
  position: absolute;
  right:0;
  bottom:0;
  display: none;
}
div > kbd:hover> button{
  display:inline-block;
}
main{text-align: center;}
main> .wrapper{
  display: inline-block;
}

完成

到這里就完成了所有js的工作
接下來就需要用css好好裝飾頁面了
我的項目地址:點擊這里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窒舟,一起剝皮案震驚了整個濱河市系忙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌惠豺,老刑警劉巖银还,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異洁墙,居然都是意外死亡蛹疯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進(jìn)店門热监,熙熙樓的掌柜王于貴愁眉苦臉地迎上來捺弦,“玉大人,你說我怎么就攤上這事孝扛×泻穑” “怎么了?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵苦始,是天一觀的道長寞钥。 經(jīng)常有香客問我,道長陌选,這世上最難降的妖魔是什么理郑? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任蹄溉,我火速辦了婚禮,結(jié)果婚禮上香浩,老公的妹妹穿的比我還像新娘类缤。我一直安慰自己,他們只是感情好邻吭,可當(dāng)我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布餐弱。 她就那樣靜靜地躺著,像睡著了一般囱晴。 火紅的嫁衣襯著肌膚如雪膏蚓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天畸写,我揣著相機(jī)與錄音驮瞧,去河邊找鬼。 笑死枯芬,一個胖子當(dāng)著我的面吹牛论笔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播千所,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼狂魔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了淫痰?” 一聲冷哼從身側(cè)響起最楷,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎待错,沒想到半個月后籽孙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡火俄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年犯建,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓜客。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡胎挎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出忆家,到底是詐尸還是另有隱情犹菇,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布芽卿,位于F島的核電站揭芍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏卸例。R本人自食惡果不足惜称杨,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一肌毅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧姑原,春花似錦悬而、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唤殴,卻和暖如春般婆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背朵逝。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工蔚袍, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人配名。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓啤咽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親渠脉。 傳聞我的和親對象是個殘疾皇子宇整,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,947評論 2 355

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

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)连舍。 注意:講述HT...
    kismetajun閱讀 27,486評論 1 45
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,754評論 1 92
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫涩哟、插件索赏、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,104評論 4 62
  • 前端開發(fā)面試題 <a name='preface'>前言</a> 只看問題點這里 看全部問題和答案點這里 本文由我...
    自you是敏感詞閱讀 761評論 0 3
  • 后天就是父親節(jié)器仗,可以預(yù)料的是融涣,空間、朋友圈里各種的祝父親節(jié)快樂精钮,像母親節(jié)一樣威鹿。 上次一朋友在票圈發(fā)了母親節(jié)祝福的話...
    粵好吃閱讀 427評論 0 0