本文分享的button組件為uni-app的內(nèi)置組件button,非擴展組件,兩者在用法上其實大同小異,只是擴展組件的屬性更多…沒有本質(zhì)上的區(qū)別~
一. 簡介
Button,按鈕,圖形化界面基礎(chǔ)組件之一,常用于響應(yīng)用戶的點擊事件、觸發(fā)業(yè)務(wù)邏輯操作時使用;
二. 基礎(chǔ)用法
按鈕基礎(chǔ)用法如下:
<button>這是一個按鈕</button>
在基礎(chǔ)用法下,uni-app將 啟用一組內(nèi)置在button組件內(nèi)部的默認(rèn)參數(shù)(包括主題,尺寸,狀態(tài)等等),其表現(xiàn)形態(tài) 效果圖 如下:
三. 按鈕主題色
3.1 說明
uni-app官方一共內(nèi)置了 三組主題色 供用戶直接使用,分別是:primary
,default
,warn
,使用方式則是通過 屬性的方式 傳入,屬性關(guān)鍵詞為 type
參數(shù) | 說明 | 類型 | 可選值 | 默認(rèn)值 |
---|---|---|---|---|
type | 按鈕的主題色 | string | primary| default | warn | default |
不同的type值將對應(yīng)不同的主題色,示例代碼如下:
<!-- primary -->
<button type="primary">primary</button>
<!-- default -->
<button type="default">default</button>
<!-- warn -->
<button type="warn">warn</button>
其表現(xiàn)形態(tài) 效果圖 如下:
我們在基礎(chǔ)用法中有一個 不帶任何參數(shù)的示例,雖然使用時不帶任何參數(shù),但在組件內(nèi)部主題色其實是有 默認(rèn)值 的,默認(rèn)值為 default
,也就是說,當(dāng)我們不使用type屬性的時候,在其內(nèi)部完全等同于使用了default
<!-- default -->
<button type="default">default</button>
<!-- 完全等同于type="default" -->
<button>default</button>
3.2 平臺差異
另外,uni-app是一個跨平臺的解決方案,因此 某些屬性在編譯后存在一定的平臺差異,在主題色這一塊差異的體現(xiàn)主要在 primary 這個屬性,type="primary"
的button在最終編譯后由于平臺的不同會根據(jù)平臺定義primary展示對應(yīng)的顏色,具體差異如下:
微信小程序、360小程序 | App、H5、百度小程序、支付寶小程序、飛書小程序、快應(yīng)用 | 字節(jié)跳動小程序 | QQ小程序 |
---|---|---|---|
綠色 | 藍(lán)色 | 紅色 | 淺藍(lán)色 |
也就是說,我們在uni-app中將button的設(shè)置成primary,在 微信小程序 中按鈕會顯示成 綠色,在 qq小程序中 會顯示成 淺藍(lán)色,在 字節(jié)跳動小程序 中會顯示成 紅色;
四. size屬性
size屬性,用于控制button的尺寸大小,和主題色屬性一樣,它作為一個屬性直接作用于button組件,并且值為string類型,uni-app官方一共內(nèi)置了兩種尺寸:default
和 mini
,具體如下:
參數(shù) | 說明 | 類型 | 可選值 | 默認(rèn)值 |
---|---|---|---|---|
size | 按鈕的大小尺寸 | string | default| mini | default |
我們以 type=“default”,且 不同尺寸為例,代碼如下
<!-- default,默認(rèn)大小 -->
<button type="default">默認(rèn)default尺寸</button>
<!-- default,mini尺寸大小 -->
<button type="default" size="mini">默認(rèn)mini尺寸</button>
其表現(xiàn)形態(tài)的 效果圖 如下:
和主題色一樣,如果不傳入size屬性,那么等同于值為 default
<!-- default,默認(rèn)大小 -->
<button type="default">默認(rèn)default尺寸</button>
<!-- default,和不傳size完全等同 -->
<button type="default" size="default">默認(rèn)default尺寸</button>
五. plain屬性
plain屬性,用于控制按鈕是否處于鏤空,或者說使用了plain屬性的按鈕將處于 幽靈模式,即 內(nèi)容反色,背景變?yōu)橥该?/strong>,該種類常常作用在一些有底色的DOM上,說明如下:
參數(shù) | 說明 | 類型 | 可選值 | 默認(rèn)值 |
---|---|---|---|---|
plain | 控制按鈕是否鏤空 | boolean | true| false | false |
演示代碼如下:
<!-- default,plain -->
<button type="primary" plain>primary+plain</button>
<!-- default,plain -->
<button type="default" plain>default+plain</button>
<!-- warn,plain -->
<button type="warn" plain>warn+plain</button>
其表現(xiàn)形態(tài)展示的 效果圖 如下:
六. disabled禁用屬性
disabled屬性,用于控制按鈕是否可點擊,當(dāng)按鈕處于disabled狀態(tài)下時,按鈕的形態(tài)將 置灰 且用戶 不可再進(jìn)行點擊操作
參數(shù) | 說明 | 類型 | 可選值 | 默認(rèn)值 |
---|---|---|---|---|
disabled | 控制按鈕是否可點擊 | boolean | true| false | false |
代碼示例如下:
<!-- default,disabled -->
<button type="primary" disabled>primary+disabled</button>
<!-- default,disabled -->
<button type="default" disabled>default+disabled</button>
<!-- warn,disabled -->
<button type="warn" disabled>warn+disabled</button>
其表現(xiàn)形態(tài)展示的 效果圖 如下:
七. loading屬性
loading屬性,該屬性用于控制按鈕是否處于loading狀態(tài),嚴(yán)格的來說,loading狀態(tài)算是一種組合狀態(tài),它主要由 disabled 加上 loading動畫 組合而成,和disabled屬性不同的是,uni-app中l(wèi)oading屬性的disabled并不會置灰按鈕,具體說明如下
參數(shù) | 說明 | 類型 | 可選值 | 默認(rèn)值 |
---|---|---|---|---|
loading | 名稱前是否帶 loading 圖標(biāo) | boolean | true| false | false |
loading屬性常用于等待階段,比如:用戶注冊時,當(dāng)用戶填寫完信息并點擊注冊按鈕后,此時信息已被發(fā)送至后臺,為了保證用戶不進(jìn)行重復(fù)點擊注冊按鈕,且希望通過交互效果告知用戶注冊已經(jīng)正在處理中了,那么就可以使用loading屬性;
<!-- default,loading -->
<button type="primary" :loading="true">primary+loading</button>
<!-- default,disabled -->
<button type="default" :loading="true">default+loading</button>
<!-- warn,disabled -->
<button type="warn" :loading="true">warn+loading</button>
其表現(xiàn)形態(tài)展示的 效果圖 如下:
八. 事件機制
在uni-app中的事件機制完全遵循于Vue的語法,那么理所當(dāng)然的button的事件也遵循Vue的語法,比如,我們要為按鈕添加一個點擊事件,點擊后提示一個alert彈窗,那么代碼如下
<template>
<view class="buton-conatiner">
<!-- 基礎(chǔ)用法 -->
<view class="button-group">
<h4>默認(rèn)按鈕</h4>
<!-- 默認(rèn)按鈕組件 -->
<button @click="handleClick">這是一個按鈕</button>
</view>
</view>
</template>
<script>
export default {
methods: {
handleClick() {
alert('觸發(fā)點擊');
}
}
};
</script>
我們看到 點擊事件的綁定是遵循Vue的語法的,通過指令 @
或者 v-on
的語法,如下
九. open-type開放能力
open-type,開放能力,uni-app作為跨端的解決方案,必然有對應(yīng)各個小程序的open-type,可能會有小伙伴問,什么是open-type,簡單的說,就是封裝好的一些公共能力,這些能力可以快速的協(xié)助我們完成業(yè)務(wù)需求,比如獲取用戶的手機號碼,分享轉(zhuǎn)發(fā)等等;
uni-app的open-type值綜合了眾多小程序,用法與原版大致相似,最主要的區(qū)別還是語法,畢竟語法上uni-app遵循的是Vue的語法,舉個例子吧,我們以微信小程序為例,獲取用戶的手機號碼,我們看一下在 uni-app中書寫后編譯運行結(jié)果 以及 在原版微信小程序開發(fā)者工具中的運行結(jié)果;
9.1 uni-app
uni-app中我們聲明了一個 open-type
,值為 getPhoneNumber
意思為獲取手機號碼,之后綁定了一個 自定義事件getPhoneNumber 取得點擊時的值并打印,具體代碼如下,:
<!-- 默認(rèn)按鈕組件 -->
<button
open-type="getPhoneNumber"
@getphonenumber="decryptPhoneNumber">
獲取用戶手機
</button>
<script>
export default {
methods: {
decryptPhoneNumber(e) {
console.log(e);
}
}
};
</script>
執(zhí)行編譯,并運行在微信小程序開發(fā)者工具中,運行路徑如下:運行 -> 運行到小程序模擬器 -> 微信開發(fā)者工具:
點擊按鈕后,成功在控制臺進(jìn)行了打印,打印結(jié)果如下:
從結(jié)果看,確實已經(jīng)編譯成微信小程序?qū)?yīng)的open-type了;
9.2 微信小程序原版
接著,我們看一下在微信小程序中的實現(xiàn)代碼,如下:
<!-- 默認(rèn)按鈕組件 -->
<button
open-type="getPhoneNumber"
bind:getphonenumber="getPhoneNumber">
這是一個按鈕
</button>
Page({
data: {},
getPhoneNumber(e){
console.log(e)
},
})
代碼展示效果如下:
從截圖中的結(jié)果來看,uni-app與微信小程序?qū)崿F(xiàn)的getPhoneNumber效果完全一致;
9.3 代碼對比
為了更好的了解兩者代碼上的書寫差異,我們在對比一下
<!-- uni-app -->
<button
open-type="getPhoneNumber"
@getphonenumber="decryptPhoneNumber">
獲取用戶手機
</button>
<!-- 微信小程序 -->
<button
open-type="getPhoneNumber"
bind:getphonenumber="getPhoneNumber">
這是一個按鈕
</button>
代碼確實非常接近,最大的區(qū)別就是 自定義事件 了,uni-app中使用的是 Vue的語法綁定的事件,而在微信小程序中則是 原生的bind事件捕捉機制;
9.4 open-type有效值
除了 getPhoneNumber 之外,uni-app還有非常多的 open-type有效值,這些值存在平臺上的一些差異,畢竟不同的平臺API并不是完全一致的,具體如下,就不一一介紹了,有興趣的小伙伴可以挑感興趣的試試:
值 | 說明 | 平臺差異說明 |
---|---|---|
feedback | 打開“意見反饋”頁面,用戶可提交反饋內(nèi)容并上傳日志 | App、微信小程序、QQ小程序 |
share | 觸發(fā)用戶轉(zhuǎn)發(fā) | 微信小程序、百度小程序、支付寶小程序、字節(jié)跳動小程序、飛書小程序、QQ小程序、快手小程序、京東小程序、360小程序 |
getUserInfo | 獲取用戶信息,可以從@getuserinfo回調(diào)中獲取到用戶信息 | 微信小程序、百度小程序、QQ小程序、快手小程序、京東小程序、360小程序 |
contact | 打開客服會話,如果用戶在會話中點擊消息卡片后返回應(yīng)用,可以從 @contact 回調(diào)中獲得具體信息 | 微信小程序、百度小程序、快手小程序 |
getPhoneNumber | 獲取用戶手機號,可以從@getphonenumber回調(diào)中獲取到用戶信息 | 微信小程序、百度小程序、字節(jié)跳動小程序、支付寶小程序、快手小程序、京東小程序。 |
launchApp | 小程序中打開APP,可以通過app-parameter屬性設(shè)定向APP傳的參數(shù) | 微信小程序、QQ小程序、快手小程序、京東小程序 |
openSetting | 打開授權(quán)設(shè)置頁 | 微信小程序、QQ小程序、百度小程序、快手小程序、京東小程序、360小程序 |
chooseAvatar | 獲取用戶頭像,可以從@chooseavatar回調(diào)中獲取到頭像信息 | 微信小程序2.21.2版本+ |
getAuthorize | 支持小程序授權(quán) | 支付寶小程序 |
lifestyle | 關(guān)注生活號 | 支付寶小程序 |
contactShare | 分享到通訊錄好友 | 支付寶小程序基礎(chǔ)庫1.11.0版本+ |
openGroupProfile | 呼起QQ群資料卡頁面,可以通過group-id屬性設(shè)定需要打開的群資料卡的群號,同時manifest.json中必須配置groupIdList | QQ小程序基礎(chǔ)庫1.4.7版本+ |
openGuildProfile | 呼起頻道頁面,可以通過guild-id屬性設(shè)定需要打開的頻道ID | QQ小程序基礎(chǔ)庫1.46.8版本+ |
openPublicProfile | 打開公眾號資料卡,可以通過public-id屬性設(shè)定需要打開的公眾號資料卡的號碼,同時manifest.json中必須配置publicIdList | QQ小程序基礎(chǔ)庫1.12.0版本+ |
shareMessageToFriend | 在自定義開放數(shù)據(jù)域組件中,向指定好友發(fā)起分享據(jù) | QQ小程序基礎(chǔ)庫1.17.0版本+ |
addFriend | 添加好友, 對方需要通過該小程序進(jìn)行授權(quán),允許被加好友后才能調(diào)用成功用戶授權(quán) | QQ小程序 |
addColorSign | 添加彩簽,點擊后添加狀態(tài)有用戶提示,無回調(diào) | QQ小程序基礎(chǔ)庫1.10.0版本+ |
addGroupApp | 添加群應(yīng)用(只有管理員或群主有權(quán)操作),添加后給button綁定@addgroupapp事件接收回調(diào)數(shù)據(jù) | QQ小程序基礎(chǔ)庫1.16.0版本+ |
addToFavorites | 收藏當(dāng)前頁面,點擊按鈕后會觸發(fā)Page.onAddToFavorites方法 | QQ小程序基礎(chǔ)庫1.19.0版本+ |
chooseAddress | 選擇用戶收貨地址,可以從@chooseaddress回調(diào)中獲取到用戶選擇的地址信息 | 百度小程序3.160.3版本+ |
chooseInvoiceTitle | 選擇用戶發(fā)票抬頭,可以從@chooseinvoicetitle回調(diào)中獲取到用戶選擇發(fā)票抬頭信息 | 百度小程序3.160.3版本+ |
login | 登錄,可以從@login回調(diào)中確認(rèn)是否登錄成功 | 百度小程序3.230.1版本+ |
subscribe | 訂閱類模板消息,需要用戶授權(quán)才可發(fā)送 | 百度小程序 |
favorite | 觸發(fā)用戶收藏 | 快手小程序 |
watchLater | 觸發(fā)用戶稍后再看 | 快手小程序 |
openProfile | 觸發(fā)打開用戶主頁 | 快手小程序 |
十. 小結(jié)
本文主要分享了uni-app中內(nèi)置組件button的一些用法,包括 屬性的使用,事件機制 以及 一些開放能力,我們知道button是圖形化界面中的基石之一,它承擔(dān)了用戶與系統(tǒng)之間絕大多數(shù)的交互,隨著時代的發(fā)展,用戶對于界面的要求越來越高,不管是界面的美觀還是交互邏輯的合理性;
在保證界面質(zhì)量的要求下,如何提高開發(fā)效率逐漸成為了開發(fā)的一大難題,時代的答案則是 組件的高度封裝來解決,將常用的功能,屬性統(tǒng)統(tǒng)進(jìn)行封裝,就如同uni-app中的button組件,它內(nèi)置了主題,大小,loading等屬性,在使用的時候簡單的設(shè)置即可完成期望的功能和交互;文章來源:http://www.zghlxwxcb.cn/news/detail-785993.html
(PS:都已經(jīng)看到這里了,點個贊,求個關(guān)注吧,萬分感謝~)文章來源地址http://www.zghlxwxcb.cn/news/detail-785993.html
到了這里,關(guān)于《uni-app》表單組件-Button按鈕的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!