Contribute to this guideReport an issue

guideCompatibility with CSS frameworks

CKEditor 5 is compatible with most of the popular CSS frameworks. However, to properly integrate with some of them, additional tweaks may be necessary. This is mostly due to the fact that:

  • CSS frameworks often use a higher CSS Specificity in their style sheets and override default editor styles, distorting the user interface.
  • Modal components of various UI frameworks use high z-index values in their styles and render over (cover) the UI of CKEditor 5.
  • Framework modals use aggressive focus management policy which breaks the input fields in the rich-text editor (e.g. the link input).

In this guide, you will learn how to address these integration issues and use the CKEditor 5 WYSIWYG editor with the most popular front–end frameworks.

# Compatibility with Bootstrap

We noticed that Bootstrap modals cover the UI of the rich-text editor and break the input fields. Knowing that, you will need to take the following steps to get CKEditor 5 working in the Bootstrap environment:

  • Configure the z-index of the floating editor UI (e.g. balloons) so it is displayed over the Bootstrap overlay.
  • Configure Bootstrap so it stops “stealing” the focus from the rich-text editor input fields.

To address the first issue, add the following styles to your application:

/*
 * Configure the z-index of the editor UI, so when inside a Bootstrap
 * modal, it will be rendered over the modal.
 */
:root {
    --ck-z-default: 100;
    --ck-z-modal: calc( var(--ck-z-default) + 999 );
}

Pass the focus: false option to Bootstrap modal() function to fix the second issue:

$( '#modal-container' ).modal( {
    focus: false
} );

Check out the demo of CKEditor 5 rich-text editor working correctly with Bootstrap.

# Compatibility with Foundation

CKEditor 5 requires some minor adjustments to the z-index of the UI to work properly with Foundation (and with the Reveal modal, too).

/*
 * Configure the z-index of the editor UI, so when inside a Reveal modal,
 * it will be rendered over the modal.
 */
:root {
    --ck-z-default: 100;
    --ck-z-modal: calc( var(--ck-z-default) + 999 );
}

Check out the demo of CKEditor 5 rich-text editor working correctly with Foundation.

# Compatibility with Materialize

If you want to use CKEditor 5 with Materialize.css you will need to take the following steps:

  • Configure the base z-index of the floating editor UI so it is displayed over the Materialize modals.
  • Bring back the default .ck-input class appearance (because Materialize overrides it with a higher specificity).
  • Configure modals so they stop “stealing” the focus from the rich-text editor input fields.

Use the following CSS to address the issues with the z-index and selector specificity:

/*
 * Configure the z-index of the editor UI, so when inside a Materialize
 * modal, it will be rendered over the modal.
 */
:root {
    --ck-z-default: 100;
    --ck-z-modal: calc( var(--ck-z-default) + 999 );
}

/*
 * Bring back the default CKEditor 5 input appearance by overriding
 * high–specificity styles brought by materialize.css.
 *
 * See: https://github.com/Dogfalo/materialize/blob/v1-dev/sass/components/forms/_input-fields.scss#L10-L40
 */
.ck input.ck-input.ck-input-text {
    box-shadow: var(--ck-inner-shadow),0 0;
    background: var(--ck-color-input-background);
    border: 1px solid var(--ck-color-input-border);
    padding: var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);
    transition-property: box-shadow,border;
    transition: .2s ease-in-out;

    height: inherit;
    width: inherit;
    font-size: inherit;
    margin: 0;
    box-sizing: border-box;
}

.ck input.ck-input.ck-input-text:focus {
    border: var(--ck-focus-ring);
    box-shadow: var(--ck-focus-outer-shadow),var(--ck-inner-shadow);
}

To change the behavior of the modals and prevent them from “stealing” the focus, use the dismissible: false option.

M.Modal.init( modal, { dismissible: false } );

// Or "jQuery way":
$( '#modal-container' ).modal( {
    dismissible: false
} );

Check out the demo of CKEditor 5 rich-text editor working correctly with Materialize.css.

# Compatibility with Semantic-UI

CKEditor 5 works properly with Semantic-UI after a small CSS tweak. To use the balloon editor inside a modal, it is necessary to configure the z-index property of the floating editor UI to make it render over the modal:

/*
 * Configure the z-index of the editor UI, so when inside a Semantic-UI modal,
 * it will be rendered over the modal.
 */
:root {
    --ck-z-default: 100;
    --ck-z-modal: calc( var(--ck-z-default) + 999 );
}

Check out the demo of CKEditor 5 rich-text editor working correctly with Semantic-UI.