# button开发指导 button是按钮组件,其类型包括胶囊按钮、圆形按钮、文本按钮、弧形按钮、下载按钮。具体用法请参考[button API](../reference/arkui-js/js-components-basic-button.md)。 ## 创建button组件 在pages/index目录下的hml文件中创建一个button组件。 ```html
``` ```css /* xxx.css */ .container { width: 100%; height: 100%; flex-direction: column; justify-content: center; align-items: center; background-color: #F1F3F5; } ``` ![zh-cn_image_0000001211225091](figures/zh-cn_image_0000001211225091.png) ## 设置button类型 通过设置button的type属性来选择按钮类型,如定义button为圆形按钮、文本按钮等。 ```html
``` ```css /* xxx.css */ .container { width: 100%; height: 100%; background-color: #F1F3F5; flex-direction: column; align-items: center; justify-content: center; } .circle { font-size: 120px; background-color: blue; radius: 72px; } .text { margin-top: 30px; text-color: white; font-size: 30px; font-style: normal; background-color: blue; width: 50%; height: 100px; } ``` ![zh-cn_image_0000001208771093](figures/zh-cn_image_0000001208771093.png) > **说明:** > - 胶囊按钮(type=capsule)不支持border相关样式。 > > - 圆形按钮(type=circle)不支持文本相关样式。 > > - 文本按钮(type=text),自适应文本大小,不支持尺寸样式设置(radius,width,height),背景透明不支持background-color样式。 > > - button组件使用的icon图标如果来自云端路径,需要添加网络访问权限 ohos.permission.INTERNET。 如果需要添加ohos.permission.INTERNET权限,则在resources文件夹下的config.json文件里进行权限配置。 ``` "module": { "reqPermissions": [{ "name": "ohos.permission.INTERNET" }], } ``` ## 显示下载进度 为button组件添加progress方法,来实时显示下载进度条的进度。 ```html
``` ```css /* xxx.css */ .container { width: 100%; height: 100%; background-color: #F1F3F5; flex-direction: column; align-items: center; justify-content: center; } .download { width: 280px; text-color: white; background-color: #007dff; } ``` ```js // xxx.js import prompt from '@system.prompt'; export default { data: { percent: 0, downloadText: "Download", isPaused: true, intervalId : null, }, start(){ this.intervalId = setInterval(()=>{ if(this.percent <100){ this.percent += 1; this.downloadText = this.percent+ "%"; } else{ prompt.showToast({ message: "Download succeeded." }) this.paused() this.downloadText = "Download"; this.percent = 0; this.isPaused = true; } },100) }, paused(){ clearInterval(this.intervalId); this.intervalId = null; }, setProgress(e) { if(this.isPaused){ prompt.showToast({ message: "Started Downloading" }) this.start(); this.isPaused = false; }else{ prompt.showToast({ message: "Paused." }) this.paused(); this.isPaused = true; } } } ``` ![zh-cn_image_0000001208393581](figures/zh-cn_image_0000001208393581.gif) > **说明:** > setProgress方法只支持button的类型为download。 ## 场景示例 在本场景中,开发者可根据输入的文本内容进行button类型切换。 ```html
``` ```css /* xxx.css */ .container { flex-direction: column; align-items: center; background-color: #F1F3F5; } .input-item { margin-bottom: 80px; flex-direction: column; } .doc-row { justify-content: center; margin-left: 30px; margin-right: 30px; justify-content: space-around; } .input-text { height: 80px; line-height: 80px; padding-left: 30px; padding-right: 30px; margin-left: 30px; margin-right: 30px; margin-top:100px; border: 3px solid; border-color: #999999; font-size: 30px; background-color: #ffffff; font-weight: 400; } .select-button { width: 35%; text-align: center; height: 70px; padding-top: 10px; padding-bottom: 10px; margin-top: 30px; font-size: 30px; color: #ffffff; } .color-3 { background-color: #0598db;; } ``` ```js // xxx.js export default { data: { myflex: '', myholder: 'Enter text.', myname: '', mystyle1: "#ffffff", mystyle2: "#ff0000", mytype: 'text', myvalue: '', }, onInit() { }, changetype3() { this.myflex = ''; this.myholder = 'Enter text.'; this.myname = ''; this.mystyle1 = "#ffffff"; this.mystyle2 = "#FF0000"; this.mytype = 'text'; this.myvalue = ''; }, changetype4() { this.myflex = ''; this.myholder = 'Enter a date.'; this.myname = ''; this.mystyle1 = "#ffffff"; this.mystyle2 = "#FF0000"; this.mytype = 'date'; this.myvalue = ''; }, } ``` ![zh-cn_image_0000001234129289](figures/zh-cn_image_0000001234129289.gif)