成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

前端入門小結(jié)

chengtao1633 / 3495人閱讀

摘要:實(shí)現(xiàn)了搜索這一功能,接下來(lái)就是要把這一部分嵌入到一個(gè)平臺(tái),因此我開始接觸編程以及前端。之前我對(duì)前端幾乎沒有什么了解,因此這一周除了體檢被檢查出來(lái)早搏參加入學(xué)典禮之外,就是在琢磨,,了,并結(jié)合需求開發(fā)了網(wǎng)站的一部分。

今年暑假大部分時(shí)間是在要學(xué)校,前一階段一直在學(xué)習(xí)Scala和理解Spark,但是苦于沒有實(shí)際上手的項(xiàng)目,盡管看了不少論文和書,但不敢說自己理解的有多深刻,所以我打算暫時(shí)擱置這一部分的內(nèi)容。后一階段是出于導(dǎo)師的需要要解決針對(duì)海量數(shù)據(jù)進(jìn)行頻繁的模糊搜索帶來(lái)的性能問題,其實(shí)一些關(guān)系型數(shù)據(jù)庫(kù)比如MySQL有自帶的Full Index,但是它們并不能很好的支持中文,于是我開始嘗試使用Elasticsearch來(lái)解決問題。當(dāng)然如果我使用Elasticsearch就意味著引人了第三方的工具,因此數(shù)據(jù)同步的問題就凸顯出來(lái)。關(guān)于數(shù)據(jù)同步,elasticsearch-jdbc可以將MySQL中的數(shù)據(jù)同步到Elasticsearch,但是使用后我發(fā)現(xiàn)elasticsearch-jdbc存在兩個(gè)嚴(yán)重的問題:一是elasticsearch-jdbc只適合數(shù)據(jù)庫(kù)中的數(shù)據(jù)只增不減、不修改的情況,這顯然是不合理的;二是當(dāng)我同步的數(shù)據(jù)量很大時(shí),elasticsearch-jdbc并不能很完整的導(dǎo)入數(shù)據(jù),因此我只能自己實(shí)現(xiàn)數(shù)據(jù)同步,整個(gè)過程走了一些彎路,直到后來(lái)利用bulk index來(lái)批量建立索引和批量刪除,同步的效率提高了20+倍,基本滿足了性能要求。

實(shí)現(xiàn)了搜索這一功能,接下來(lái)就是要把這一部分嵌入到一個(gè)平臺(tái),因此我開始接觸Web編程以及前端。之前我對(duì)前端幾乎沒有什么了解,因此這一周除了體檢(被檢查出來(lái)早搏)、參加入學(xué)典禮之外,就是在琢磨css,JavaScript,jQuery了,并結(jié)合需求開發(fā)了網(wǎng)站的一部分。

效果簡(jiǎn)介

整個(gè)過程中,比較有意思的是實(shí)現(xiàn)彈出層的效果,彈出層在我們?nèi)粘g覽網(wǎng)頁(yè)的時(shí)候十分普遍,它具有更好的交互效果。如下是實(shí)現(xiàn)的效果圖。

靜態(tài)頁(yè)面實(shí)現(xiàn)

實(shí)現(xiàn)彈出層效果的css代碼如下。

#mask {
    background: #000;
    opacity: 0.75;
    filter: alpha(opacity = 75);
    height: 1000px;
    width: 100%;
    position: absolute;
    left: 0;
    top: 0;
    z-index: 1000; /* 層級(jí)  */
}

有兩點(diǎn)需要注意:

opacity: 0.75;為設(shè)置遮罩層的透明度,但是IE不認(rèn)opacity,所以還需要跟IE做下兼容:filter: alpha(opacity = 75);這里的0.7575都代表透明度為75%。

對(duì)于一層,它不僅只有X軸和Y軸,還有Z軸,也就是層級(jí),z-index就是用來(lái)描述層級(jí),它的數(shù)字越大,說明層級(jí)越高,所處的位置越上。

接下來(lái)就是實(shí)現(xiàn)彈出界面,Elasticsearch的模糊搜索功能將用在此處,彈出界面的html以及css代碼如下(存在命名不規(guī)范的情況)。




    
     
序號(hào)清單編碼清單名稱 項(xiàng)目特征描述單位工程名稱 標(biāo)桿類型圖集名稱圖集代碼 選擇
      
JS實(shí)現(xiàn)動(dòng)態(tài)效果

實(shí)際上,上面的html并不是預(yù)先就已經(jīng)存在的(css是預(yù)先寫好的),而是當(dāng)我觸發(fā)相應(yīng)的事件后動(dòng)態(tài)生成的,也就是在原有的頁(yè)面后追加遮罩層和彈出層。利用JavaScript來(lái)實(shí)現(xiàn)動(dòng)態(tài)效果,代碼如下:

function queryItems() {
    var oMask = document.createElement("div");
    oMask.id = "mask";
    // 獲取頁(yè)面的高度和寬度
    var sHeight = document.documentElement.scrollHeight;
    var sWidth = document.documentElement.scrollWidth;
    // 獲取頁(yè)面的可視高度和寬度
    // 如果頁(yè)面是豎向的頁(yè)面,那么可視寬度和頁(yè)面寬度是相等的
    var wHeight = document.documentElement.clientHeight;
    oMask.style.height = 768 + "px";
    oMask.style.width = sWidth + "px";
    document.body.appendChild(oMask);
    var queryItems = document.createElement("div");
    queryItems.id = "queryItems";
    queryItems.innerHTML = "
" + "" + "
" + "
" + "
" + "
" + "" + "" + " " + "" + " " + "" + " " + "" + " " + "
" + "
" + "" + "" + "" + "" + "" + "" + "" + "
序號(hào)清單編碼清單名稱項(xiàng)目特征描述單位工程名稱標(biāo)桿類型圖集名稱圖集代碼選擇
" + "
" + "
" + "
" + " " + " " + "  " + "
" + "
" + "
"; document.body.appendChild(queryItems); var dHeight = queryItems.offsetHeight; var dWidth = queryItems.offsetWidth; queryItems.style.left = (sWidth - dWidth) / 2 + "px"; queryItems.style.top = (wHeight - dHeight) / 2 + "px"; var oClose = document.getElementById("queryItemsClose"); oMask.onclick = oClose.onclick = function() { // 關(guān)閉彈出框 document.body.removeChild(oMask); document.body.removeChild(queryItems); } }

需要注意的有如下幾點(diǎn):

在頁(yè)面中創(chuàng)建元素結(jié)點(diǎn):

    var oMask = document.createElement("div");

遮罩層需要多大?因此需要獲取頁(yè)面的高度和寬度,要注意的是這是網(wǎng)頁(yè)的高度和寬度,而不是屏幕的高度和寬度。然后就是把獲取到的高度和寬度賦給遮罩層(oMask),因?yàn)槲业膶?shí)際頁(yè)面高度小于屏幕高度,為了讓遮罩層鋪滿全屏于是將sHeight的值定義為768px,不要忘了加上單位px

    var sHeight = document.documentElement.scrollHeight;
    var sWidth = document.documentElement.scrollWidth;
    oMask.style.height = 768 + "px";
    oMask.style.width = sWidth + "px";

如果僅僅是這樣新創(chuàng)建的結(jié)點(diǎn)還只是停留在JS里面,要把結(jié)點(diǎn)插入到文檔中,需要執(zhí)行:

    document.body.appendChild(oMask);

可視區(qū)域是真用戶正看到的區(qū)域的大小,其中可視區(qū)域的寬度和頁(yè)面的寬度相同(大部分網(wǎng)頁(yè)都是豎著瀏覽的),獲取可視區(qū)域高度的代碼如下:

    var wHeight = document.documentElement.clientHeight;

在插入遮罩層之后,我們采用相同的方法插入彈出層,如何讓彈出層出在屏幕的正中央?我們需要獲取彈出層的高度和寬度,利用可視區(qū)域的高度和寬度,以及彈出層的高度和寬度,最終確定彈出層的定位。

    var dHeight = queryItems.offsetHeight;
    var dWidth = queryItems.offsetWidth;
    queryItems.style.left = (sWidth - dWidth) / 2 + "px";
    queryItems.style.top = (wHeight - dHeight) / 2 + "px";

設(shè)置彈出層關(guān)閉:可以點(diǎn)擊彈出層的右上角,或者是點(diǎn)擊遮罩層,設(shè)置onclick事件即可:

    var oClose = document.getElementById("queryItemsClose");
    oMask.onclick = oClose.onclick = function() { // 關(guān)閉彈出框
        document.body.removeChild(oMask);
        document.body.removeChild(queryItems);
    }

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/85997.html

相關(guān)文章

  • 前端面試題小結(jié)

    摘要:如何解決不同終端的適配問題彈性盒子,非常不錯(cuò)的選擇的運(yùn)行流程生命周期生命周期優(yōu)化解釋中虛擬存在的好處為什么可以解決跨域問題地址欄輸入流程總結(jié)初級(jí)階段是會(huì)用。 前幾天也是有人問我的一些問題,我覺得還是挺有了解價(jià)值的,也是一些平時(shí)開發(fā)可能比較會(huì)忽略的問題。別的不多說,直接開門見山: 1.post和get的區(qū)別? 我們都知道GET和POST是HTTP請(qǐng)求的兩種基本方法。我相信如果有人問到你這...

    fuchenxuan 評(píng)論0 收藏0
  • 前端面試題小結(jié)

    摘要:如何解決不同終端的適配問題彈性盒子,非常不錯(cuò)的選擇的運(yùn)行流程生命周期生命周期優(yōu)化解釋中虛擬存在的好處為什么可以解決跨域問題地址欄輸入流程總結(jié)初級(jí)階段是會(huì)用。 前幾天也是有人問我的一些問題,我覺得還是挺有了解價(jià)值的,也是一些平時(shí)開發(fā)可能比較會(huì)忽略的問題。別的不多說,直接開門見山: 1.post和get的區(qū)別? 我們都知道GET和POST是HTTP請(qǐng)求的兩種基本方法。我相信如果有人問到你這...

    silenceboy 評(píng)論0 收藏0
  • 前端面試題小結(jié)

    摘要:如何解決不同終端的適配問題彈性盒子,非常不錯(cuò)的選擇的運(yùn)行流程生命周期生命周期優(yōu)化解釋中虛擬存在的好處為什么可以解決跨域問題地址欄輸入流程總結(jié)初級(jí)階段是會(huì)用。 前幾天也是有人問我的一些問題,我覺得還是挺有了解價(jià)值的,也是一些平時(shí)開發(fā)可能比較會(huì)忽略的問題。別的不多說,直接開門見山: 1.post和get的區(qū)別? 我們都知道GET和POST是HTTP請(qǐng)求的兩種基本方法。我相信如果有人問到你這...

    wangtdgoodluck 評(píng)論0 收藏0
  • 前端相關(guān)大雜燴

    摘要:希望幫助更多的前端愛好者學(xué)習(xí)。前端開發(fā)者指南作者科迪林黎,由前端大師傾情贊助。翻譯最佳實(shí)踐譯者張捷滬江前端開發(fā)工程師當(dāng)你問起有關(guān)與時(shí),老司機(jī)們首先就會(huì)告訴你其實(shí)是個(gè)沒有網(wǎng)絡(luò)請(qǐng)求功能的庫(kù)。 前端基礎(chǔ)面試題(JS部分) 前端基礎(chǔ)面試題(JS部分) 學(xué)習(xí) React.js 比你想象的要簡(jiǎn)單 原文地址:Learning React.js is easier than you think 原文作...

    fuyi501 評(píng)論0 收藏0
  • 2017-08-28 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選譯高階函數(shù)利用和來(lái)編寫更易維護(hù)的代碼,從入門到放棄響應(yīng)式編程入門行的電梯調(diào)度模擬器個(gè)人分享前端學(xué)習(xí)資源分享中文周刊技術(shù)周刊期知乎專欄中的內(nèi)置方法知乎專欄中的柯里化前端大寶劍小結(jié)常見知識(shí)依賴收集掘金項(xiàng)目主域重 2017-08-28 前端日?qǐng)?bào) 精選 【譯】高階函數(shù):利用Filter、Map和Reduce來(lái)編寫更易維護(hù)的代碼Webpack 3,從入門到放棄響應(yīng)式編程入門:50 行...

    xumenger 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<