UNPKG

@ckeditor/ckeditor5-image

Version:

Image feature for CKEditor 5.

144 lines (120 loc) 4.41 kB
/* * Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license */ .ck-content { & .image { display: table; clear: both; text-align: center; /* Make sure there is some space between the content and the image. Center image by default. */ /* The first value should be equal to --ck-spacing-large variable if used in the editor context to avoid the content jumping (See https://github.com/ckeditor/ckeditor5/issues/9825). */ margin: 0.9em auto; /* Make sure the caption will be displayed properly (See: https://github.com/ckeditor/ckeditor5/issues/1870). */ min-width: 50px; & img { /* Prevent unnecessary margins caused by line-height (see #44). */ display: block; /* Center the image if its width is smaller than the content's width. */ margin: 0 auto; /* Make sure the image never exceeds the size of the parent container (ckeditor/ckeditor5-ui#67). */ max-width: 100%; /* Make sure the image is never smaller than the parent container (See: https://github.com/ckeditor/ckeditor5/issues/9300). */ min-width: 100%; /* Keep proportions of the block image if the height is set and the image is wider than the editor width. See https://github.com/ckeditor/ckeditor5/issues/14542. */ height: auto; } } & .image-inline { /* * Normally, the .image-inline would have "display: inline-block" and "img { width: 100% }" (to follow the wrapper while resizing). * Unfortunately, together with "srcset", it gets automatically stretched up to the width of the editing root. * This strange behavior does not happen with inline-flex. */ display: inline-flex; /* While being resized, don't allow the image to exceed the width of the editing root. */ max-width: 100%; /* This is required by Safari to resize images in a sensible way. Without this, the browser breaks the ratio. */ align-items: flex-start; /* When the picture is present it must act as a flex container to let the img resize properly */ & picture { display: flex; } /* When the picture is present, it must act like a resizable img. */ & picture, & img { /* This is necessary for the img to span the entire .image-inline wrapper and to resize properly. */ flex-grow: 1; flex-shrink: 1; /* Prevents overflowing the editing root boundaries when an inline image is very wide. */ max-width: 100%; } } } .ck.ck-editor__editable { /* * Inhertit the content styles padding of the <figcaption> in case the integration overrides `text-align: center` * of `.image` (e.g. to the left/right). This ensures the placeholder stays at the padding just like the native * caret does, and not at the edge of <figcaption>. */ & .image > figcaption.ck-placeholder::before { padding-left: inherit; padding-right: inherit; /* * Make sure the image caption placeholder doesn't overflow the placeholder area. * See https://github.com/ckeditor/ckeditor5/issues/9162. */ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* * See https://github.com/ckeditor/ckeditor5/issues/15115. */ & .image { z-index: 1; /* * Make sure the selected image always stays on top of its siblings. * See https://github.com/ckeditor/ckeditor5/issues/9108. */ &.ck-widget_selected { z-index: 2; } } /* * See https://github.com/ckeditor/ckeditor5/issues/15115. */ & .image-inline { z-index: 1; /* * Make sure the selected inline image always stays on top of its siblings. * See https://github.com/ckeditor/ckeditor5/issues/9108. */ &.ck-widget_selected { z-index: 2; /* * Make sure the native browser selection style is not displayed. * Inline image widgets have their own styles for the selected state and * leaving this up to the browser is asking for a visual collision. */ & ::selection { display: none; } } } /* Keep proportions of the inline image if the height is set and the image is wider than the editor width. See https://github.com/ckeditor/ckeditor5/issues/14542. */ & .image-inline img { height: auto; } /* The inline image nested in the table should have its original size if not resized. See https://github.com/ckeditor/ckeditor5/issues/9117. */ & td, & th { & .image-inline img { max-width: none; } } }