按钮 (Button)

一、 创建按钮

官网地址

1. 创建不包含子组件的按钮。

Button通过调用接口来创建,接口调用有以下两种形式:

Button(label?: ResourceStr, options?: { type?: ButtonType, stateEffect?: boolean })

其中,label用来设置按钮文字,type用于设置Button类型,stateEffect属性设置Button是否开启点击效果。

ButtonType枚举说明

Button属性官网地址

名称描述描述
Capsule胶囊型按钮此类型按钮的圆角自动设置为高度的一半,不支持通过borderRadius属性重新设置圆角。
Circle圆形按钮。此类型按钮为圆形,不支持通过borderRadius属性重新设置圆角。
Normal普通按钮此类型的按钮默认圆角为0,支持通过borderRadius属性重新设置圆角。
自定义样式
设置边框弧度.borderRadius(20)
设置文本样式,默认值:‘#ffffff’.fontColor(Color.Pink)
设置背景颜色.backgroundColor(0xF55A42)
文本显示字号。默认值:若controlSize的值为:controlSize.NORMAL,取’16fp’,若controlSize的值为:controlSize.SMALL,取’12fp’fontSize(value: Length)
文本的字体粗细fontWeight,number类型取值[100, 900],取值间隔为100,取值越大,字体越粗。默认值:400fontWeight(value: number ,FontWeight ,string)
文本的字体样式。默认值:FontStyle.Normal。fontStyle(value: FontStyle)
设置是否开启按压态显示效果,ture,falsestateEffect(value: boolean)
默认字体’HarmonyOS Sans’,当前支持’HarmonyOS Sans’字体和注册自定义字体fontFamily(value: string / Resource)

例子

Button('Ok', { type: ButtonType.Normal, stateEffect: true }) 
  .borderRadius(8) 
  .backgroundColor(0x317aff) 
  .width(90)
  .height(40)

2.创建包含子组件的按钮。

(就是可以设置按钮里边的内容)

Button(options?: {type?: ButtonType, stateEffect?: boolean})

只支持包含一个子组件,子组件可以是基础组件或者容器组件

Button({ type: ButtonType.Normal, stateEffect: true }) {
  Row() {
    Image($r('app.media.loading')).width(20).height(40).margin({ left: 12 })
    Text('loading').fontSize(12).fontColor(0xffffff).margin({ left: 5, right: 12 })
  }.alignItems(VerticalAlign.Center)
}.borderRadius(8).backgroundColor(0x317aff).width(90).height(40)

3. 场景示例

用于启动操作。

可以用按钮启动任何用户界面元素,按钮会根据用户的操作触发相应的事件。例如,在List容器里通过点击按钮进行页面跳转。

// xxx.ets
import router from '@ohos.router';
@Entry
@Component
struct ButtonCase1 {
  @State FurL:router.RouterOptions = {'url':'pages/first_page'}
  @State SurL:router.RouterOptions = {'url':'pages/second_page'}
  @State TurL:router.RouterOptions = {'url':'pages/third_page'}
  build() {
    List({ space: 4 }) {
      ListItem() {
        Button("First").onClick(() => {
          router.pushUrl(this.FurL)
        })
          .width('100%')
      }
      ListItem() {
        Button("Second").onClick(() => {
          router.pushUrl(this.SurL)
        })
          .width('100%')
      }
      ListItem() {
        Button("Third").onClick(() => {
          router.pushUrl(this.TurL)
        })
          .width('100%')
      }
    }
    .listDirection(Axis.Vertical)
    .backgroundColor(0xDCDCDC).padding(20)
  }
}

用于提交表单。(就是绑定个事件)

在用户登录/注册页面,使用按钮进行登录或注册操作。

// xxx.ets
@Entry
@Component
struct ButtonCase2 {
  build() {
    Column() {
      TextInput({ placeholder: 'input your username' }).margin({ top: 20 })
      TextInput({ placeholder: 'input your password' }).type(InputType.Password).margin({ top: 20 })
      Button('Register').width(300).margin({ top: 20 })
        .onClick(() => {
          // 需要执行的操作
        })
    }.padding(20)
  }
}

悬浮按钮(就是加个定位)

在可以滑动的界面,滑动时按钮始终保持悬浮状态。

// xxx.ets
@Entry
@Component
struct HoverButtonExample {
  private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  build() {
    Stack() {
      List({ space: 20, initialIndex: 0 }) {
        ForEach(this.arr, (item:number) => {
          ListItem() {
            Text('' + item)
              .width('100%').height(100).fontSize(16)
              .textAlign(TextAlign.Center).borderRadius(10).backgroundColor(0xFFFFFF)
          }
        }, (item:number) => item.toString())
      }.width('90%')
      Button() {
        Image($r('app.media.ic_public_add'))
          .width(50)
          .height(50)
      }
      .width(60)
      .height(60)
      .position({x: '80%', y: 600})
      .shadow({radius: 10})
      .onClick(() => {
        // 需要执行的操作
      })
    }
    .width('100%')
    .height('100%')
    .backgroundColor(0xDCDCDC)
    .padding({ top: 5 })
  }
}
<think>好的,我现在需要处理用户关于HTML button元素的问题。用户想了解使用方法、属性和示例。首先,我得回忆一下HTML中button的基本知识,然后结合提供的引用内容来组织回答。 首先,根据引用[1],button是交互的关键元素,使用<button>标签创建。我需要概述标签的基本结构,比如开始和结束标签,以及类型属性。然后,引用[1]提到属性,包括type、disabled、autofocus等,需要详细说明每个属性的作用。例如,type的submit、button、reset,以及如何用disabled禁用按钮。 接下来,引用[2]提到事件属性,比如onclick,这里可以给出示例代码,展示如何用内联事件触发JavaScript。同时,引用[5]中有关于绑定点击事件的代码,可以补充说明如何通过JavaScript动态绑定事件,而不是内联写法。 关于表单相关的属性,引用[3]和[4]讨论了使用setAttribute等方法修改属性。这部分需要说明如何通过JavaScript操作按钮的属性,比如启用或禁用按钮。例如,用element.disabled = true或者setAttribute('disabled', '')。 然后,需要比较<button>与其他按钮元素(如<input type="button">)的区别,引用[1]提到这一点。这里要强调<button>的内容更灵活,可以包含其他HTML元素,而input只能显示文本。 在示例部分,需要提供基本的按钮代码、禁用按钮的示例、带图标的按钮,以及通过JavaScript修改属性的例子。引用[5]中的代码展示了如何修改元素内容,可以调整成修改属性的例子,比如切换禁用状态。 最后,生成相关问题时要考虑用户可能进一步想知道的内容,比如按钮的样式、表单中的使用、最佳实践等。确保问题覆盖用户可能的需求。 检查是否有遗漏的属性和方法,确保每个部分都有引用支持,并且引用标记正确。同时,遵循系统级指令,使用正确的中文和LaTeX格式,数学表达式这里可能用不上,但要注意代码块的使用和格式正确。</think>### HTML `<button>` 元素详解 #### 一、基本用法 `<button>` 标签用于创建可点击的按钮,支持文本、图标或其他 HTML 元素作为内容。其基本语法为: ```html <button type="button">点击我</button> ``` #### 二、核心属性 1. **`type`** 定义按钮类型: - `submit`:默认值,提交表单数据[^1]。 - `button`:普通按钮,无默认行为。 - `reset`:重置表单内容。 ```html <button type="submit">提交表单</button> <button type="reset">重置表单</button> ``` 2. **`disabled`** 禁用按钮,使其不可交互: ```html <button type="button" disabled>已禁用</button> ``` 3. **`autofocus`** 页面加载时自动聚焦按钮: ```html <button type="button" autofocus>自动聚焦</button> ``` 4. **事件属性** 通过内联事件绑定交互行为,例如 `onclick`[^2]: ```html <button onclick="alert('按钮被点击!')">弹出提示</button> ``` #### 三、JavaScript 操作按钮属性 通过 DOM API 动态修改按钮属性: 1. **直接访问属性** ```javascript const btn = document.querySelector('button'); btn.disabled = true; // 禁用按钮 ``` 2. **`setAttribute` 方法** ```javascript btn.setAttribute('disabled', ''); // 添加禁用属性 btn.removeAttribute('disabled'); // 移除禁用属性[^3][^4] ``` #### 四、与其他按钮元素的区别 - **`<input type="button">`** 仅支持纯文本内容,例如: ```html <input type="button" value="输入类型按钮"> ``` - **优势对比** `<button>` 支持嵌套 HTML 元素(如图标、多行文本),灵活性更高。 #### 五、示例 1. **基础按钮** ```html <button type="button" class="primary-btn">保存</button> ``` 2. **带图标的按钮** ```html <button type="button"> <svg><!-- 图标代码 --></svg> 下载 </button> ``` 3. **动态切换禁用状态** ```html <button id="toggleBtn" onclick="toggle()">切换状态</button> <script> function toggle() { const btn = document.getElementById('toggleBtn"); btn.disabled = !btn.disabled; } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值