<template>
|
<uvImage
|
:src="src"
|
:mode="mode"
|
:width="width"
|
:height="height"
|
:shape="shape"
|
:radius="radius"
|
:lazyLoad="lazyLoad"
|
:showMenuByLongpress="showMenuByLongpress"
|
:loadingIcon="loadingIcon"
|
:errorIcon="errorIcon"
|
:showLoading="showLoading"
|
:showError="showError"
|
:fade="fade"
|
:webp="webp"
|
:duration="duration"
|
:bgColor="bgColor"
|
:customStyle="customStyle"
|
@click="$emit('click')"
|
@error="$emit('error')"
|
@load="$emit('load')"
|
>
|
<template v-slot:loading>
|
<slot name="loading"></slot>
|
</template>
|
<template v-slot:error>
|
<slot name="error"></slot>
|
</template>
|
</uvImage>
|
</template>
|
|
<script>
|
/**
|
* 此组件存在的理由是,在nvue下,u-image被uni-app官方占用了,u-image在nvue中相当于image组件
|
* 所以在nvue下,取名为u--image,内部其实还是u-iamge.vue,只不过做一层中转
|
*/
|
import uvImage from '../u-image/u-image.vue';
|
import props from '../u-image/props.js';
|
/**
|
* Image 图片
|
* @description 此组件为uni-app的image组件的加强版,在继承了原有功能外,还支持淡入动画、加载中、加载失败提示、圆角值和形状等。
|
* @tutorial https://uviewui.com/components/image.html
|
* @property {String} src 图片地址
|
* @property {String} mode 裁剪模式,见官网说明 (默认 'aspectFill' )
|
* @property {String | Number} width 宽度,单位任意,如果为数值,则为px单位 (默认 '300' )
|
* @property {String | Number} height 高度,单位任意,如果为数值,则为px单位 (默认 '225' )
|
* @property {String} shape 图片形状,circle-圆形,square-方形 (默认 'square' )
|
* @property {String | Number} radius 圆角值,单位任意,如果为数值,则为px单位 (默认 0 )
|
* @property {Boolean} lazyLoad 是否懒加载,仅微信小程序、App、百度小程序、字节跳动小程序有效 (默认 true )
|
* @property {Boolean} showMenuByLongpress 是否开启长按图片显示识别小程序码菜单,仅微信小程序有效 (默认 true )
|
* @property {String} loadingIcon 加载中的图标,或者小图片 (默认 'photo' )
|
* @property {String} errorIcon 加载失败的图标,或者小图片 (默认 'error-circle' )
|
* @property {Boolean} showLoading 是否显示加载中的图标或者自定义的slot (默认 true )
|
* @property {Boolean} showError 是否显示加载错误的图标或者自定义的slot (默认 true )
|
* @property {Boolean} fade 是否需要淡入效果 (默认 true )
|
* @property {Boolean} webp 只支持网络资源,只对微信小程序有效 (默认 false )
|
* @property {String | Number} duration 搭配fade参数的过渡时间,单位ms (默认 500 )
|
* @property {String} bgColor 背景颜色,用于深色页面加载图片时,为了和背景色融合 (默认 '#f3f4f6' )
|
* @property {Object} customStyle 定义需要用到的外部样式
|
* @event {Function} click 点击图片时触发
|
* @event {Function} error 图片加载失败时触发
|
* @event {Function} load 图片加载成功时触发
|
* @example <u--image width="100%" height="300px" :src="src"></u--image>
|
*/
|
export default {
|
name: 'u--image',
|
mixins: [uni.$u.mpMixin, props, uni.$u.mixin],
|
components: {
|
uvImage
|
},
|
}
|
</script>
|