Image 图片
引入
通过以下方式来全局注册组件,更多注册方式请参考组件注册。
基础用法
基础用法与原生 标签一致,可以设置 src
、width
、height
、alt
等原生属性。
<van-image
width="100"
height="100"
/>
填充模式
通过 fit
属性可以设置图片填充模式,等同于原生的 属性,可选值见下方表格。
<van-image
width="10rem"
height="10rem"
fit="contain"
src="https://cdn.jsdelivr.net/npm/@vant/assets/cat.jpeg"
/>
图片位置
通过 position
属性可以设置图片位置,结合 fit
属性使用,等同于原生的 属性。
<van-image
width="10rem"
height="10rem"
fit="cover"
position="left"
src="https://cdn.jsdelivr.net/npm/@vant/assets/cat.jpeg"
/>
图片懒加载
设置 lazy-load
属性来开启图片懒加载,需要搭配 组件使用。
width="100"
height="100"
lazy-load
src="https://cdn.jsdelivr.net/npm/@vant/assets/cat.jpeg"
/>
import { createApp } from 'vue';
import { Lazyload } from 'vant';
const app = createApp();
加载中提示
Image
组件提供了默认的加载中提示,支持通过 loading
插槽自定义内容。
<van-image src="https://cdn.jsdelivr.net/npm/@vant/assets/cat.jpeg">
<template v-slot:loading>
<van-loading type="spinner" size="20" />
</template>
</van-image>
加载失败提示
Image
组件提供了默认的加载失败提示,支持通过 error
插槽自定义内容。
Props
Events
Slots
类型定义
组件导出以下类型定义:
import type { ImageFit, ImagePosition, ImageProps } from 'vant';
样式变量
在 .vue 文件中通过相对路径引用本地图片时,需要在图片的链接外包上一层 require()
,将图片 URL 转换为 webpack 模块请求,并结合 或者 url-loader 进行处理。
<!-- 错误写法 -->
<van-image src="./image.png" />
<!-- 正确写法 -->
<van-image :src="require('./image.png')" />
使用 image 标签无法渲染?
使用 Image 组件时,可能会遇到将 <image> 作为标签名时无法渲染的问题,比如下面的写法:
<template>
<image src="xxx" />
</template>
<script>
import { Image } from 'vant';
export default {
components: {
Image,
},
};
这是因为 <image> 标签是原生的 SVG 标签,Vue 不允许将原生标签名注册为组件名,使用 <van-image> 即可规避这个问题。