Skip to content

Image 图片

增强版的 img 标签,提供多种图片填充模式,支持图片懒加载、加载中提示、加载失败提示。

基础用法

图片位置

图片懒加载

加载中提示

加载失败提示

API

Props

参数说明类型默认值
src图片链接string-
fit图片填充模式,等同于原生的 object-fit 属性stringfill
position图片位置,等同于原生的 object-position 属性,可选值为 top right bottom leftstringstringcenter
alt替代文本string-
width宽度,默认单位为 pxnumber | string-
height高度,默认单位为 pxnumber | string-
radius圆角大小,默认单位为 pxnumber | string0
round是否显示为圆形booleanfalse
block是否将根节点设置为块级元素,默认情况下为 inline-block 元素booleanfalse
lazy-load是否开启图片懒加载,须配合 Lazyload 组件使用booleanfalse
show-error是否展示图片加载失败提示booleantrue
show-loading是否展示图片加载中提示booleantrue
error-icon失败时提示的图标名称或图片链接,等同于 Icon 组件的 name 属性stringphoto-fail
loading-icon加载时提示的图标名称或图片链接,等同于 Icon 组件的 name 属性stringphoto
icon-size加载图标和失败图标的大小number | string32px
icon-prefix图标类名前缀,等同于 Icon 组件的 class-prefix 属性stringr-icon
crossorigin等同于原生的 crossorigin 属性string-
referrerpolicy等同于原生的 referrerpolicy 属性string-

图片填充模式

名称含义
contain保持宽高缩放图片,使图片的长边能完全显示出来
cover保持宽高缩放图片,使图片的短边能完全显示出来,裁剪长边
fill拉伸图片,使图片填满元素
none保持图片原有尺寸
scale-downnonecontain 中较小的一个

Events

事件名说明回调参数
click点击图片时触发event: MouseEvent
load图片加载完毕时触发event: Event
error图片加载失败时触发-

Slots

名称说明
default自定义图片下方的内容
loading自定义加载中的提示内容
error自定义加载失败时的提示内容

类型定义

组件导出以下类型定义:

ts
import type { ImageFit, ImagePosition, ImageProps } from 'ryxon'

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件

名称默认值描述
--r-image-placeholder-text-colorvar(--r-text-color-2)-
--r-image-placeholder-font-sizevar(--r-font-size-md)-
--r-image-placeholder-backgroundvar(--r-background)-
--r-image-loading-icon-size32px-
--r-image-loading-icon-colorvar(--r-gray-4)-
--r-image-error-icon-size32px-
--r-image-error-icon-colorvar(--r-gray-4)-

常见问题

如何引用本地图片?

.vue 文件中通过相对路径引用本地图片时,需要在图片的链接外包上一层 require(),将图片 URL 转换为 webpack 模块请求,并结合 file-loader 或者 url-loader 进行处理。

html
<!-- 错误写法 -->
<r-image src="./image.png" />

<!-- 正确写法 -->
<r-image :src="require('./image.png')" />

对此更详细的解释可以参考 vue-loader 的处理资源路径章节。

使用 image 标签无法渲染?

使用 Image 组件时,可能会遇到将 <image> 作为标签名时无法渲染的问题,比如下面的写法:

html
<template>
  <image src="xxx" />
</template>

<script>
import { Image } from 'ryxon';

export default {
  components: {
    Image,
  },
};
<script>

这是因为 <image> 标签是原生的 SVG 标签,Vue 不允许将原生标签名注册为组件名,使用 <r-image> 即可规避这个问题。

Released under the MIT License.