1e41f4b71Sopenharmony_ci# image 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci> **说明:** 4e41f4b71Sopenharmony_ci> 从API version 4开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci图片组件,用来渲染展示图片。 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ci 9e41f4b71Sopenharmony_ci## 子组件 10e41f4b71Sopenharmony_ci 11e41f4b71Sopenharmony_ci不支持。 12e41f4b71Sopenharmony_ci 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci## 属性 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci除支持[通用属性](js-components-common-attributes.md)外,还支持如下属性: 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci| 名称 | 类型 | 默认值 | 必填 | 描述 | 19e41f4b71Sopenharmony_ci| ---- | ------ | ---- | ---- | ---------------------------------------- | 20e41f4b71Sopenharmony_ci| src | string | - | 否 | 图片的路径,支持本地路径,图片格式包括png、jpg、bmp、svg和gif。<br/>- 支持Base64字符串<sup>6+</sup>。格式为data:image/[png \| jpeg \| bmp \| webp];base64, [base64 data], 其中[base64 data]为Base64字符串数据。<br/>- 支持dataability://的路径前缀,用于访问通过data ability提供的图片路径<sup>6+</sup>。 | 21e41f4b71Sopenharmony_ci| alt | string | - | 否 | 占位图,当指定图片在加载中时显示。 | 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_ci## 样式 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci除支持[通用样式](js-components-common-styles.md)外,还支持如下属性: 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci| 名称 | 类型 | 默认值 | 必填 | 描述 | 29e41f4b71Sopenharmony_ci| ---------------------------- | ------- | ------------ | ---- | ---------------------------------------- | 30e41f4b71Sopenharmony_ci| object-fit | string | cover | 否 | 设置图片的缩放类型,不支持svg格式。可选值类型说明请见object-fit类型说明。 | 31e41f4b71Sopenharmony_ci| match-text-direction | boolean | false | 否 | 图片是否跟随文字方向,不支持svg格式。 | 32e41f4b71Sopenharmony_ci| fit-original-size | boolean | false | 否 | image组件在未设置宽高的情况下是否适应图源尺寸,该属性为true时object-fit属性不生效,svg类型图源不支持该属性。 | 33e41f4b71Sopenharmony_ci| object-position<sup>7+</sup> | string | 0px 0px | 否 | 设置图片在组件内展示的位置。<br/>设置类型有两种:<br/>1. 像素,单位px,示例 15px 15px 代表X轴或者Y轴移动的位置<br/>2. 字符,可选值:<br/>- left 图片显示在组件左侧;<br/>- top 图片显示在组件顶部位置;<br/>- right 图片显示在组件右侧位置;<br/>- bottom 图片显示在组件底部位置。 | 34e41f4b71Sopenharmony_ci 35e41f4b71Sopenharmony_ci**表1** object-fit 类型说明 36e41f4b71Sopenharmony_ci 37e41f4b71Sopenharmony_ci| 类型 | 描述 | 38e41f4b71Sopenharmony_ci| ---------- | ------------------------------------ | 39e41f4b71Sopenharmony_ci| cover | 保持宽高比进行缩小或者放大,使得图片两边都大于或等于显示边界,居中显示。 | 40e41f4b71Sopenharmony_ci| contain | 保持宽高比进行缩小或者放大,使得图片完全显示在显示边界内,居中显示。 | 41e41f4b71Sopenharmony_ci| fill | 不保持宽高比进行放大缩小,使得图片填充满显示边界。 | 42e41f4b71Sopenharmony_ci| none | 保持原有尺寸进行居中显示。 | 43e41f4b71Sopenharmony_ci| scale-down | 保持宽高比居中显示,图片缩小或者保持不变。 | 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_ci> **说明:** 46e41f4b71Sopenharmony_ci> 使用svg图片资源时: 47e41f4b71Sopenharmony_ci> 48e41f4b71Sopenharmony_ci> - 建议设置image组件的长宽,否则在父组件的长或宽为无穷大的场景下,svg资源将不会绘制; 49e41f4b71Sopenharmony_ci> 50e41f4b71Sopenharmony_ci> - 如果svg描述中未指定相应的长宽,则svg将会填满image组件区域; 51e41f4b71Sopenharmony_ci> 52e41f4b71Sopenharmony_ci> - 如果svg描述中指定了相应的长宽,和image组件本身的长宽效果如下: 53e41f4b71Sopenharmony_ci> 54e41f4b71Sopenharmony_ci> 1. 如果image组件本身的长宽小于svg中的长宽,svg会被裁切,仅显示左上角部分; 55e41f4b71Sopenharmony_ci> 56e41f4b71Sopenharmony_ci> 2. 如果image组件本身的长宽大于svg中的长宽,svg会被放置在image组件的左上角,image组件其他部分显示空白。 57e41f4b71Sopenharmony_ci> 58e41f4b71Sopenharmony_ci> - 图片设置svg图源时,支持的标签范围有限,目前支持的svg标签包括svg、rect、circle、ellipse、path、line、polyline、polygon、animate、animateMotion、animateTransform。 59e41f4b71Sopenharmony_ci 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci## 事件 62e41f4b71Sopenharmony_ci 63e41f4b71Sopenharmony_ci除支持[通用事件](js-components-common-events.md)外,还支持如下事件: 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci| 名称 | 参数 | 描述 | 66e41f4b71Sopenharmony_ci| -------- | ---------------------------------------- | ------------------------- | 67e41f4b71Sopenharmony_ci| complete | {<br> width:width,<br> height:height<br> } | 图片成功加载时触发该回调,返回成功加载的图源尺寸。 | 68e41f4b71Sopenharmony_ci| error | {<br> width:width,<br> height:height<br> } | 图片加载出现异常时触发该回调,异常时长宽为零。 | 69e41f4b71Sopenharmony_ci 70e41f4b71Sopenharmony_ci## 方法 71e41f4b71Sopenharmony_ci 72e41f4b71Sopenharmony_ci支持[通用方法](js-components-common-methods.md)。 73e41f4b71Sopenharmony_ci 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci## 示例 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci```html 78e41f4b71Sopenharmony_ci<!-- xxx.hml --> 79e41f4b71Sopenharmony_ci<div class="container"> 80e41f4b71Sopenharmony_ci <image src="common/images/example.png" style="width: 300px; height: 300px; object-fit:{{fit}}; object-position: center center; border: 1px solid red;"> 81e41f4b71Sopenharmony_ci </image> 82e41f4b71Sopenharmony_ci <select class="selects" onchange="change_fit"><option for="{{fits}}" value="{{$item}}">{{$item}}</option></select> 83e41f4b71Sopenharmony_ci</div> 84e41f4b71Sopenharmony_ci``` 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci```css 87e41f4b71Sopenharmony_ci/* xxx.css */ 88e41f4b71Sopenharmony_ci.container { 89e41f4b71Sopenharmony_ci justify-content: center; 90e41f4b71Sopenharmony_ci align-items: center; 91e41f4b71Sopenharmony_ci flex-direction: column; 92e41f4b71Sopenharmony_ci} 93e41f4b71Sopenharmony_ci.selects{ 94e41f4b71Sopenharmony_ci margin-top: 20px; 95e41f4b71Sopenharmony_ci width:300px; 96e41f4b71Sopenharmony_ci border:1px solid #808080; 97e41f4b71Sopenharmony_ci border-radius: 10px; 98e41f4b71Sopenharmony_ci} 99e41f4b71Sopenharmony_ci``` 100e41f4b71Sopenharmony_ci 101e41f4b71Sopenharmony_ci```js 102e41f4b71Sopenharmony_ci// xxx.js 103e41f4b71Sopenharmony_ciexport default { 104e41f4b71Sopenharmony_ci data: { 105e41f4b71Sopenharmony_ci fit:"cover", 106e41f4b71Sopenharmony_ci fits: ["cover", "contain", "fill", "none", "scale-down"], 107e41f4b71Sopenharmony_ci }, 108e41f4b71Sopenharmony_ci change_fit(e) { 109e41f4b71Sopenharmony_ci this.fit = e.newValue; 110e41f4b71Sopenharmony_ci }, 111e41f4b71Sopenharmony_ci} 112e41f4b71Sopenharmony_ci``` 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci 117