Я могу достаточно легко изменить высоту области содержимого CKEditor, используя
config.height = 400;
config.autoGrow_minHeight = 200;
и подобные.
Однако у меня возникли проблемы с тем, чтобы дизайн реагировал на изменение высоты верхней панели при изменении размера окна. Вся документация, которую я видел до сих пор, по-видимому, влияет на высоту одной области содержимого, а не всего CKEditor (то есть: верхней панели, области содержимого и нижней панели).
Я попытался получить доступ к высоте верхнего диапазона с идентификатором cke_1_top
как с jQuery, так и с простым JS, а затем установить область содержимого как требуемую общую высоту за вычетом высоты верха и высоты дна. Однако я не могу выбрать его ни с тем, ни с другим.
Есть ли способ установить высоту всей области или получить высоту сверху и снизу, чтобы я мог использовать их для расчета высоты содержимого?
ИЗМЕНИТЬ 0:
Надеюсь, это имеет больше смысла, чем то, что я изначально написал.
Вот общий план того, что я думаю о соответствующем разделе моего кода:
<div id="cke_rawText">
<span id="cke_rawText-arialbl"></span>
<div class="cke_inner cke_reset">
<span id="cke_1_top"></span>
<div id="cke_1_contents"></div>
<span id="cke_1_bottom"></span>
</div>
</div>
Я могу изменить высоту cke_1_contents
примерно так: config.height = 400
. Я хотел бы, чтобы вся область оставалась постоянной высоты, и по мере сужения окна верхняя панель становится выше, поскольку значки помещаются в новые строки. Текстовая область остается неизменной, а это означает, что весь редактор занимает больше места на странице по вертикали.
Моя идея заключалась в том, чтобы получить высоту cke_1_top
и cke_1_bottom
и вычесть их из высоты cke_inner
, что, в свою очередь, должно заполнить все cke_rawText
. Однако я не смог выбрать эти элементы. Я пытался использовать чистый JS, jQuery и метод getById
CKEditor (http://docs.ckeditor.com/#!/api/CKEDITOR.dom.document). Я получаю null, что означает, что он не находит мой элемент.
Глядя на пример Louys Patrice Bessette, я не могу сделать что-то вроде: $("#CKform").css({"top":"30%"});
, так как я не могу выбрать html элементы.
Я могу изменить высоту в моем файле css, но я не могу сделать это динамически с помощью JS, поскольку я не могу выбирать элементы CKEditor. Возможно, тогда моя проблема больше связана с JS, чем с CKEditor.
ИЗМЕНИТЬ 1:
Думаю, я понял это. Поскольку HTML-код CKEditor генерируется динамически, мне нужно использовать делегирование событий в jQuery. Если у кого-то еще есть такая же проблема, я нашел этот пост полезным.
РЕДАКТИРОВАТЬ 2:
Кажется, это работает:
$(window).resize (function(event) {
event.preventDefault();
var i = parseInt($('.cke_inner').css("height"));
var t = parseInt($('#cke_1_top').css("height")) + 9;
var b = parseInt($('#cke_1_bottom').css("height")) + 9;
var m = i - t - b;
$('#cke_1_contents').css({"height" : m});
});
Я не уверен на 100%, зачем нужны 9, но значение, которое возвращает .css
, отличается именно на эту величину по сравнению с высотой, которую я нашел, проверив элементы.