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