Contribute to this guide

指南调整图像大小

图像调整大小功能允许您更改内容中图像的宽度。它是通过 ImageResize 插件实现的。

# 调整图像大小的方法

编辑器提供了不同的方法来调整图像大小,可以使用“调整大小手柄”或使用专用 UI 组件(下拉菜单或独立按钮)。

ImageResize 插件启用了显示在选定图像上的四个调整大小手柄。用户可以通过拖动它们来调整图像大小。您可以配置该功能以使用百分比(默认)或像素值。

该插件还允许您通过单击图像工具栏来更改图像大小。您可以使用 resizeOptions 设置一个可选的静态配置,并选择是否要使用下拉菜单或一组独立按钮。

# 使用调整大小手柄

在这种情况下,您可以通过拖动显示在其每个角上的方形手柄来调整图像大小。启用图像调整大小后,此选项不需要任何额外的配置。

使用角手柄调整图像大小,并根据需要调整到文本。您还可以使用图像工具栏中的对齐选项 图像对齐 来实现所需的效果。

图像也可以使用样式进行预调整大小,如下所示(最后三张图像设置为 28% 以确保视觉一致性)。

会说话的鸟

有许多种鸟类可以模仿人类的言语。其中,鹦鹉在流行文化中最为普遍,尽管乌鸦、八哥或椋鸟等其他鸟类也可以模仿人类的声音。其中一些只能重复几个词,而另一些则拥有超过一千个词的丰富词汇量。

最早有记录的会说话的鸟可能是公元前 2500 年希腊历史学家克特西阿斯描述的一只鹦鹉。虽然鸟类重复人类单词的能力是毋庸置疑的,但关于它们是否理解语言以及理解程度存在争议。


著名的会说话的鸟类物种

太阳鹦鹉Aratinga solstitialis),在鸟类养殖中也被称为太阳锥尾鹦鹉,是一种中等大小、颜色鲜艳的鹦鹉,原产于南美洲东北部。不幸的是,该物种由于栖息地丧失和为贸易而被捕猎而处于濒危状态。

太阳鹦鹉是群居动物,它们会组成大型鸟群,通过言语和非言语方式进行交流,并一起飞翔很远的距离。尽管它们被认为是会说话的鸟,但它们在圈养中的言语和学习技巧的能力相当有限。

 听听这只太阳锥尾鹦鹉,它不想被人抚摸。

鸡尾鹦鹉(Nymphicus hollandicus),也被称为 quarrion,是一种原产于澳大利亚的小型鹦鹉。这些可爱的小鸟头顶有一个独特的尖端,在全世界范围内都被人们高度赞赏为家养宠物。它们应该得到很好的照顾。

有些人认为鸡尾鹦鹉很难训练人类语言的奥秘,但实际上,它们柔软的声音需要训练师拥有更好的技能来理解它们模仿的内容。

 听听 Butters,这只会说话的鸡尾鹦鹉。

虎皮鹦鹉(Melopsittacus undulatus)是一种小型、长尾、以种子为食的鹦鹉,通常被称为虎皮鹦鹉,在美国英语中被称为鹦鹉。它们经常被饲养为宠物 - 比鸡尾鹦鹉更受欢迎。雄性虎皮鹦鹉在谈话能力方面位列前五位鹦鹉物种。它们模仿能力令人印象深刻:1995 年,卡米尔·乔丹饲养的一只雄性虎皮鹦鹉出现在《吉尼斯世界纪录》中,因为它拥有最大的词汇量,包含 1728 个单词!

 听听这只名叫 Kiwi 的神奇虎皮鹦鹉,它会使用三十多个单词。

为了清晰起见,本指南中的所有演示都只展示了一组有限的功能。访问 功能丰富的编辑器示例,以查看更多实际应用。

您可以在 CKEditor 5 WYSIWYG 编辑器中通过两种不同的方式配置通过手柄调整图像大小

  • 通过安装 ImageResize 插件。它包含本指南 安装 部分所述的所有必要功能(ImageResizeEditingImageResizeHandlesImageResizeButtons)。

  • 通过安装 ImageResizeEditingImageResizeHandles 插件的组合。这将不会加载不必要的 ImageResizeButtons 插件

import { ClassicEditor, Image, ImageResizeEditing, ImageResizeHandles } from 'ckeditor5';

ClassicEditor
    .create( document.querySelector( '#editor' ), {
        plugins: [ Image, ImageResizeEditing, ImageResizeHandles, /* ... */ ],
        // More of editor's configuration.
        // ...
    } )
    .then( /* ... */ )
    .catch( /* ... */ );

这两种方法默认都启用调整大小手柄。

# 使用调整大小下拉菜单

在这种情况下,用户可以选择一组预定义的选项。您可以在用户单击图像后可用的图像工具栏中显示这些选项,以下拉菜单的形式。

要使用此选项,您需要启用图像大小调整并配置可用的大小调整选项。然后将下拉菜单添加到图像工具栏配置中。

const imageConfiguration = {
    resizeOptions: [
        {
            name: 'resizeImage:original',
            value: null,
            label: 'Original'
        },
        {
            name: 'resizeImage:custom',
            label: 'Custom',
            value: 'custom'
        },
        {
            name: 'resizeImage:40',
            value: '40',
            label: '40%'
        },
        {
            name: 'resizeImage:60',
            value: '60',
            label: '60%'
        }
    ],
    toolbar: [ 'resizeImage', /* ... */ ]
}

尝试在图像工具栏中使用的图像大小调整大小调整下拉菜单的实时演示。

巨嘴鸟的大喙


巨嘴鸟的名字来源于图皮人的语言tukana。它们以醒目的彩色喙而闻名,可以在南美洲的热带雨林中找到。巨嘴鸟以其鲜艳的橙色喙而闻名,可能是世界上最容易辨认的鸟类之一。

这些鸟在树上筑巢。由于它们不是最好的飞行者,因此它们更喜欢从一棵树跳到另一棵树。它们可以长到 25 英寸,而它们的喙可以达到令人印象深刻的 7 英寸长。然而,当小鸟孵化时,它们的喙很小,直到后来才会长大。巨嘴鸟的喙很大,但非常轻。它们用喙吸引配偶并抵御竞争对手。

以下示例中的图像经过调整以匹配精确的长宽比,因此可以以相等的高度一起显示。

如果要定义插入图像的可能长宽比,例如允许用户插入 1:1 和 40% 宽度以及 1:2 和 20% 宽度图像,则应使用图像样式功能

本指南的最后一个示例中包含使用 CSS 修复图像长宽比的示例。

# 使用独立的大小调整按钮

在这种情况下,大小调整选项将显示为单独的按钮。此解决方案的优点是 UX 最流畅,因为用户只需单击一次即可调整图像大小。

要使用此选项,您需要启用图像大小调整并配置可用的大小调整选项。然后将适当的按钮添加到图像工具栏配置中。

const imageConfiguration = {
    resizeOptions: [
        {
            name: 'resizeImage:original',
            value: null,
            icon: 'original'
        },
        {
            name: 'resizeImage:custom',
            value: 'custom',
            icon: 'custom'
        },
        {
            name: 'resizeImage:50',
            value: '50',
            icon: 'medium'
        },
        {
            name: 'resizeImage:75',
            value: '75',
            icon: 'large'
        }
    ],
    toolbar: [
        'resizeImage:50',
        'resizeImage:75',
        'resizeImage:original',
        'resizeImage:custom',
        // More toolbar options.
        // ...
    ]
}

尝试在图像工具栏中使用的图像大小调整独立大小调整按钮的实时演示。

成为食蜂鸟真是一种享受!


食蜂鸟是中等大小的鸟类(根据物种的不同,它们可达 6 到 14 英寸),可以在欧洲、亚洲、非洲和澳大利亚的热带和亚热带地区找到。它们主要呈现鲜绿色,并带有红色、黄色、紫色和蓝色色调。

这些鸟用它们强壮、中等长度、尖尖的喙捕捉昆虫——主要是蜜蜂(因此得名)和黄蜂。食蜂鸟是凶猛的猎手,能够在空中捕捉到食物。它们非常社会化。它们的群体很大,通常超过 100 只,如果条件允许,有时甚至多达 200 只。科学家认为食蜂鸟可以通过声音识别它们的亲密伙伴——父母和兄弟姐妹。

# 禁用图像大小调整手柄

如果要以用户只能通过按钮调整图像大小的方式配置编辑器,则可以省略ImageResizeHandles 插件来实现。

因此,您的插件设置应如下所示:plugins: [ 'ImageResizeEditing', 'ImageResizeButtons', /* ... */ ],而不是 plugins: [ 'ImageResize', /* ... */ ]

这将仅通过选定的 UI 启用图像大小调整功能:图像工具栏中的下拉菜单独立按钮

import { ClassicEditor, Image, ImageResizeButtons, ImageResizeEditing, ImageToolbar } from 'ckeditor5';

ClassicEditor
    .create( document.querySelector( '#editor' ), {
        plugins: [ Image, ImageResizeEditing, ImageResizeButtons, ImageToolbar, /* ... */ ],
        image: {
            resizeOptions: [
            {
                name: 'resizeImage:original',
                value: null,
                icon: 'original'
            },
            {
                name: 'resizeImage:custom',
                value: 'custom',
                icon: 'custom'
            },
            {
                name: 'resizeImage:50',
                value: '50',
                icon: 'medium'
            },
            {
                name: 'resizeImage:75',
                value: '75',
                icon: 'large'
            }
        ],
        toolbar: [
            'resizeImage:50',
            'resizeImage:75',
            'resizeImage:original',
            'resizeImage:custom',
            // More toolbar options.
            // ...
        ] }
    } )
    .then( /* ... */ )
    .catch( /* ... */ );

# 标记和样式

调整图像大小后,将使用内联width样式,并且编辑器会将image_resized类分配给<figure>元素。

<figure class="image image_resized" style="width: 75%;">
    <img src="..." alt="...">
</figure>

image_resized类用于禁用图像样式分配的max-width(如果将此样式应用于此图像)。例如,“侧边图像”样式定义如下

.ck-content .image-style-side {
    max-width: 50%;
    float: right;
    margin-left: var(--ck-image-style-spacing);
}

max-width将通过以下规则覆盖

.ck-content .image.image_resized {
    max-width: 100%;
}

为调整大小的图像设置样式时,另一个问题是,默认情况下,CKEditor 5 对<figure class="image">元素使用display: table,以使其占据其中<img>元素的大小。不幸的是,浏览器尚不支持在使用display: table样式的同一元素上使用max-widthwidth。因此,调整图像大小时需要使用display: block

.ck-content .image.image_resized {
    display: block;
    box-sizing: border-box;
}

.ck-content .image.image_resized img {
    width: 100%;
}

.ck-content .image.image_resized > figcaption {
    display: block;
}

# 使用像素值而不是百分比宽度

使用百分比宽度可确保内容在 WYSIWYG 编辑器以外的位置显示时保持响应。当用户在编辑器中使图像占据内容宽度的 60%(例如)时,如果您更改目标页面(显示此内容的页面)的宽度,图像仍将占据该空间的 60%。如果页面是响应式页面并根据视窗宽度进行调整,也是如此。

如果您配置了编辑器以使用像素值,则在为网站引入新布局后,图像可能会占据太多空间。

但是,在某些情况下,您可能更喜欢像素值。因此,您可以通过设置config.image.resizeUnit选项来配置编辑器以使用像素值。

ClassicEditor
    .create( editorElement, {
        image: {
            resizeUnit: 'px',
            resizeOptions: [
                {
                    name: 'resizeImage:original',
                    label: 'Original',
                    value: null
                },
                {
                    name: 'resizeImage:custom',
                    label: 'Custom',
                    value: 'custom'
                },
                {
                    name: 'resizeImage:100',
                    label: '100px',
                    value: '100'
                },
                {
                    name: 'resizeImage:200',
                    label: '200px',
                    value: '200'
                }
            ]
        }
    } )
    .then( /* ... */ )
    .catch( /* ... */ );

以下演示使用 CSS 设置固定图像长宽比,因此 200 像素宽的图像会自动获得相同的高度。

.ck.ck-content .image {
    position: relative;
}
.ck.ck-content .image img {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
}
.ck.ck-content .image::before {
    content: '';
    padding-top: 100%;
    display: block;
}

查看以下实时演示中的差异。

小麦上的罂粟花

海伦·亨特·杰克逊

沿着安科纳的山丘,闪耀的热量,
一股热带的空气潮汐,起伏不定,
沐浴着所有的麦田,直到它们发光
就像闪烁的绿色海洋,翻滚拍打
围绕着葡萄藤。罂粟花柔软轻盈
似乎像燃烧的火炬手一样,来回奔跑
标记着海岸。

农民不知道
它们就在那里。他沉重地走着,
数着秋天的收获带来的面包和葡萄酒,
但我——我笑着想,日子还在
也许留给我,即使面包很甜
不再,红酒白白温暖我的血液,
我会高兴地回忆起那些灵活的,
轻盈的罂粟花像火炬手一样在小麦田里奔跑。

# 图像优化和响应式图像

使用CKBox 文件管理器服务时,它会生成一组调整大小的优化图像。用户可以在需要时调用这些调整大小的版本。要了解有关这些功能的更多信息,请参阅响应式图像指南和CKBox 转换指南。

# 安装

⚠️ 新的导入路径

版本 42.0.0开始,我们更改了导入路径的格式。本指南使用新的、更短的格式。如果您使用的是 CKEditor 5 的较旧版本,请参阅旧版设置中的软件包指南。

要启用它,您需要安装ImageResize插件,该插件包含所有所需功能(ImageResizeEditingImageResizeHandlesImageResizeButtons)。

import { ClassicEditor, Image, ImageResize } from 'ckeditor5';

ClassicEditor
    .create( document.querySelector( '#editor' ), {
        plugins: [ Image, ImageResize, /* ... */ ],
        // More of editor's configuration.
        // ...
    } )
    .then( /* ... */ )
    .catch( /* ... */ );

# 通用 API

ImageResize插件注册以下内容

我们建议在开发和调试时使用官方的CKEditor 5 检查器。它将为您提供有关编辑器状态的大量有用信息,例如内部数据结构、选择、命令等等。

# 贡献

此功能的源代码在 GitHub 上可用,地址为 https://github.com/ckeditor/ckeditor5/tree/master/packages/ckeditor5-image