Сделать высоту редактора QuillJS равной 100%

В приведенном ниже приложении я хочу, чтобы редактор Quill заполнил существующее пространство в верхнем и нижнем колонтитулах. Я пытался сделать это на 100%, но это добавляет прокрутку на всю страницу. Как заставить Quill одновременно заполнять пространство, чтобы адаптировать размер экрана. (Если высота уменьшена, высота редактора должна быть уменьшена)

var quill = new Quill('#editor', {
  modules: {
    toolbar: [
      [{ header: [1, 2, false] }],
      ['bold', 'italic', 'underline'],
      ['image', 'code-block']
    ]
  },
  placeholder: 'Compose an epic...',
  theme: 'snow'  // or 'bubble'
});
html,body {
  margin: 0;
  height: 100%;
}

#container {
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

#header {
  height: 40px;
  background: red;
}

#footer {
  height: 40px;
  background: red;
}

#editor-container {
  height: 100%;
}

#editor {
  height: 100%;
}
<link href = "https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.6/quill.snow.css" rel = "stylesheet"/>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.6/quill.js"></script>
<div id = "container">
  <div id = "header">Header</div>
  <div id = "editor-container">
    <div id = "editor">Sample</div>
  </div>
  <div id = "footer">Footer</div>
</div>
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
7
0
12 788
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Проблема в том, что height: 100% происходит из класса ql-container, что вызывает переполнение. Вы можете попробовать следующее:

  1. Добавьте flex: 1 к #editor-container и тоже сделайте флексбокс столбца.

  2. Добавьте flex: 1 и width: 100% к #editor, а для большого контента добавьте overflow-y: auto

См. демо ниже:

var quill = new Quill('#editor', {
  modules: {
    toolbar: [
      [{ header: [1, 2, false] }],
      ['bold', 'italic', 'underline'],
      ['image', 'code-block']
    ]
  },
  placeholder: 'Compose an epic...',
  theme: 'snow'  // or 'bubble'
});
html,body {
  margin: 0;
  height: 100%;
}

* {
  box-sizing: border-box;
}

#container {
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

#header {
  height: 40px;
  background: red;
}

#footer {
  height: 40px;
  background: red;
}

#editor-container {
  height: 100%;
  /* added these styles */
  flex: 1;
  display: flex; 
  flex-direction: column;
}

#editor {
  height: 100%;
  /* added these styles */
  flex: 1;
  overflow-y: auto;
  width: 100%;
}
<link href = "https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.6/quill.snow.css" rel = "stylesheet"/>
<script src = "https://cdnjs.cloudflare.com/ajax/libs/quill/1.3.6/quill.js"></script>
<div id = "container">
  <div id = "header">Header</div>
  <div id = "editor-container">
     <div id = "editor">Sample</div>
  </div>
  <div id = "footer">Footer</div>
</div>

Проблема заключается в высоте: 100% исходит из класса ql-контейнера, который вызывает переполнение. Та же проблема, с которой люди сталкиваются в react-quill

Просто добавьте следующий css в свой код, он перезапишет стиль quill.

    .ql-container {
  min-height: 10rem;
  height: 100%;
  flex: 1;
  display: flex;
  flex-direction: column;
}

.ql-editor {
  height: 100%;
  flex: 1;
  overflow-y: auto;
  width: 100%;
}

Другие вопросы по теме