支付寶小程序媒體組件 圖片·Image

2020-09-18 11:11 更新

圖片。支持 JPG、PNG、SVG、WEBP(iOS 不支持動(dòng)圖)、GIF 等格式。

使用說(shuō)明

使用 webview 嵌套 H5 時(shí),若遇到圖片資源不顯示問(wèn)題,可參考 配置 H5 白名單流程 獲取 H5 頁(yè)面中所有的域名地址(含圖片靜態(tài)資源的地址),全部加入域名白名單中。

掃碼體驗(yàn)

示例代碼

  1. <!-- API-DEMO page/component/image/image.axml -->
  2. <view class="page">
  3. <view class="page-description">圖片</view>
  4. <view class="page-section" a:for="{{array}}" a:for-item="item">
  5. <view class="page-section-title">{{item.text}}</view>
  6. <view class="page-section-demo" onTap="onTap">
  7. <image class="image"
  8. data-name="{{item.mode}}"
  9. onTap="onTap"
  10. mode="{{item.mode}}" src="{{src}}" onError="imageError" onLoad="imageLoad" />
  11. </view>
  12. </view>
  13. </view>
  14. // API-DEMO page/component/image/image.js
  15. Page({
  16. data: {
  17. array: [{
  18. mode: 'scaleToFill',
  19. text: 'scaleToFill:不保持縱橫比縮放圖片,使圖片完全適應(yīng)',
  20. }, {
  21. mode: 'aspectFit',
  22. text: 'aspectFit:保持縱橫比縮放圖片,使圖片的長(zhǎng)邊能完全顯示出來(lái)',
  23. }, {
  24. mode: 'aspectFill',
  25. text: 'aspectFill:保持縱橫比縮放圖片,只保證圖片的短邊能完全顯示出來(lái)',
  26. }, {
  27. mode: 'widthFix',
  28. text: 'widthFix:寬度不變,高度自動(dòng)變化,保持原圖寬高比不變',
  29. }, {
  30. mode: 'top',
  31. text: 'top:不縮放圖片,只顯示圖片的頂部區(qū)域',
  32. }, {
  33. mode: 'bottom',
  34. text: 'bottom:不縮放圖片,只顯示圖片的底部區(qū)域',
  35. }, {
  36. mode: 'center',
  37. text: 'center:不縮放圖片,只顯示圖片的中間區(qū)域',
  38. }, {
  39. mode: 'left',
  40. text: 'left:不縮放圖片,只顯示圖片的左邊區(qū)域',
  41. }, {
  42. mode: 'right',
  43. text: 'right:不縮放圖片,只顯示圖片的右邊邊區(qū)域',
  44. }, {
  45. mode: 'top left',
  46. text: 'top left:不縮放圖片,只顯示圖片的左上邊區(qū)域',
  47. }, {
  48. mode: 'top right',
  49. text: 'top right:不縮放圖片,只顯示圖片的右上邊區(qū)域',
  50. }, {
  51. mode: 'bottom left',
  52. text: 'bottom left:不縮放圖片,只顯示圖片的左下邊區(qū)域',
  53. }, {
  54. mode: 'bottom right',
  55. text: 'bottom right:不縮放圖片,只顯示圖片的右下邊區(qū)域',
  56. }],
  57. src: '/image/ant.png',
  58. },
  59. imageError(e) {
  60. console.log('image 發(fā)生 error 事件,攜帶值為', e.detail.errMsg);
  61. },
  62. onTap(e) {
  63. console.log('image 發(fā)生 tap 事件', e);
  64. },
  65. imageLoad(e) {
  66. console.log('image 加載成功', e);
  67. },
  68. });
  69. /* API-DEMO page/component/image/image.acss */
  70. .page-section-demo {
  71. display: flex;
  72. justify-content: space-around;
  73. }
  74. .image {
  75. background-color: red;
  76. width: 100px;
  77. height: 100px;
  78. }

屬性

屬性 類(lèi)型 默認(rèn)值 描述 最低版本
src String - 圖片地址。 -
mode String scaleToFill 圖片模式。 -
class String 外部樣式 - -
style String 內(nèi)聯(lián)樣式 - -
lazy-load Boolean false 支持圖片懶加載,不支持通過(guò) css 來(lái)控制 image 展示隱藏的場(chǎng)景。 1.9.0
default-source String - 默認(rèn)圖片地址,若設(shè)置默認(rèn)圖片地址,會(huì)先顯示默認(rèn)圖片,等 src 對(duì)應(yīng)的圖片加載成功后,再渲染對(duì)應(yīng)的圖片。 1.19.0
onLoad EventHandle - 圖片載入完畢時(shí)觸發(fā),事件對(duì)象 event.detail = {height: '圖片高度px', width: '圖片寬度px'}。 -
onError EventHandle - 當(dāng)圖片加載錯(cuò)誤時(shí)觸發(fā),事件對(duì)象 event.detail = {errMsg: 'something wrong'。 -
onTap EventHandle - 點(diǎn)擊圖片時(shí)觸發(fā)。 -
catchTap EventHandle - 點(diǎn)擊圖片時(shí)觸發(fā),阻止事件冒泡。 -

注意:image 組件默認(rèn)寬度 300px、高度 225px

mode

mode 有 13 種模式,其中 4 種是縮放模式,9 種是裁剪模式。

縮放模式

屬性 描述
scaleToFill 不保持縱橫比縮放,使圖片的寬高完全拉伸至填滿 image 元素。
aspectFit 保持縱橫比縮放,使圖片的長(zhǎng)邊能完全顯示出來(lái)。也就是說(shuō),可以完整地將圖片顯示出來(lái)。
aspectFill 保持縱橫比縮放,只保證圖片的短邊能完全顯示出來(lái)。也就是說(shuō),圖片通常只在水平或垂直方向是完整的,另一個(gè)方向?qū)?huì)發(fā)生截取。
widthFix 寬度不變,高度自動(dòng)變化,保持原圖寬高比不變。

裁剪模式

屬性 描述
top 不縮放圖片,只顯示頂部區(qū)域。
bottom 不縮放圖片,只顯示底部區(qū)域。
center 不縮放圖片,只顯示中間區(qū)域。
left 不縮放圖片,只顯示左邊區(qū)域。
right 不縮放圖片,只顯示右邊區(qū)域。
top left 不縮放圖片,只顯示左上邊區(qū)域。
top right 不縮放圖片,只顯示右上邊區(qū)域。
bottom left 不縮放圖片,只顯示左下邊區(qū)域。
bottom right 不縮放圖片,只顯示右下邊區(qū)域。

說(shuō)明:圖片高度不能設(shè)置為 auto,如果需要圖片高度為 auto,直接設(shè)置 mode 為 widthFix。

常見(jiàn)問(wèn)題

image 標(biāo)簽支持讀取流文件嗎?

小程序中顯示二進(jìn)制數(shù)據(jù)流的圖片,需要先將二進(jìn)制數(shù)據(jù)轉(zhuǎn)成 base64 字符串,然后把 base64 字符串放在 image 中的 src 中實(shí)現(xiàn)顯示。

真機(jī)調(diào)用 image 組件,顯示的圖片被壓縮?

建議把 mode 值設(shè)為 widthFix。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)