prismjs漂亮的代码语法高亮插件
npm i prismjs -S
# vite
npm install vite-plugin-prismjs -D
line-numbers
显示行数show-language
显示语言copy-to-clipboard
显示语言'inline-color'
在代码中显示颜色块import { prismjsPlugin } from 'vite-plugin-prismjs'
export default defineConfig({
plugins: [
prismjsPlugin({
languages: 'all', // 语言
plugins: ['line-numbers','show-language','copy-to-clipboard','inline-color'],
theme: 'okaidia',// 主题
css: true,
})
]
})
设置语言只需要在class="language-语言"
即可
<template>
<pre><code class="language-python line-numbers">print("Hello world")</code></pre>
</template>
<script setup>
import { onMounted, onUpdated } from "vue";
import Prism from "prismjs";
onUpdated(() => {
Prism.highlightAll(); //修改内容后重新渲染
});
onMounted(() => {
Prism.highlightAll(); //切换菜单重新渲染
})
</script>
通过修改全局pre的样式完成(可以在公告样式中写)
问题:这里虽然完成了效果,但是感觉代码不太理想 通过
before
和after
选择器之后还差一个点,就在选择了code
标签添加befor
pre {
overflow: hidden !important;
code{
display: inline-block;
padding-bottom: 20px;
position: relative;
top: 20px;
}
&::before {
content: "";
position: absolute;
background: red;
width: 10px;
height: 10px;
border-radius: 50%;
top: 10px;
left: 15px;
transform: translate(-50%);
}
&::after {
content: "";
position: absolute;
background: sandybrown;
width: 10px;
height: 10px;
border-radius: 50%;
top: 10px;
left: 30px;
transform: translate(-50%);
}
code:first-child{
&::after{
content: "";
position: absolute;
background: limegreen;
width: 10px;
height: 10px;
border-radius: 50%;
top: -24px;
left: -7px;
transform: translate(-50%);
}
}
}