如何利用HTML/CSS和Javascript可视化地显示Python代码块?
我想像StackOverflow那样显示代码块:如何利用HTML/CSS和Javascript可视化地显示Python代码块?,javascript,html,css,Javascript,Html,Css,我想像StackOverflow那样显示代码块: def func(A): result = 0 n = len(A) while n > 1: n = n/2 result = result + min(A[1,...,n]) return result 一旦代码被指定为代码块,它会正确地为所有代码着色、设置格式和空格。我希望这也发生在我的网站上。顺便说一下,所有代码块都将是python 字体、背景和间距似乎很容易实现(只
def func(A):
result = 0
n = len(A)
while n > 1:
n = n/2
result = result + min(A[1,...,n])
return result
一旦代码被指定为代码块,它会正确地为所有代码着色、设置格式和空格。我希望这也发生在我的网站上。顺便说一下,所有代码块都将是python
字体、背景和间距似乎很容易实现(只需指定一个类,其中背景为灰色,字体为该字体,间距为单空格)
但是,我想知道如何适当地给文本上色?我假设我需要使用JavaScript,并循环遍历代码块中的所有单词,检查它们是否匹配我已预设为特定颜色的单词列表
如果我在此处的任何地方做出了任何错误的假设,或可能使我的方法复杂化的事情,请告知我。更新2021-05-14:
- 更新了代码段,以便在使用
协议时可以运行文件://
- 更改了CodeMirror的链接以指向正确的CDN
CodeMirror运行模式突出显示示例
定义函数(A):
结果=0
n=len(A)
当n>1时:
n=n/2
结果=结果+最小值(A[1,…,n])
返回结果
window.onload=函数(){
var codelement=document.getElementById('python_-code');
//添加用于着色的代码镜像类(默认为主题)
codelement.classList.add('cm-s-default');
var code=codelement.innerText;
codelement.innerHTML=“”;
CodeMirror.runMode(
代码,
“python”,
代码元素
);
};
更新2021-05-14:
- 更新了代码段,以便在使用
协议时可以运行文件://
- 更改了CodeMirror的链接以指向正确的CDN
CodeMirror运行模式突出显示示例
定义函数(A):
结果=0
n=len(A)
当n>1时:
n=n/2
结果=结果+最小值(A[1,…,n])
返回结果
window.onload=函数(){
var codelement=document.getElementById('python_-code');
//添加用于着色的代码镜像类(默认为主题)
codelement.classList.add('cm-s-default');
var code=codelement.innerText;
codelement.innerHTML=“”;
CodeMirror.runMode(
代码,
“python”,
代码元素
);
};
有很多库可以这样做……我假设有人已经创建了类似的东西,但是我可以用谷歌搜索哪些库呢?我一直在寻找我不想要的结果。或者是普通的库……有很多库都是这样做的……我假设有人已经创建了这样的库,但是我可以用谷歌搜索什么来找到这些库呢?我一直在寻找我不想要的结果。或者是公共图书馆……由于某种原因,更新后的答案对我不起作用。我所做的只是将代码块复制粘贴到一个html文件中,然后在chrome中打开该文件。我得到一个空白网页。不知道我做错了什么。当我在堆栈溢出上按“Run code snippet”时,我实际上得到了彩色代码。@Minamael,我刚刚更新了答案,它假设您将使用http服务器来加载文件,并且仅从文件系统打开它们,您使用的是
文件://
协议,该协议有一些限制,除了链接被删除之外“神族“这意味着代码镜像链接的协议部分被填充为文件:
,而不是http:
或https:
,这是代码的原意。由于某种原因,更新后的答案对我不起作用。我所做的只是将代码块复制粘贴到一个html文件中,然后在chrome中打开该文件。我得到一个空白网页。不知道我做错了什么。当我在堆栈溢出上按“Run code snippet”时,我实际上得到了彩色代码。@Minamael,我刚刚更新了答案,它假设您将使用http服务器来加载文件,并且仅从文件系统打开它们,您使用的是文件://
协议,该协议有一些限制,除了链接被删除之外“protocolless”,这意味着代码镜像链接的协议部分填充了文件:
,而不是http:
或https:
,这是代码的初衷