# Button The **** component can be used to set a capsule, circle, text, arc, or download button. For details, see [button](../js-reference/js-based-web-like-development-paradigm/js-components-basic-button.md). ## Creating a Component Create a **** component in the **.hml** file under **pages/index**. ```
``` ``` /* xxx.css */ .container { flex-direction: column; justify-content: center; align-items: center; background-color: #F1F3F5; } ``` ![](figures/3-5.png) ## Setting the Button Type Set the **type** attribute of the **** component to **button**, **date**, or any of the supported values. ```
``` ``` /* xxx.css */ .container { 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; } ``` ![](figures/05-6.png) >![](../public_sys-resources/icon-note.gif) **NOTE:** >- For capsule buttons, border-related styles are not supported. >- For circle buttons, text-related styles are not supported. >- For text buttons, the text size is adaptive, and **radius**, **width**, and **height** cannot be set. The **background-color** style is not supported when the background is completely transparent. >- If the icon used by the **** component is from the cloud, you must declare the **ohos.permission.INTERNET** permission in the **config.json** file under the **resources** folder. Sample code for declaring the **ohos.permission.INTERNET** permission in the **config.json** file under the **resources** folder: ``` "module": { "reqPermissions": [{ "name": "ohos.permission.INTERNET" }], } ``` ## Showing the Download Progress Add the **progress** method to the **** component to display the download progress in real time. ```
``` ``` /* xxx.css */ .container { background-color: #F1F3F5; flex-direction: column; align-items: center; justify-content: center; } .download { width: 280px; text-color: white; background-color: #007dff; } ``` ``` // xxx.js import prompt from '@system.prompt'; export default { data: { percent: 0, downloadText: "Download", isPaused: true, intervalId : null, }, star(){ 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: "Download started" }) this.star(); this.isPaused = false; }else{ prompt.showToast({ message: "Paused." }) this.paused(); this.isPaused = true; } } } ``` ![](figures/34.gif) >![](../public_sys-resources/icon-note.gif) **NOTE:** >- The **setProgress** method supports only buttons of the download type. ## Example Scenario Switch between the button types for different types of text. ```
``` ``` /* 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;; } ``` ``` // 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 = ''; }, } ``` ![](figures/21.gif)