@ckeditor/ckeditor5-image
Version:
Image feature for CKEditor 5.
384 lines (315 loc) • 9.75 kB
CSS
/**
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
:root{
--ck-content-color-image-caption-background:#f7f7f7;
--ck-content-color-image-caption-text:#333;
--ck-color-image-caption-highlighted-background:#fd0;
}
@media (forced-colors: none){
.ck.ck-editor__editable .image > figcaption.image__caption_highlighted{
animation:.6s ease-out ck-image-caption-highlight;
}
}
@media (prefers-reduced-motion: reduce){
.ck.ck-editor__editable .image > figcaption.image__caption_highlighted{
animation:none;
}
}
@keyframes ck-image-caption-highlight{
0%{
background-color:var(--ck-color-image-caption-highlighted-background);
}
100%{
background-color:var(--ck-content-color-image-caption-background);
}
}
:is(.ck.ck-editor__editable td, .ck.ck-editor__editable th) .image-inline.image_resized img{
max-width:100%;
}
[dir="ltr"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{
margin-right:var(--ck-spacing-standard);
}
[dir="rtl"] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{
margin-left:var(--ck-spacing-standard);
}
.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label{
width:4em;
}
:root{
--ck-content-image-style-spacing:1.5em;
--ck-content-inline-image-style-spacing:calc(var(--ck-content-image-style-spacing) / 2);
}
:is(.ck.ck-splitbutton.ck-splitbutton_flatten:hover, .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open) > .ck-splitbutton__action:not(.ck-disabled), :is(.ck.ck-splitbutton.ck-splitbutton_flatten:hover, .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open) > .ck-splitbutton__arrow:not(.ck-disabled), :is(.ck.ck-splitbutton.ck-splitbutton_flatten:hover, .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open) > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover){
background-color:var(--ck-color-button-on-background);
}
:is(:is(.ck.ck-splitbutton.ck-splitbutton_flatten:hover, .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open) > .ck-splitbutton__action:not(.ck-disabled), :is(.ck.ck-splitbutton.ck-splitbutton_flatten:hover, .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open) > .ck-splitbutton__arrow:not(.ck-disabled), :is(.ck.ck-splitbutton.ck-splitbutton_flatten:hover, .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open) > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover)):after{
display:none;
}
.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover > .ck-splitbutton__action:not(.ck-disabled), .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover > .ck-splitbutton__arrow:not(.ck-disabled), .ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover > .ck-splitbutton__arrow:not(.ck-disabled):not(:hover){
background-color:var(--ck-color-button-on-hover-background);
}
:is(.ck.ck-editor__editable .image, .ck.ck-editor__editable .image-inline).ck-appear{
animation:.7s fadeIn;
}
@media (prefers-reduced-motion: reduce){
:is(.ck.ck-editor__editable .image, .ck.ck-editor__editable .image-inline).ck-appear{
opacity:1;
animation:none;
}
}
.ck.ck-editor__editable .image, .ck.ck-editor__editable .image-inline{
position:relative;
}
.ck.ck-editor__editable .image .ck-progress-bar, .ck.ck-editor__editable .image-inline .ck-progress-bar{
background:var(--ck-color-upload-bar-background);
width:0;
height:2px;
transition:width .1s;
position:absolute;
top:0;
left:0;
}
@keyframes fadeIn{
from{
opacity:0;
}
to{
opacity:1;
}
}
:root{
--ck-color-image-upload-icon:#fff;
--ck-color-image-upload-icon-background:#008a00;
--ck-image-upload-icon-size:20;
--ck-image-upload-icon-width:2px;
--ck-image-upload-icon-is-visible:clamp(0px, 100% - 50px, 1px);
}
.ck-image-upload-complete-icon{
opacity:0;
background:var(--ck-color-image-upload-icon-background);
font-size:calc(1px * var(--ck-image-upload-icon-size));
width:calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));
height:calc(var(--ck-image-upload-icon-is-visible) * var(--ck-image-upload-icon-size));
top:min(var(--ck-spacing-medium), 6%);
right:min(var(--ck-spacing-medium), 6%);
border-radius:50%;
animation-name:ck-upload-complete-icon-show, ck-upload-complete-icon-hide;
animation-duration:.5s, .5s;
animation-delay:0s, 3s;
animation-fill-mode:forwards, forwards;
display:block;
position:absolute;
overflow:hidden;
}
.ck-image-upload-complete-icon:after{
opacity:0;
transform-origin:0 0;
border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);
border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);
box-sizing:border-box;
content:"";
width:0;
height:0;
animation-name:ck-upload-complete-icon-check;
animation-duration:.5s;
animation-delay:.5s;
animation-fill-mode:forwards;
position:absolute;
top:50%;
left:25%;
transform:scaleX(-1) rotate(135deg);
}
@media (prefers-reduced-motion: reduce){
.ck-image-upload-complete-icon{
animation-duration:0s;
}
.ck-image-upload-complete-icon:after{
opacity:1;
width:.3em;
height:.45em;
animation:none;
}
}
.ck-image-upload-complete-icon{
z-index:1;
}
@keyframes ck-upload-complete-icon-show{
from{
opacity:0;
}
to{
opacity:1;
}
}
@keyframes ck-upload-complete-icon-hide{
from{
opacity:1;
}
to{
opacity:0;
}
}
@keyframes ck-upload-complete-icon-check{
0%{
opacity:1;
width:0;
height:0;
}
33%{
width:.3em;
height:0;
}
100%{
opacity:1;
width:.3em;
height:.45em;
}
}
:root{
--ck-color-upload-placeholder-loader:#b3b3b3;
--ck-upload-placeholder-loader-size:32px;
--ck-upload-placeholder-image-aspect-ratio:2.8;
}
.ck .ck-image-upload-placeholder{
width:100%;
margin:0;
}
.ck .ck-image-upload-placeholder.image-inline{
width:calc(2 * var(--ck-upload-placeholder-loader-size) * var(--ck-upload-placeholder-image-aspect-ratio));
}
.ck .ck-image-upload-placeholder img{
aspect-ratio:var(--ck-upload-placeholder-image-aspect-ratio);
}
.ck .ck-upload-placeholder-loader{
justify-content:center;
align-items:center;
width:100%;
height:100%;
display:flex;
position:absolute;
top:0;
}
.ck .ck-upload-placeholder-loader:before{
width:var(--ck-upload-placeholder-loader-size);
height:var(--ck-upload-placeholder-loader-size);
border-top:3px solid var(--ck-color-upload-placeholder-loader);
content:"";
border-right:2px solid #0000;
border-radius:50%;
animation:1s linear infinite ck-upload-placeholder-loader;
position:relative;
}
.ck .ck-upload-placeholder-loader{
left:0;
}
@keyframes ck-upload-placeholder-loader{
to{
transform:rotate(360deg);
}
}
.ck.ck-editor__editable .image > figcaption.ck-placeholder:before{
padding-left:inherit;
padding-right:inherit;
white-space:nowrap;
text-overflow:ellipsis;
overflow:hidden;
}
.ck.ck-editor__editable .image{
z-index:1;
}
.ck.ck-editor__editable .image.ck-widget_selected{
z-index:2;
}
.ck.ck-editor__editable .image-inline{
z-index:1;
}
.ck.ck-editor__editable .image-inline.ck-widget_selected{
z-index:2;
}
.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection{
display:none;
}
.ck.ck-editor__editable .image-inline img{
height:auto;
}
:is(.ck.ck-editor__editable td, .ck.ck-editor__editable th) .image-inline img{
max-width:none;
}
.ck.ck-editor__editable img.image_placeholder{
background-size:100% 100%;
}
:root{
--ck-image-insert-insert-by-url-width:250px;
}
.ck.ck-image-insert-url{
--ck-input-width:100%;
width:400px;
}
.ck.ck-image-insert-url .ck-image-insert-url__action-row{
grid-column-gap:var(--ck-spacing-large);
margin-top:var(--ck-spacing-large);
display:grid;
}
.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button-save, .ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button-cancel{
justify-content:center;
min-width:auto;
}
.ck.ck-image-insert-url .ck-image-insert-url__action-row .ck-button .ck-button__label{
color:var(--ck-color-text);
}
.ck.ck-image-insert-url .ck-image-insert-url__action-row{
grid-template-columns:repeat(2, 1fr);
}
.ck.ck-image-insert-url{
padding:var(--ck-spacing-large) var(--ck-spacing-large) 0;
}
.ck.ck-image-insert-form > .ck.ck-button{
width:100%;
display:block;
}
[dir="ltr"] :is(.ck.ck-image-insert-form > .ck.ck-button){
text-align:left;
}
[dir="rtl"] :is(.ck.ck-image-insert-form > .ck.ck-button){
text-align:right;
}
.ck.ck-image-insert-form > .ck.ck-collapsible:not(:first-child){
border-top:1px solid var(--ck-color-base-border);
}
.ck.ck-image-insert-form > .ck.ck-collapsible:not(:last-child){
border-bottom:1px solid var(--ck-color-base-border);
}
.ck.ck-image-insert-form > .ck.ck-collapsible{
min-width:var(--ck-image-insert-insert-by-url-width);
}
.ck.ck-image-insert-form > .ck.ck-image-insert-url{
min-width:var(--ck-image-insert-insert-by-url-width);
padding:var(--ck-spacing-large);
}
.ck.ck-image-insert-form:focus{
outline:none;
}
:root{
--ck-image-custom-resize-form-width:340px;
}
@media screen and (width <= 600px){
:root{
--ck-image-custom-resize-form-width:300px;
}
}
.ck.ck-image-custom-resize-form.ck-responsive-form{
width:var(--ck-image-custom-resize-form-width);
}
:root{
--ck-text-alternative-form-width:340px;
}
@media screen and (width <= 600px){
:root{
--ck-text-alternative-form-width:300px;
}
}
.ck.ck-text-alternative-form.ck-responsive-form{
width:var(--ck-text-alternative-form-width);
}