django1.10開發博客(13)——代碼高亮與回到頁首

這幾天補充了博客的一些功能,簡單總結一下方法。
由于做的時候也是一邊查資料一邊摸索著寫,所以也沒留下具體的步驟記錄。懶得再重新寫一遍了,主要是雖然學著做的時候麻煩,但是回過頭來看的話發現步驟其實很簡單,所以下面都是對照著我查的資料和現在版本的代碼寫的。其實也對博客做了一些美化,主要是對css和html的編輯,這個就不記錄了,沒什么意義。

代碼高亮


前面已經實現了markdown,因此可以在博客里面嵌入代碼段,但代碼段只有一種顏色,實在是不美觀,我們當然希望能像代碼編輯器一樣看到不同顏色的代碼,也就是代碼高亮功能。這一節我們選擇用pygments實現代碼高亮,主要參考了Django 學習小組 代碼語法高亮 。另外古城車票使用了 SyntaxHighlighter代碼高亮 ,我試了下效果也不錯。

首先是安裝pygments包。命令行或者PyCharm安裝都可以。

(myvenv) $ pip install pygments

安裝完以后要把它加入到setting.py中:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'markdown2',
    'pygments',
    'blog',
]

pygments的工作原理是把代碼切分成一個個單詞,然后為這些單詞添加 css 樣式,不同的詞應用不同的樣式,這樣就實現了代碼顏色的區分,即高亮了語法,因此我們要引入一些css樣式文件。搜到一個css文件的下載地址:https://github.com/richleland/pygments-css

把css樣式文件以靜態文件方式引入模板base.html,比如我引入的是emacs風格:

<head>
    ...
    <link rel="stylesheet" href="{% static 'css/emacs.css' %}">
    ...
</head>

然后再寫代碼段試試。注意第一個【```】后面要寫上代碼語言(C++、Python、html等),不然識別不了。

回到頁首


回到頁首功能需要借助JavaScript,新建一個JavaScript文件,在html內類似于引入css一樣引入js,或者直接在html頭部寫JavaScript代碼都可以。參考教程:JavaScript回到頂部的效果實現

js代碼原理就是獲取當前位置(滾動條位置)到頁首的距離,然后先上移一段距離,再獲取距離,再移一段 ... 每次移動距離越來越小,最后逼近頁首。代碼就是上面鏈接里面的代碼,不重復了,注釋也很容易理解。

教程里面使用的例子是一個“TOP”鏈接,我想把這個鏈接改成一個固定懸浮在頁面角落的“按鈕”,按鈕上是一個向上的箭頭。不管現在我在頁面的哪個位置,我都可以點擊角落的懸浮按鈕回到頁首。

在base.html頭部定義css格式fixed_div:

<head>
    ...
    <style type="text/css">
        .fixed_div{
        position:fixed;
        right:100px;
        bottom:100px;
        }
    </style>
    ...
</head>

簡單解釋一下:position:fixed;就是按鈕位置固定,不隨頁面滾動而改變。具體位置就是距右側100px,距底部100px的地方。

然后在想放置按鈕的地方寫:

<div class="fixed_div">
    <a id="gotop" href="#" onclick="goTop();return false;">
        <button type="button" class="btn btn-default btn-lg" style="font-size: 20px">
            <span class="glyphicon glyphicon-arrow-up"></span>
        </button>
    </a>
</div>

效果,看本博客現在的樣子就知道了。

2016.11.7

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容