原本 Prism 的样子
为 Prism 加入 Mac 窗口三个点
我们使用
JavaScript
在 pre
前面加入一个 class
为 ‘pre-mac’
的 div
const container = document?.getElementById('container') const codeBlocks = container?.getElementsByTagName('pre') Array.from(codeBlocks).forEach(item => { item.style.whiteSpace = 'pre-wrap' // Add pre-mac element for Mac Style UI const preMac = document.createElement('div') preMac.classList.add('pre-mac') preMac.innerHTML = '<span></span><span></span><span></span>' item.parentElement.insertBefore(preMac, item) })
接着,我们为这些 <span>
使用 css
画成圆圈并填入对应色彩,程序如下
.pre-mac { position: relative; margin-top: -7px; top: 21px; left: 10px; width: 100px; z-index: 99; } .pre-mac > span { float: left; width: 10px; height: 10px; border-radius: 50%; margin-right: 5px; } .pre-mac > span:nth-child(1) { background: red; } .pre-mac > span:nth-child(2) { background: sandybrown; } .pre-mac > span:nth-child(3) { background: limegreen; }
这样就会帮我们画出如同 Mac 窗口的红绿灯窗口三键
Code 加入了 Mac 窗口三键
为 Prism 加入 行数
为每个
pre
加入新的 class
”line-numbers”item.classList.add('line-numbers')
让 Prism 重新跑起来!
Prism.highlightAll()
Code 多了行数显示
为 Prism 加入 Toolbar
因为要加入
Copy 按钮
与 编程语言显示
,这两个功能都会在工具列上使用到!在博客详细页面,我们引入
toolbar
这个 plugin!// @/themes/[your_theme]/components/ArticleDetail.js import 'prismjs/plugins/toolbar/prism-toolbar'
为 Prism 加入 Copy 按钮
让拷贝代码变得很轻松,一键拷贝!
在博客详细页面,我们引入
copy-to-clipboard
这个 plugin!// @/themes/[your_theme]/components/ArticleDetail.js import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard'
为 Prism 加入编程语言显示
// @/themes/[your_theme]/components/ArticleDetail.js import 'prismjs/plugins/copy-to-clipboard/prism-copy-to-clipboard'
使用漂亮的代码主题: One Dark
首先,我们要先装
prism-themes
来装额外的主题!我选择 one-dark
这个很多人用的主题!yarn add prism-themes
再来,我们要在 app
底层加载这个 css
// @/pages/_app.js import 'prism-themes/themes/prism-one-dark.css'
最后,我对于 css 与底色做一些调整,并加入圆角,漂亮的 Mac 风格代码萤光器就做好啦!
