首頁  >  文章  >  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
上一篇:如何在懸停而不是單擊時顯示選擇框選項?下一篇:如何在懸停而不是單擊時顯示選擇框選項?

相關文章

看更多