찾다

 >  Q&A  >  본문

CodeMirror 제어: 텍스트 영역 자리 표시자의 스타일 수정

Vuejs 기반 웹 애플리케이션의 텍스트 영역에서 CodeMirror 플러그인 버전 5.65.7을 사용하고 있으며 모든 것이 문제 없이 잘 작동합니다. 내 텍스트 영역에 자리 표시자를 추가하여 해당 자리 표시자 파일을 내 응용 프로그램에 추가하고 내 텍스트 영역에서 자리 표시자를 볼 수 있도록 하고 싶습니다.

자리표시자의 글꼴 색상을 변경하고 중앙 정렬을 하고 싶어서 코드미러 스타일을 일부 수정해 보았으나 어떤 이유에서인지 전혀 작동하지 않았습니다. CodeMirror로 제어되는 텍스트 영역의 글꼴 색상과 가운데 맞춤 자리 표시자를 변경하는 방법을 알려주실 수 있나요?

여기에서 비슷한 질문인 Placeholder Font Color를 보고 동일한 작업을 시도했지만 어떤 이유로 작동하지 않았습니다.

CodeSandBox의 문제를 보여주기 위해 실제 애플리케이션을 기반으로 샘플 프로젝트를 만들었습니다.

개발도구를 보고 시도해 보았지만 예상대로 작동하지 않았습니다. 누군가 내가 뭘 잘못하고 있는지 알려주고 해결 방법을 제공할 수 있나요?

다음은 CodeSandBox에서도 사용할 수 있는 코드 예제입니다.

<template>
  <div class="container">
    <div class="row">
      <div class="col-md-5 offset-md-1 mt-5 mr-2 mb-2 pt-2">
        <textarea
          id="jsonEvents"
          ref="jsonEvents"
          v-model="jsonEvents"
          class="form-control"
          placeholder="Document in JSON format"
          spellcheck="false"
          data-gramm="false"
        />
      </div>

      <div class="col-md-5 offset-md-1 mt-5 mr-2 mb-2 pt-2">
        <textarea
          id="xmlEvents"
          ref="xmlEvents"
          v-model="xmlEvents"
          class="form-control"
          placeholder="Document in XML format"
          spellcheck="false"
          data-gramm="false"
        />
      </div>
    </div>
  </div>
</template>

<script>
let CodeMirror = null;

if (typeof window !== "undefined" && typeof window.navigator !== "undefined") {
  CodeMirror = require("codemirror");
  require("codemirror/mode/xml/xml.js");
  require("codemirror/mode/javascript/javascript.js");
  require("codemirror/lib/codemirror.css");
  require("codemirror/addon/lint/lint.js");
  require("codemirror/addon/lint/lint.css");
  require("codemirror/addon/lint/javascript-lint.js");
  require("codemirror/addon/hint/javascript-hint.js");
  require("codemirror/addon/display/placeholder.js");
}

export default {
  name: "Converter",
  components: {},
  data() {
    return {
      xmlEvents: "",
      jsonEvents: "",
      xmlEditor: null,
      jsonEditor: null,
    };
  },
  mounted() {
    // Make the XML textarea CodeMirror
    this.xmlEditor = CodeMirror.fromTextArea(this.$refs.xmlEvents, {
      mode: "application/xml",
      beautify: { initialBeautify: true, autoBeautify: true },
      lineNumbers: true,
      indentWithTabs: true,
      autofocus: true,
      tabSize: 2,
      gutters: ["CodeMirror-lint-markers"],
      lint: true,
      autoCloseBrackets: true,
      autoCloseTags: true,
      styleActiveLine: true,
      styleActiveSelected: true,
    });

    // Set the height for the XML CodeMirror
    this.xmlEditor.setSize(null, "75vh");

    // Make the JSON textarea CodeMirror
    this.jsonEditor = CodeMirror.fromTextArea(this.$refs.jsonEvents, {
      mode: "applicaton/ld+json",
      beautify: { initialBeautify: true, autoBeautify: true },
      lineNumbers: true,
      indentWithTabs: true,
      autofocus: true,
      tabSize: 2,
      gutters: ["CodeMirror-lint-markers"],
      autoCloseBrackets: true,
      autoCloseTags: true,
      styleActiveLine: true,
      styleActiveSelected: true,
    });

    // Set the height for the JSON CodeMirror
    this.jsonEditor.setSize(null, "75vh");

    // Add the border for all the CodeMirror textarea
    for (const s of document.getElementsByClassName("CodeMirror")) {
      s.style.border = "1px solid black";
    }
  },
};
</script>

<style>
textarea {
  height: 75vh;
  white-space: nowrap;
  resize: both;
  border: 1px solid black;
}

.cm-editor .cm-placeholder {
  color: red !important;
  text-align: center;
  line-height: 200px;
}

.CodeMirror-editor pre.CodeMirror-placeholder {
  color: red !important;
  text-align: center;
  line-height: 200px;
}

.CodeMirror-editor .CodeMirror-placeholder {
  color: red !important;
  text-align: center;
  line-height: 200px;
}
</style>

P粉021708275P粉021708275272일 전418

모든 응답(2)나는 대답할 것이다

  • P粉734486718

    P粉7344867182024-03-29 15:54:03

    어쩐지 로그인하지 않으면 귀하의 코드샌드박스를 사용할 수 없습니다. 하지만 다음과 같이 의사 클래스를 사용해 볼 수 있습니다.

    으아아아

    문서를 참조하세요.

    회신하다
    0
  • P粉638343995

    P粉6383439952024-03-29 13:55:51

    가능하다면 Javascript를 사용하여 이를 달성하세요 -

    으아악

    회신하다
    0
  • 취소회신하다