87 votes

Comment définir la hauteur de CKEditor 5 (Éditeur classique)

Dans CKEditor 4 pour changer la hauteur de l'éditeur, il y avait une option de configuration : config.height.

Comment puis-je changer la hauteur de CKEditor 5? (l'éditeur classique)

1 votes

Comment se fait-il qu'il n'y ait toujours pas de réponse à cela ?!

157voto

Wiktor Walc Points 718

Répondre à ma propre question car cela pourrait aider d'autres personnes.

CKEditor 5 ne dispose plus d'un paramètre de configuration pour changer sa hauteur. La hauteur peut être facilement contrôlée avec du CSS.

Il y a cependant une chose délicate, si vous utilisez le Classic Editor:

ClassicEditor
    .create( document.querySelector( '#editor1' ) )
    .then( editor => {
        // console.log( editor );
    } )
    .catch( error => {
        console.error( error );
    } );

Ensuite, le Classic Editor masquera l'élément d'origine (avec l'id editor1) et le rendra à côté. C'est pourquoi le changement de hauteur de #editor1 via CSS ne fonctionnera pas.

La structure HTML simplifiée, après que CKEditor 5 (le Classic Editor) ait rendu, ressemble comme suit:

            ...

En réalité, le HTML est beaucoup plus complexe, car toute l'interface utilisateur de CKEditor est rendue. Cependant, l'élément le plus important est la "zone d'édition" (ou "boîte d'édition") marquée d'une classe ck-editor__editable_inline:

 ... 

La "zone d'édition" est le rectangle blanc dans lequel on peut entrer du texte. Donc pour styler / changer la hauteur de la zone d'édition, il suffit de cibler l'élément éditable avec du CSS:

.ck-editor__editable_inline {
    min-height: 400px;
}

2 votes

Belle @Wiktor Walc :)

2 votes

Connaissez-vous un moyen de donner une class, un id et surtout un name à l'élément ck5 ? Ma Zend_Form_Validation ne fonctionne pas, car l'entrée est cachée et non remplie. Il est également très important que je puisse accéder directement à la valeur dans Zend_Form donc j'ai besoin que le nom de l'entrée soit défini comme je (et Zend) le souhaite.

0 votes

La classe .ck-editor__editable a de nombreux éléments. Utilisez le sélecteur .ck-editor__editable[role="textbox"].

38voto

Nikolay Bronskiy Points 182

Définir la hauteur via une feuille de style globale. Il suffit d'ajouter dans votre fichier .css commun (comme style.css):

.ck-editor__editable {
    min-height: 500px;
}

14voto

daka83 Points 91
editor.ui.view.editable.editableElement.style.height = '300px';

2 votes

Ceci est une "réponse uniquement de code" au mieux et n'est pas appréciée. Mais en fait, je pense que ce n'est "pas une réponse" du tout. Pourriez-vous expliquer comment cela peut être une réponse qui aide réellement à résoudre le problème des OPs?

2 votes

En fait, c'est une très bonne réponse. Au moins cela m'a beaucoup aidé. Mais vous devez combiner cette ligne avec le code fourni par l'OP. Vous devez ajouter cette ligne au bloc "then", afin que cela ressemble à ceci : ClassicEditor .create( document.querySelector( '#editor1' ) ) .then( editor => { editor.ui.view.editable.editableElement.style.height = '300px'; } ) .catch( error => { console.error( error ); } ); Cela sélectionne essentiellement l'élément HTML de l'éditeur et assigne directement la propriété de hauteur dessus.

3 votes

Cela ne fonctionne plus avec la dernière version de CKEditor 5. Veuillez consulter stackoverflow.com/questions/46559354/… pour un extrait mis à jour qui fonctionne.

9voto

Travis Tidwell Points 31

Si vous souhaitez le faire de manière programmatique, la meilleure façon de le faire est d'utiliser un Plugin. Vous pouvez facilement le faire comme suit. Ce qui suit fonctionne avec CKEditor version 5.12.x

function MinHeightPlugin(editor) {
  this.editor = editor;
}

MinHeightPlugin.prototype.init = function() {
  this.editor.ui.view.editable.extendTemplate({
    attributes: {
      style: {
        minHeight: '300px'
      }
    }
  });
};

ClassicEditor.builtinPlugins.push(MinHeightPlugin);
ClassicEditor
    .create( document.querySelector( '#editor1' ) )
    .then( editor => {
      // console.log( editor );
    })
    .catch( error => {
      console.error( error );
    });

Ou si vous souhaitez ajouter ceci à une version personnalisée, vous pouvez utiliser le plugin suivant.

class MinHeightPlugin extends Plugin {
    init() {
        const minHeight = this.editor.config.get('minHeight');
        if (minHeight) {
            this.editor.ui.view.editable.extendTemplate({
                attributes: {
                    style: {
                        minHeight: minHeight
                    }
                }
            });
        }
    }
}

Ceci ajoute une nouvelle configuration au CKEditor appelée "minHeight" qui définira la hauteur minimale de l'éditeur, qui peut être utilisée comme ceci.

ClassicEditor
    .create(document.querySelector( '#editor1' ), {
      minHeight: '300px'
    })
    .then( editor => {
        // console.log( editor );
    } )
    .catch( error => {
        console.error( error );
    } );

2voto

jodator Points 2240

En ce qui concerne la configuration de la largeur du CKEditor 5 :

CKEditor 5 ne dispose plus d'un paramètre de configuration pour changer sa largeur, mais sa largeur peut être facilement contrôlée avec CSS.

Pour définir la largeur de l'éditeur (y compris la barre d'outils et la zone d'édition), il suffit de définir la largeur du conteneur principal de l'éditeur (avec la classe .ck-editor) :

.ck.ck-editor {
    max-width: 500px;
}

0 votes

Je n'obtiens aucun résultat en ajoutant ce css à mon composant angular 6 !

0 votes

Pour toute personne ayant des difficultés, veuillez consulter : stackoverflow.com/a/52485082/2043175

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X