首页  >  文章  >  web前端  >  一个简单的、主要是 CSS 的代码编辑器

一个简单的、主要是 CSS 的代码编辑器

Barbara Streisand
Barbara Streisand原创
2024-11-01 06:11:30155浏览

在本文中,我将讨论如何使用主要使用 CSS 来制作一个非常简单的、基于浏览器的代码编辑器。我最初构建这个是当我需要让用户在我正在构建的 CMS 中编辑 JSON 时。

如果您只想跳转到代码和工作示例,就在这里。代码可以在这里找到,工作示例可以在这里

内容可编辑太烂了...

因此,如果您曾经考虑过构建自己的代码编辑器,那么您可能已经看过 contenteditable。虽然 contenteditable 在许多情况下都非常有用,但在您键入时更新内容方面存在一个巨大的问题。当编辑器中的代码发生变化时,在语法高亮显示代码后,几乎不可能将光标放回到原来的位置。

就我而言,我想要一些非常小的东西,而不需要一些巨大的、笨重的库。我开始考虑是否可以构建一个主要使用 CSS 的非常简单的编辑器,仅使用 Javascript 创建语法突出显示的输出,并更新预览。

我想输入一个普通的

幻觉是如何运作的

A Simple, mostly CSS code editor

HTML 代码

<div id="editor">
  <div class="preview"></div>
  <textarea class="code" spellcheck="false"></textarea>
</div>
  • 常规的
  • A
    ;填充了语法突出显示的代码。
  • 一个包裹你的

    html,
    body {
      height: 100vh;
      width: 100vw;
      padding: 0;
      margin: 0;
    }
    
    #editor {
      height: 100%;
      width: 100%;
      box-sizing: border-box;
      display: grid;
      grid-template: 1fr / 1fr;
      place-items: top;
      overflow: auto;
      padding: 2rem;
      background-color: #1a1723;
    }
    
    #editor .code,
    #editor .preview {
      all: unset;
    }
    
    #editor .code,
    #editor .preview {
      height: auto;
      grid-column: 1 / 1;
      grid-row: 1 / 1;
      font-family: Monaco, monospace;
      font-size: 16px;
      resize: none;
      line-height: 24px;
      white-space: pre-wrap;
      overflow: hidden;
    }
    
    #editor .preview {
      pointer-events: none;
      color: #ccc;
    }
    
    #editor .code {
      color: rgba(255, 255, 255, 0);
      caret-color: magenta;
    }
    

    然后我们使用 Prism 从

    就是这样!显然,如果您要编辑数千行代码,则在更新所有语法突出显示的代码时可能会遇到性能问题。改进这个想法的一种方法是创建一个“虚拟”滚动条,并且仅突出显示容器视图中可见的代码。这就是 VsCode 的编辑器的工作方式。

    如果您想尝试一下,您可以找到
    GitHub 上的代码和工作示例

以上是一个简单的、主要是 CSS 的代码编辑器的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript json css html if for while auto using finally function this display input github vscode idea cms
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
上一篇:How to Display Select Box Options on Hover Instead of Clicking?下一篇:How can I create a responsive skewed element with a rounded border using CSS?

相关文章

查看更多