@ckeditor/ckeditor5-image
Version:
Image feature for CKEditor 5.
144 lines (120 loc) • 4.41 kB
CSS
/*
* 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;
}
}
}