> 圖片也是我們最常見的組建之一,其中圖片的mode屬性選項較多,最為常用的為mode="aspectFill"
## 屬性說明
| 屬性名 | 類型 | 默認值 | 說明 | 平臺差異說明 |
| --- | --- | --- | --- | --- |
| src | String | | 圖片資源地址 | |
| mode | String | 'scaleToFill' | 圖片裁剪、縮放的模式 |
|
| lazy-load | Boolean | false | 圖片懶加載。只針對page與scroll-view下的image有效 | 微信小程序、App、百度小程序、字節跳動小程序 |
| fade-show | Boolean | true | 圖片顯示動畫效果 | 僅App-nvue 2.3.4+ Android有效 |
| webp | boolean | false | 默認不解析 webP 格式,只支持網絡資源 | 微信小程序2.9.0 |
| show-menu-by-longpress | boolean | false | 開啟長按圖片顯示識別小程序碼菜單 | 微信小程序2.7.0 |
| @error | HandleEvent | | 當錯誤發生時,發布到 AppService 的事件名,事件對象event.detail = {errMsg: 'something wrong'} | |
| @load | HandleEvent | | 當圖片載入完畢時,發布到 AppService 的事件名,事件對象event.detail = {height:'圖片高度px', width:'圖片寬度px'} |
## mode 有效值
mode 有 13 種模式,其中 4 種是縮放模式,9 種是裁剪模式。
| 模式 | 值 | 說明 |
| --- | --- | --- |
| 縮放 | scaleToFill | 不保持縱橫比縮放圖片,使圖片的寬高完全拉伸至填滿 image 元素 |
| 縮放 | aspectFit | 保持縱橫比縮放圖片,使圖片的長邊能完全顯示出來。也就是說,可以完整地將圖片顯示出來。 |
| 縮放 | aspectFill | 保持縱橫比縮放圖片,只保證圖片的短邊能完全顯示出來。也就是說,圖片通常只在水平或垂直方向是完整的,另一個方向將會發生截取。 |
| 縮放 | widthFix | 寬度不變,高度自動變化,保持原圖寬高比不變 |
| 縮放 | heightFix | 高度不變,寬度自動變化,保持原圖寬高比不變**App 和 H5 平臺 2.8.9+ 支持、微信小程序需要基礎庫 2.10.3** |
| 裁剪 | top | 不縮放圖片,只顯示圖片的頂部區域 |
| 裁剪 | bottom | 不縮放圖片,只顯示圖片的底部區域 |
| 裁剪 | center | 不縮放圖片,只顯示圖片的中間區域 |
| 裁剪 | left | 不縮放圖片,只顯示圖片的左邊區域 |
| 裁剪 | right | 不縮放圖片,只顯示圖片的右邊區域 |
| 裁剪 | top left | 不縮放圖片,只顯示圖片的左上邊區域 |
| 裁剪 | top right | 不縮放圖片,只顯示圖片的右上邊區域 |
| 裁剪 | bottom left | 不縮放圖片,只顯示圖片的左下邊區域 |
| 裁剪 | bottom right | 不縮放圖片,只顯示圖片的右下邊區域 |
## 代碼示例
~~~
<template>
<view class="page">
<view class="image-list">
<view class="image-item" v-for="(item,index) in array" :key="index">
<view class="image-content">
<image style="width: 200px; height: 200px; background-color: #eeeeee;" :mode="item.mode" :src="src"
@error="imageError"></image>
</view>
<view class="image-title">{{item.text}}</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
array: [{
mode: 'scaleToFill',
text: 'scaleToFill:不保持縱橫比縮放圖片,使圖片完全適應'
},
{
mode: 'aspectFit',
text: 'aspectFit:保持縱橫比縮放圖片,使圖片的長邊能完全顯示出來'
}, {
mode: 'aspectFill',
text: 'aspectFill:保持縱橫比縮放圖片,只保證圖片的短邊能完全顯示出來'
}, {
mode: 'top',
text: 'top:不縮放圖片,只顯示圖片的頂部區域'
}, {
mode: 'bottom',
text: 'bottom:不縮放圖片,只顯示圖片的底部區域'
}, {
mode: 'center',
text: 'center:不縮放圖片,只顯示圖片的中間區域'
}, {
mode: 'left',
text: 'left:不縮放圖片,只顯示圖片的左邊區域'
}, {
mode: 'right',
text: 'right:不縮放圖片,只顯示圖片的右邊邊區域'
}, {
mode: 'top left',
text: 'top left:不縮放圖片,只顯示圖片的左上邊區域'
}, {
mode: 'top right',
text: 'top right:不縮放圖片,只顯示圖片的右上邊區域'
}, {
mode: 'bottom left',
text: 'bottom left:不縮放圖片,只顯示圖片的左下邊區域'
}, {
mode: 'bottom right',
text: 'bottom right:不縮放圖片,只顯示圖片的右下邊區域'
}],
src: 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/shuijiao.jpg'
}
},
methods: {
imageError: function(e) {
console.error('image發生error事件,攜帶值為' + e.detail.errMsg)
}
}
}
</script>
~~~
> 原圖

> scaleToFill:不保持縱橫比縮放圖片,使圖片完全適應

> aspectFit:保持縱橫比縮放圖片,使圖片的長邊能完全顯示出來

> aspectFill:保持縱橫比縮放圖片,只保證圖片的短邊能完全顯示出來

> top:不縮放圖片,只顯示圖片的頂部區域

> bottom:不縮放圖片,只顯示圖片的底部區域

> center:不縮放圖片,只顯示圖片的中間區域

> left:不縮放圖片,只顯示圖片的左邊區域

> right:不縮放圖片,只顯示圖片的右邊邊區域

> top left:不縮放圖片,只顯示圖片的左上邊區域

> top right:不縮放圖片,只顯示圖片的右上邊區域

> bottom left:不縮放圖片,只顯示圖片的左下邊區域

> bottom right:不縮放圖片,只顯示圖片的右下邊區域

- 基礎知識
- UNI核心介紹
- flex布局
- 生命周期
- 全局方法
- 組件定義
- 自定義組件
- 全局組件
- 組件之間的數據傳輸
- 條件編譯
- 自定義頭部
- 節點信息 (SelectorQuery)
- vuejs基礎語法
- 頁面跳轉以及參數傳遞
- 事件的監聽注冊以及觸發
- css3動畫
- block的妙用
- mixin (混入)
- uniapp快捷鍵
- vuex狀態管理
- 實用功能
- 獲取服務提供商
- 啟動頁 / 啟動界面
- 引導頁
- tabbar配置
- 頭部導航欄基礎設置
- 上拉下拉(刷新/加載)
- 第三方登錄
- 第三方分享
- 推送通知 之 unipush
- scroll-view雙聯動
- 配置iOS通用鏈接(Universal Links)
- 本地緩存操作
- 升級/更新方案
- 熱更新
- 圖片上傳
- 搜索頁實現
- canvas繪圖助手
- 地圖定位
- 第三方支付————todo
- 分類輪播
- 清除應用緩存
- uniapp與webview的實時通訊
- 視頻-----todo
- 聊天----todo
- 長列表swiper左右切換
- 第三方插件
- uview
- mescroll
- uCharts (圖表)
- 無名 (更新插件)
- 第三方模版
- 自定義基座
- 打包發行
- 要封裝的方法
- 緩存 cache.js
- 請求接口 request.js
- 工具類 util.js
- 小程序登錄 xcxLogin.js
- 版本更新 update.js
- 優質插件
- 更新插件----todo
- 語音
- 語音識別 (含上傳)
- 百度語音合成播報接口
- 官方常用組建
- input 輸入框
- image 圖片
- audio 音頻
- picker 選擇器
- video 視頻
- scroll-view 滾動視圖