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

資訊專欄INFORMATION COLUMN

博客改造升級(jí)

Pines_Cheng / 2355人閱讀

摘要:開(kāi)始之前寫的個(gè)人博客確實(shí)有點(diǎn)太丑了,最近重寫了一番。一圖勝千言,且看如下效果個(gè)人博客地址項(xiàng)目地址自定義滾動(dòng)條目前對(duì)于自定義滾動(dòng)條支持情況比較好的也就只有了,所以針對(duì)有必要把滾動(dòng)條的樣式改造一下。典型的多對(duì)多關(guān)系。

開(kāi)始

之前寫的個(gè)人博客確實(shí)有點(diǎn)太丑了,最近重寫了一番。做了移動(dòng)端適配,增加了文章標(biāo)簽以及做了相冊(cè)等功能。
看著很不錯(cuò)。talk is cheap,show me you code。一圖勝千言,且看如下效果:

個(gè)人博客地址:http://www.baijiawei.top

項(xiàng)目GitHub地址:https://github.com/bjw1234/bl...

自定義滾動(dòng)條

目前對(duì)于自定義滾動(dòng)條支持情況比較好的也就只有Chrome了,所以針對(duì)Chrome有必要把滾動(dòng)條的樣式改造一下。

雖然有jQuery插件可以完成各個(gè)瀏覽器下的自定義滾動(dòng)條樣式,但是由于整個(gè)項(xiàng)目都是用原生JS開(kāi)發(fā)完成的,
未使用jQuery,所以也沒(méi)必要為了一個(gè)滾動(dòng)條引入一個(gè)庫(kù)和一個(gè)插件了。

        ::-webkit-scrollbar {
            width: 10px;
            height: 10px;
        }
        /*不要水平滾動(dòng)條*/
        ::-webkit-scrollbar:horizontal {
                height: 0;
            }

        /*主干樣式*/
        ::-webkit-scrollbar-track {
            background-color: rgba(0, 0, 0, .1);
            -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1);
        }

        /*鼠標(biāo)懸浮時(shí)主干樣式*/
        ::-webkit-scrollbar-track:hover {
            background-color: rgba(0, 0, 0, .2);
            -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1);
        }

        /*滑塊樣式*/
        ::-webkit-scrollbar-thumb {
            border-radius: 10px;
            background-color: rgba(0, 0, 0, .3);
            -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1);
        }

        /*鼠標(biāo)懸浮時(shí)滑塊樣式*/
        ::-webkit-scrollbar-thumb:hover {
            border-radius: 10px;
            background-color: rgba(0, 0, 0, .4);
            -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1);
        }

        :hover::-webkit-scrollbar-thumb {
            border-radius: 10px;
            background-color: rgba(0, 0, 0, .4);
            -webkit-box-shadow: inset 1px 1px 0 rgba(0, 0, 0, .1);
        }

        /*上端按鈕樣式*/
        ::-webkit-scrollbar-button:start {
            width: 10px;
            height: 10px;
            background: url(./image/scrollbar_arrow.png) no-repeat 0 0;
        }

        ::-webkit-scrollbar-button:start:hover {
            background: url(./image/scrollbar_arrow.png) no-repeat -15px 0;
        }

        /*下端按鈕樣式*/
        ::-webkit-scrollbar-button:end {
            background: url(./image/scrollbar_arrow.png) no-repeat 0 -18px;
        }

        ::-webkit-scrollbar-button:end:hover {
            background: url(./image/scrollbar_arrow.png) no-repeat -15px -18px;
        }

webkit提供的還有更多的偽類,可以定制更豐富滾動(dòng)條樣式。
詳細(xì)內(nèi)容參考:https://www.webkit.org/blog/3...

頁(yè)面頂canvas動(dòng)畫
這里給出原作者的地址:https://codepen.io/iamfronten...
起初想著自己實(shí)現(xiàn)這個(gè)效果,大概寫完之后發(fā)現(xiàn)人家的背景是用SVG做的,
還有一點(diǎn)點(diǎn)隨風(fēng)飄動(dòng)的趕腳,索性就直接用的人家的代碼。 ^_^||

原理:通過(guò)window對(duì)象上的requestAnimationFrame方法不斷地重繪canvas,實(shí)現(xiàn)小星星,流星等的位移、透明度的變化。

寫一點(diǎn)偽碼:

let canvas = document.getElementById("canvas");
let ctx = canvas.getContext("2d");

// 初始化
init();

// 繪制
draw();

function draw(){
    // 清空畫板
    ctx.clearRect(0,0,canvasW,canvasH);
    
    // 繪制小星星
    for(var i = 0; i < stars.length; i++) {
        stars[i].move(); // 位移
        stars[i].changAlpha(); // 改變透明度
        stars[i].drawSelf(); // 畫出自己
        stars[i].checkBound(); // 邊界檢測(cè)
    }
  
    // 繪制流星同理
    ...
    
    // 不斷地重繪
    window.requestAnimationFrame(draw);
}

// 星星類
function star(){
    // 很多自己的屬性
    ....
    
    this.move = function(){}
    this.changAlpha = function(){}
    this.drawSelf = function(){}
    this.checkBound = function(){}
}

如果流星出現(xiàn)的概率是3%,我們?cè)趺淳珳?zhǔn)的控制它呢?

// 獲取概率(Boolean)
function getProbability(percent) {
    return Matth.floor(Math.random()*100+1) < percent;
}

getProbability(3); // 當(dāng)返回true的時(shí)候再去添加彗星
流暢的返回頂部

原理:也是使用requestAnimationFrame這個(gè)函數(shù)不斷改變scrollTo(滾動(dòng)到)的位置。
使用setTimeout函數(shù)調(diào)整容器的scrollTop值雖然也能實(shí)現(xiàn)返回頂部的效果,但沒(méi)有上面這種方法流暢。

// 返回頂部
function smoothScroll() {
    var currentScroll = document.documentElement.scrollTop || document.body.scrollTop;
    if (currentScroll > 0) {
        window.requestAnimationFrame(smoothScroll);
        window.scrollTo(0, currentScroll - (currentScroll / 5));
    }
}
關(guān)于文章標(biāo)簽

一篇文章對(duì)應(yīng)多個(gè)標(biāo)簽。
一個(gè)標(biāo)簽也可以被多篇文章使用

典型的多對(duì)多關(guān)系。

后端數(shù)據(jù)庫(kù)使用的是MongoDB,實(shí)現(xiàn)這種多對(duì)多關(guān)系的數(shù)據(jù)表索引有點(diǎn)不知從何下手的感覺(jué)。
索性就使用了子文檔的方式實(shí)現(xiàn)這樣的效果。
ps: 如果您有思路的話,希望可以不吝賜教,非常感謝。

const mongoose = require("mongoose");
const Category = require("./categorySch");

// Article
module.exports = new mongoose.Schema({
    // 關(guān)聯(lián)字段
    children: [ // 子文檔標(biāo)簽數(shù)組
        Category 
    ],
    // 作者
    user: {
        type: mongoose.Schema.Types.ObjectId,
        ref: "User"
    },
    // 內(nèi)容
    content: {
        type: String,
        default: ""
    }
    ....
});

使用這種方式添加、查詢標(biāo)簽都很容易。

// 將用戶提交的標(biāo)簽用空格切分返回一個(gè)對(duì)象
let categoryArr = category.split(" ").map(item => {
    return { category_name: item };
});

// 將用戶提交的數(shù)據(jù)加入數(shù)據(jù)庫(kù)
return new Article({
    title: title,
    // 直接就可以添加
    children: categoryArr,
}).save();

// 查詢就更簡(jiǎn)單了
article.children;

在模板中使用一個(gè)for循環(huán)就可以直接渲染數(shù)據(jù):

{% for category in art.children %}
  • {{ category.category_name }}
  • {% endfor %}

    至于根據(jù)標(biāo)簽查詢對(duì)應(yīng)文章,起初想著向后端傳遞標(biāo)簽的ID,但是,發(fā)現(xiàn)每篇文章下相同類別的標(biāo)簽對(duì)應(yīng)的ID不同。
    這就是使用子文檔的代價(jià)),索性就直接傳遞標(biāo)簽名了,雖說(shuō)這樣的方式不優(yōu)雅,但也能實(shí)現(xiàn)想要的效果了。

    前一條和后一條數(shù)據(jù)
    let prev = function () {
        return Article.find({"_id": {"$gt": id}}).sort({_id: 1}).limit(1).then(result => {
            data.prev = null;
            if (result.length >= 0) {
                data.prev = result[0];
            }
        });
    };
    
    let next = function () {
        return Article.find({"_id": {"$lt": id}}).sort({_id: -1}).limit(1).then(result => {
            data.next = null;
            if (result.length >= 0) {
                data.next = result[0];
            }
        });
    };
    相冊(cè)功能開(kāi)發(fā)

    圖片存儲(chǔ)使用了圖床(路過(guò)圖床),后端只需要存儲(chǔ)markdown語(yǔ)法的字符串,
    前端就可以解析成img標(biāo)簽,還是蠻好用的。

    最后

    至于像是服務(wù)器搭建、模板引擎、markdown語(yǔ)法高亮、分頁(yè)等功能就不重復(fù)說(shuō)了。

    詳細(xì)內(nèi)容可以看我之前的文章。
    https://segmentfault.com/a/11...

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

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

    相關(guān)文章

    • 博客改造升級(jí)

      摘要:開(kāi)始之前寫的個(gè)人博客確實(shí)有點(diǎn)太丑了,最近重寫了一番。一圖勝千言,且看如下效果個(gè)人博客地址項(xiàng)目地址自定義滾動(dòng)條目前對(duì)于自定義滾動(dòng)條支持情況比較好的也就只有了,所以針對(duì)有必要把滾動(dòng)條的樣式改造一下。典型的多對(duì)多關(guān)系。 開(kāi)始 之前寫的個(gè)人博客確實(shí)有點(diǎn)太丑了,最近重寫了一番。做了移動(dòng)端適配,增加了文章標(biāo)簽以及做了相冊(cè)等功能??粗懿诲e(cuò)。talk is cheap,show me you cod...

      AnthonyHan 評(píng)論0 收藏0
    • UWAF推出IPv6合規(guī)解決方案,助力金融政府客戶IPv6改造,更有1元體驗(yàn)版嘗鮮!

      摘要:近期,又迎來(lái)了一次重大升級(jí),主要包括如下重點(diǎn)功能新增華南區(qū)域節(jié)點(diǎn)擴(kuò)展包,推出合規(guī)解決方案,新增中國(guó)內(nèi)地體驗(yàn)版。后續(xù)將進(jìn)一步支持回源多區(qū)域部署等功能,助力政府金融企業(yè)快速安全的實(shí)現(xiàn)改造。Web系統(tǒng)承載著各企事業(yè)單位的門戶、注冊(cè)登錄、業(yè)務(wù)執(zhí)行等職責(zé),很容易遭受各種類型的惡意流量攻擊,影響應(yīng)用可用性、損害安全性或消耗過(guò)多的資源,UCloud Web應(yīng)用防火墻UWAF則可以有效保護(hù)用戶的 Web 應(yīng)...

      Tecode 評(píng)論0 收藏0
    • 有關(guān)中國(guó)服裝制造業(yè)轉(zhuǎn)型升級(jí)的看法

      摘要:關(guān)于中國(guó)制造業(yè)轉(zhuǎn)型升級(jí),業(yè)界一直存在兩種常見(jiàn)誤區(qū)。因此,對(duì)于中國(guó)制造業(yè)的轉(zhuǎn)型升級(jí),該當(dāng)摒棄局部?jī)?yōu)化的技術(shù)改造思路,無(wú)論是消費(fèi)品還是工業(yè)品生產(chǎn)制造,只需從市場(chǎng)需求生產(chǎn)選購(gòu)的供應(yīng)鏈全體效益角度動(dòng)身,才可能探究出正確的路徑 互聯(lián)網(wǎng)對(duì)制造業(yè)的影響不該當(dāng)以割裂的視角單獨(dú)來(lái)看,而該當(dāng)放在整個(gè)產(chǎn)業(yè)互聯(lián)網(wǎng)化...

      付永剛 評(píng)論0 收藏0
    • 微信小游戲體驗(yàn)之打飛機(jī)改造計(jì)劃

      摘要:微信小游戲推出已有幾天了,這個(gè)功能對(duì)小程序和小游戲的推動(dòng)影響不用多說(shuō),大家趕緊摩拳擦掌往上擼就可以了。打飛機(jī)小游戲使用無(wú)模式創(chuàng)建一個(gè)微信小游戲后可以看到官方,其中入口文件和配置文件和。 微信小游戲推出已有幾天了,這個(gè)功能對(duì)小程序和小游戲的推動(dòng)影響不用多說(shuō),大家趕緊摩拳擦掌往上擼就可以了。關(guān)于如何開(kāi)發(fā)官方文檔已經(jīng)說(shuō)明了,這篇?jiǎng)t是對(duì)官方的打飛機(jī)demo一些小改造。 開(kāi)發(fā)預(yù)備式 下載最新版...

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

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

    0條評(píng)論

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