鸿蒙系列--组件介绍之其他基础组件(上)

上回介绍了基础组件中最常用的组件常用的基础组件,接下来还有其他基础组件

一、Blank

描述:空白填充组件

功能:在容器主轴方向上,具有自动填充容器空余部分的能力。只有当父组件为Row/Column时生效

子组件:无

Blank(min?: number | string)

参数:

  • min:主轴上的最小大小(可选)

属性:

  • color:设置填充颜色

使用案例:

1.基础功能,用来占位,填充剩余部分

2.父组件不设置宽度时,Blank失效。可使用min来限制最小填充宽度

@Entry
@Component
struct BlankPage {
  build() {
    Column({ space: 20 }) {
      // blank父组件不设置宽度时,Blank失效
      Row() {
        Text('最左边')
        Blank().color(Color.Red)
        Text('最右边')
      }.backgroundColor(Color.Yellow)

      // blank父组件不设置宽度时,可以通过设置min最小宽度填充固定宽度
      Row() {
        Text('最左边')
        Blank('180').color(Color.Red)
        Text('最右边')
      }.backgroundColor(Color.Yellow)

    }.width('100%')
  }
}

二、Checkbox

多选框组件

功能:用于选项的打开或关闭

是否支持设置子组件:不支持

Checkbox( options?: {name?: string, group?: string} )

参数:

  • name:名称
  • group:群组名称

属性:

  • select:设置是否选中
  • selectedColor:设置选中状态颜色

事件:

  • onChange(callback: (value: boolean) => void):当选中状态发生变化时,触发该回调;value表示是否选中

使用案例:

@Entry
@Component
struct CheckboxPage {
  build() {
    Row() {
      Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
        .select(true)
        .selectedColor(Color.Red)
        .onChange((value: boolean) => {

        })
      Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
        .select(false)
        .selectedColor(Color.Red)
        .onChange((value: boolean) => {

        })
    }
    .height('100%')
  }
}

三、CheckboxGroup

描述:多选框群组

功能:用于控制多选框全选或者不全选状态

子组件:无

CheckboxGroup( options?: { group?: string } )

参数:

  • group:群组名称

属性:

  • selectAll:设置是否全选
  • selectedColor:设置被选中或部分选中状态的颜色

事件:

  • onChange(callback: (event: CheckboxGroupResult) => void):选中状态或群组内的Checkbox的选中状态发生变化时,触发回调

CheckboxGroupResult详解

参数:

SelectStatus:

  • All:多选择框全部选择
  • Part:多选择框部分选择
  • None:多选择框全部没有选择

使用案例:

@Entry
@Component
struct CheckboxExample {
  build() {
    Scroll() {
      Column() {
        // 全选按钮
        CheckboxGroup({ group: 'checkboxGroup' })
          .selectedColor(0xed6f21)
          .onChange((itemName: CheckboxGroupResult) => {

          })
        Text('全选').fontSize(20)

        // 选项1
        Checkbox({ name: 'checkbox1', group: 'checkboxGroup' })
          .selectedColor(0x39a2db)
          .onChange((value: boolean) => {

          })
        Text('java').fontSize(20)

        // 选项2
        Checkbox({ name: 'checkbox2', group: 'checkboxGroup' })
          .selectedColor(0x39a2db)
          .onChange((value: boolean) => {

          })
        Text('ios').fontSize(20)

        // 选项3
        Checkbox({ name: 'checkbox3', group: 'checkboxGroup' })
          .selectedColor(0x39a2db)
          .onChange((value: boolean) => {

          })
        Text('H5').fontSize(20)
      }
    }
  }
}

四、DataPanel

描述:数据统计组件

功能:用于将多个数据占比情况使用占比图进行展示

子组件:无

DataPanel(options:{values: number[], max?: number, type?: DataPanelType})

参数:

属性:

使用案例:

@Entry
@Component
struct DataPanelExample {
  public result: number[] = [20, 10, 5, 10, 25, 20, 10, 10, 10]

  build() {
    Column({ space: 5 }) {

      DataPanel({ values: this.result, max: 100, type: DataPanelType.Circle })
        .width(200)
        .height(200)

      DataPanel({ values: this.result, max: 100, type: DataPanelType.Line })
        .width(300)
        .height(30)
    }.width('100%')
    .margin({ top: 5 })
  }
}

五、DatePicker

描述:日期选择器组件

功能:根据指定范围的Date创建可以选择日期的滑动选择器

子组件:无

DatePicker(options?: {start?: Date, end?: Date, selected?: Date})

参数:

属性:

事件:

onChange(callback: (value: DatePickerResult) => void):选择日期时触发该事件

DatePickerResult详解

使用案例:

@Entry
@Component
struct DatePickerExample {
  @State isLunar: boolean = false
  private selectedDate: Date = new Date('2023-08-08')

  build() {
    Column() {
      Button('切换公历农历')
        .margin({ top: 30 })
        .onClick(() => {
          this.isLunar = !this.isLunar
        })
      DatePicker({
        start: new Date('2023-1-1'),
        end: new Date('2024-1-1'),
        selected: this.selectedDate,
      })
        .lunar(this.isLunar)
        .onChange((value: DatePickerResult) => {
          this.selectedDate.setFullYear(value.year, value.month, value.day)
          console.info('select current date is: ' + JSON.stringify(value))
        })
    }.width('100%')
  }
}

六、Divider

描述:分隔器组件

功能:分隔不同内容块/内容元素。

子组件:无

Divider()

属性:

使用案例:

@Entry
@Component
struct DividerPage {
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, justifyContent: FlexAlign.SpaceBetween }) {
      //基础使用
      Row().width('100%').height(5).backgroundColor(Color.Red)
      Divider()
      Row().width('100%').height(5).backgroundColor(Color.Yellow)

      //横向分割线
      Flex({ alignItems: ItemAlign.Center, wrap: FlexWrap.Wrap }) {
        Text('横向1')
        Divider().vertical(true).margin(20).height(30)
        Text('横向2')
        Divider().vertical(true).margin(20).height(30)
        Text('横向3')
      }.width('100%')

      //给分割线设置参数
      Row().width('100%').height(5).backgroundColor(Color.Red)
      Divider().vertical(false).strokeWidth(5)
        .color(Color.Green).lineCap(LineCapStyle.Round)
      Row().width('100%').height(5).backgroundColor(Color.Yellow)
    }
    .width('100%')
    .height(350)
    .padding({ left: 35, right: 35, top: 35 })
  }
}

七、Gauge

描述:环形统计图组件

功能:用于将数据展示为环形图表。

子组件:无

Gauge(options:{value: number, min?: number, max?: number})

参数:

属性:

注意:

  •  当属性和参数都可以设置value,当两者同时设置时以参数为准

ColorStop详解

颜色断点类型,用于描述渐进色颜色断点

使用案例:

@Entry
@Component
struct GaugeExample {
  build() {
    Column({ space: 20 }) {
      // 默认的min和max为0-100,角度范围默认0-360,value参数中设置当前值为50
      Gauge({ value: 50 })
        .width(100).height(100)
        .colors([[Color.Red, 3], [Color.Green, 1], [Color.Blue, 1], [Color.Yellow, 1]])

      // 参数设置当前值为75,属性设置值为25,属性设置优先级高
      Gauge({ value: 75 })
        .value(25) // 以这个为准
        .width(100).height(100)
        .colors([[Color.Red, 3], [Color.Green, 1], [Color.Blue, 1], [Color.Yellow, 1]])

      // 其他参数和属性的应用
      Gauge({ value: 40, min: 0, max: 100 })
        .startAngle(230) //开始位置
        .endAngle(130)  //结束位置
        .colors([[Color.Red, 0.3], [Color.Green, 0.1], [Color.Blue, 0.2], [Color.Yellow, 0.4]])
        .strokeWidth(30)
        .width(300)
        .height(300)
    }.width('100%').margin({ top: 100 })
  }
}

八、ImageAnimator

描述:图片播放组价

功能:提供帧动画组件来实现逐帧播放图片的能力,可以配置需要播放的图片列表,每张图片可以配置时长

子组件:无

ImageAnimator()

属性:

事件:

  • onStart(event: () => void) :状态回调,动画开始播放时触发

  • onPause(event: () => void):状态回调,动画暂停播放时触发

  • onRepeat(event: () => void):状态回调,动画重新播放时触发

  • onCancel(event: () => void):状态回调,动画取消播放时触发

  • onFinish(event: () => void):状态回调,动画播放完成时触发

注意:

  • 属性duration值的改变只会在下一次循环开始时生效

  • 当images中设置了单独的duration后,属性duration设置无效

  • 当设置fixedSize为true时,表示图片大小与组件大小一致,此时设置图片的width 、height 、top 和left属性是无效的;设置false表示每一张图片的 width 、height 、top和left属性都要单独设置

images设置详解:

参数类型:

Array<{

src: string,

width?: number | string,

height?: number | string,

top?: number | string,

left?: number | string,

duration?: number

}>

参数描述:

  • src:图片路径,图片格式为svg,png和jpg

  • width:图片宽度

  • height:图片高度

  • top:图片相对于组件左上角的纵向坐标

  • left:图片相对于组件左上角的横向坐标

  • duration:每一帧图片的播放时长,单位毫秒。

使用案例:

@Entry
@Component
struct ImageAnimatorExample {
  @State state: AnimationStatus = AnimationStatus.Initial
  @State reverse: boolean = false
  @State iterations: number = 1

  build() {
    Column({ space:5 }) {
      ImageAnimator()
        .images([
          {
            //comment文件夹与pages同级
            src: $r('app.media.bg1'),
            duration: 500,
            width: 325,
            height: 200,
            top: 0,
            left: 0
          },
          {
            src: $r('app.media.bg2'),
            duration: 500,
            width: 325,
            height: 200,
            top: 0,
            left: 0
          },
          {
            src: $r('app.media.bg3'),
            duration: 500,
            width: 325,
            height: 200,
            top: 0,
            left: 0
          },
          {
            src: $r('app.media.bg3'),
            duration: 500,
            width: 325,
            height: 200,
            top: 0,
            left: 0
          }
        ])
        .state(this.state).reverse(this.reverse).fixedSize(false).preDecode(2)
        .fillMode(FillMode.None).iterations(this.iterations).width(325).height(210)
        .margin({top:100})
        .onStart(() => { // 当帧动画开始播放后触发
          console.info('Start')
        })
        .onPause(() => {
          console.info('Pause')
        })
        .onRepeat(() => {
          console.info('Repeat')
        })
        .onCancel(() => {
          console.info('Cancel')
        })
        .onFinish(() => { // 当帧动画播放完成后触发
          console.info('Finish')
        })
      Row() {
        Button('start').width(100).padding(5).onClick(() => {
          this.state = AnimationStatus.Running
        })
        Button('pause').width(100).padding(5).onClick(() => {
          this.state = AnimationStatus.Paused
        })
        Button('stop').width(100).padding(5).onClick(() => {
          this.state = AnimationStatus.Stopped
        })
      }
      Row() {
        Button('reverse').width(100).padding(5).onClick(() => {
          this.reverse = !this.reverse
        })
        Button('once').width(100).padding(5).onClick(() => {
          this.iterations = 1
        })
        Button('iteration').width(100).padding(5).onClick(() => {
          this.iterations = -1
        })
      }
    }.width('100%').height('100%').backgroundColor(0xF1F3F5)
  }
}

九、 Marquee

描述: 跑马灯组件

功能: 用于滚动展示一段单行文本,仅当文本内容宽度超过跑马灯组件宽度时滚动

子组件:无

Marquee(value: { start: boolean, step?: number, loop?: number, fromStart?: boolean, src: string })

参数:

属性:

名称

参数类型

默认值

描述

allowScale

boolean

false

是否允许文本缩放

暂不支持该接口

事件:

名称

功能描述

onStart(event: () => void)

开始滚动时触发回调

onBounce(event: () => void)

滚动到底时触发回调

onFinish(event: () => void)

滚动完成时触发回调

使用案例:

@Entry
@Component
struct MarqueeExample {
  @State start: boolean = false
  @State fromStart: boolean = true
  @State step: number = 50
  @State loop: number = 3
  @State src: string = "Running Marquee starts rolling"

  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Marquee({
        start: this.start,
        step: this.step,
        loop: this.loop,
        fromStart: this.fromStart,
        src: this.src
      })
        .width(400)
        .fontColor(Color.White)
        .fontSize(50)
        .allowScale(false)
        .fontWeight(FontWeight.Bold)
        .backgroundColor(Color.Black)
        .margin({bottom:40})
        .onStart(() => {
          console.log('Marquee animation complete onStart')
        })
        .onBounce(() => {
          console.log('Marquee animation complete onBounce')
        })
        .onFinish(() => {
          console.log('Marquee animation complete onFinish')
        })
      Button('start')
        .onClick(() => {
          this.start = true
        })
        .width(200)
        .height(60)
        .margin({bottom:20})
    }
    .width('100%')
    .height('100%')
  }
}

十、 Navigation

描述: 页面头部根容器

功能: 通过属性设置来展示页面的标题、工具栏、菜单

子组件:可以包含子组件

Navigation()

属性:

名称

参数类型

默认值

描述

title

string | CustomBuilder

-

页面标题

subtitle

string

-

页面副标题。

menus

Array<NavigationMenuItem> | CustomBuilder

-

页面右上角菜单

titleMode

NavigationTitleMode

NavigationTitleMode.Free

页面标题栏显示模式。

toolBar

object | CustomBuilder

-

设置工具栏内容。

items: 工具栏所有项

hideToolBar

boolean

false

设置隐藏/显示工具栏

hideTitleBar

boolean

false

隐藏标题栏

hideBackButton

boolean

false

隐藏返回键

事件:

名称

功能描述

onTitleModeChange(callback: (titleMode: NavigationTitleMode) => void)

当titleMode为NavigationTitleMode.Free时,随着可滚动组件的滑动标题栏模式发生变化时触发此回调

使用案例:

@Entry
@Component
struct NavigationExample {
  @State hideBar: boolean = false
  @State hideTitleBar: boolean = false

  @Builder NavigationTitle() {
    Column() {
      Text(this.index == 0 ? "首页" : this.index == 1 ? "列表" : "更多")
        .width(80)
        .height(60)
        .fontColor(Color.Red)
        .fontSize(30)
    }
    .onClick(() => {
      console.log("title")
    })
  }

  @Builder NavigationMenus() {
    Row() {
      Image($r('app.media.bg1'))
        .width(25)
        .height(25)
      Image($r('app.media.bg2'))
        .width(25)
        .height(25)
        .margin({ left: 30 })
    }
  }

  @State index: number = 0

  // CustomBuilder类型的toolbar
  @Builder NavigationToolbar() {
    Row() {
      Column() {
        Image(this.index == 0 ? $r('app.media.bg1') : $r('app.media.bg2'))
          .size({ width: 25, height: 25 })
        Text('首页')
          .fontSize(16)
          .fontColor(this.index == 0 ? Color.Red : Color.Gray)
          .margin({ top: 5 })
      }
      .alignItems(HorizontalAlign.Center)
      .height('100%')
      .layoutWeight(1)
      .onClick(() => {
        this.index = 0;
      })

      Column() {
        Image(this.index == 1 ? $r('app.media.bg1') : $r('app.media.bg2'))
          .size({ width: 25, height: 25 })
        Text('列表')
          .fontSize(16)
          .fontColor(this.index == 1 ? Color.Red : Color.Gray)
          .margin({ top: 5 })
      }
      .alignItems(HorizontalAlign.Center)
      .height('100%')
      .layoutWeight(1)
      .onClick(() => {
        this.index = 1;
      })

      Column() {
        Image(this.index == 2 ? $r('app.media.bg1') : $r('app.media.bg2'))
          .size({ width: 25, height: 25 })
        Text('更多')
          .fontSize(16)
          .fontColor(this.index == 2 ? Color.Red : Color.Gray)
          .margin({ top: 5 })
      }
      .alignItems(HorizontalAlign.Center)
      .height('100%')
      .layoutWeight(1)
      .onClick(() => {
        this.index = 2;
      })
    }
    .width('100%')
    .height(50)
    .alignItems(VerticalAlign.Center)
  }

  build() {
    Column() {
      Navigation() {
        Column(){
          //具体内容区
          //可以根据具体的index 来显示不同的界面布局
          Text(this.index == 0 ? "首页" : this.index == 1 ? "列表" : "更多")
            .textAlign(TextAlign.Center)
            .fontSize(30)
            .fontColor(Color.Red)

          //测试按钮
          Row() {
            Button(this.hideBar ? "tool bar" : "hide tool bar")
              .onClick(() => {
                this.hideBar = !this.hideBar
              })
            Button(this.hideTitleBar ? "title bar" : "hide title bar")
              .onClick(() => {
                this.hideTitleBar = !this.hideTitleBar
              }).margin({ left: 50 })
          }.margin({ left: 35, top: 60 })
        }
      }
      .title(this.NavigationTitle)
      .menus(this.NavigationMenus)
      .titleMode(NavigationTitleMode.Free)
      .hideTitleBar(this.hideTitleBar)
      .hideBackButton(false)
      .onTitleModeChange((titleModel: NavigationTitleMode) => {
        console.log('titleMode')
      })
      .toolBar(this.NavigationToolbar)
      // .toolBar({ items: [
      //   { value: 'app', icon: $r('app.media.bg2'), action: () => {
      //     console.log("app")
      //   } },
      //   { value: 'add', icon: $r('app.media.bg2'), action: () => {
      //     console.log("add")
      //   } },
      //   { value: 'collect', icon: $r('app.media.bg2'), action: () => {
      //     console.log("collect")
      //   } }] })
      .hideToolBar(this.hideBar)
    }
  }
}

十一、 Progress

描述: 进度条组件

功能: 用于显示内容加载进度

子组件:无

Progress(options: {value: number, total?: number, style?: ProgressStyle, type?: ProgressType})

参数:

参数名

参数类型

必填

默认值

参数描述

value

number

-

指定当前进度值

total

number

100

指定进度总长

type

ProgressType

ProgressType.Linear

指定进度条类型

属性:

名称

参数类型

描述

value

number

设置当前进度值。

color

ResourceColor

设置进度条前景色。

style

{

strokeWidth?: Length

scaleCount?: number,

scaleWidth?: length

}

定义组件的样式。

刻度粗细大于进度条宽度时,刻度粗细为系统默认粗细。

ProgressType 样式可选类型:

名称

描述

Linear

线性

Ring

环形无刻度样式,环形圆环逐渐显示至完全填充效果

Eclipse

圆形样式,显示类似月圆月缺的进度展示效果,从月牙逐渐变化至满月

ScaleRing

环形有刻度样式,显示类似时钟刻度形式的进度展示效果

Capsule

胶囊样式,头尾两端圆弧处的进度展示效果与Eclipse相同;中段处的进度展示效果与Linear相同

style详解:

  • strokeWidth: 设置进度条宽度
  • scaleCount: 设置环形进度条总刻度数
  • scaleWidth: 设置环形进度条刻度粗细

使用案例:

@Entry
@Component
struct ProgressExample {
  build() {
    Column({ space: 15 }) {
      //线性进度条
      Progress({ value: 50, type: ProgressType.Linear })
        .width(200)
      Progress({ value: 100, total: 150, type: ProgressType.Linear })
        .color(Color.Red)
        .value(100)
        .width(200)


      //圆形进度条
      Row({ space: 50 }) {
        Progress({ value: 50, type: ProgressType.Eclipse })
          .width(100)
        Progress({ value: 100, total: 150, type: ProgressType.Eclipse })
          .color(Color.Red)
          .value(100)
          .width(100)
      }

      //环形有刻度进度条
      Row({ space: 50 }) {
        Progress({ value: 50, type: ProgressType.ScaleRing })
          .width(100)
        Progress({ value: 50, total: 150, type: ProgressType.ScaleRing })
          .color(Color.Red)
          .value(100)
          .width(100)
          .style({ strokeWidth: 15, scaleCount: 15, scaleWidth: 5 })
      }

      //环形有刻度进度条 定义样式
      Row({ space: 40 }) {
        Progress({ value: 20,  type: ProgressType.ScaleRing })
          .value(50)
          .width(100)
          .style({ strokeWidth: 20, scaleCount: 20, scaleWidth: 5 })
        Progress({ value: 100, total: 150, type: ProgressType.ScaleRing })
          .color(Color.Red)
          .value(100)
          .width(100)
          .style({ strokeWidth: 20, scaleCount: 30, scaleWidth: 3 })
      }

      //环形进度条
      Row({ space: 50 }) {
        Progress({ value: 50, type: ProgressType.Ring })
          .width(100)
        Progress({ value: 100, total: 150, type: ProgressType.Ring })
          .color(Color.Red)
          .value(100)
          .width(100)
          .style({ strokeWidth: 20, scaleCount: 30, scaleWidth: 20 })
      }

      //胶囊进度条
      Row({ space: 50 }) {
        Progress({ value: 50, type: ProgressType.Capsule })
          .width(200)
          .height(50)
        Progress({ value: 100, total: 150, type: ProgressType.Capsule })
          .color(Color.Red)
          .value(100)
          .width(100)
          .height(50)
      }
    }.width('100%').margin({ top: 30 })
  }
}

十二、 Progress

描述: 二维码组件

功能: 用来显示二维码

子组件:无

QRCode(value: string)

参数:

  • value:二维码内容

属性:

  • color:二维码颜色
  • backgroundColor:二维码背景色

使用案例:

@Entry
@Component
struct QRCodeExample {
  private value: string = 'hello world'
  build() {
    Column({ space: 5 }) {

      QRCode(this.value)
        .width(200)
        .height(200)

      // 设置二维码颜色
      QRCode(this.value)
        .color(Color.Red)
        .width(200)
        .height(200)

      // 设置二维码背景色
      QRCode(this.value)
        .width(200)
        .height(200)
        .backgroundColor(Color.Red)
    }.width('100%').margin({ top: 5 })
  }
}

十二、 Radio

描述: 单选框组件

功能: 提供相应的用户交互选择项

子组件:无

Radio(options: {value: string, group: string})

参数:

  • value:值
  • group:组名,一个组只能有一个单选框被选中

属性:

  • checked:设置是否选中

事件:

  • onChange(callback: (isChecked: boolean) => void):单选框状态改变时触发

使用案例:

@Entry
@Component
struct RadioPage {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column() {
        Radio({ value: 'Radio1', group: 'radioGroup' })
          .checked(true)
          .height(50)
          .width(50)
          .onChange((isChecked: boolean) => {

          })
        Radio({ value: 'Radio2', group: 'radioGroup' })
          .checked(true)
          .height(50)
          .width(50)
          .onChange((isChecked: boolean) => {

          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

十三、 Rating

描述: 评分组件

功能: 用来评分

子组件:无

Rating(options?: { rating: number, indicator?: boolean })

参数:

  • rating:设置并接收评分值
  • indicator:指示器

属性:

  • stars:设置评星总数,默认值:5
  • stepSize:步长,一次可增加减少多少,默认值:0.5
  • starStyle:选中与未选中样式

事件:

  • onChange(callback:(value: number) => void):操作发生改变时触发

可由用户自定义或使用系统默认图片,仅支持本地。

  • backgroundSrc:未选中的星级的图片链接 
  • foregroundSrc:选中的星级的图片路径
  • secondarySrc:部分选中的星级的图片路径

使用案例:

@Entry
@Component
struct RatingPage {
  @State rating: number = 1
  @State indicator: boolean = false

  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.SpaceBetween }) {
      Text('当前评分: ' + this.rating).fontSize(20)
      //基础用法
      Rating({ rating: this.rating, indicator: this.indicator })
        .stars(5)
        .stepSize(1)
        .onChange((value: number) => {
          this.rating = value
        })

      //可设置本地图片
      Rating({ rating: this.rating, indicator: false })
        .stars(5)
        .stepSize(1)
        .starStyle({
          backgroundUri: '/common/bg1.png',
          foregroundUri: '/common/bg2.png',
          secondaryUri: '/common/bg3.png'
        })
        .margin({ top: 24 })
        .onChange((value: number) => {
          this.rating = value
        })
    }.width(350).height(200).padding(35)
  }
}

十四、 RichText

描述: 富文本组件

功能: 解析并显示HTML格式文本。

子组件:无

RichText(content: string)

参数:

  • content :HTML格式的字符串

事件:

  • onStart(callback: () => void):加载网页开始时触发
  • onComplete(callback: () => void) :加载网页完成时触发

支持标签:

  • <h1>--<h6>:定义标题,1~6

  • <p></p>:定义段落

  • <br/>:插入一个简单的换行符

  • <hr/>:定义HTML页面中的主题变化(比如话题的转移),并显示为一条水平线

  • <div></div>:常用于组合块级元素,以便通过CSS来对这些元素进行格式化

  • <i></i>:斜体

  • <u></u>:下划线

  • <style></style>:HTML文档的样式信息

  • <script></script>:用于定义客户端文本,比如JavaScript

鸿蒙系列--组件介绍之其他基础组件(上)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/277008.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

羊大师讲解,羊奶在本草纲目中的作用及其益处

羊大师讲解&#xff0c;羊奶在本草纲目中的作用及其益处 羊奶是一种传统的中药材&#xff0c;早在《本草纲目》中就被广泛记录和应用。它是从母羊妊娠后分泌出来的乳汁&#xff0c;具有丰富的营养成分和独特的药用价值。小编羊大师发现&#xff0c;羊奶被认为是一种滋补养颜、…

3D 渲染如何帮助电商促进销售?

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 3D 渲染图像因其高转化率而成为亚马逊卖家的最新趋势。它是电子商务平…

Linux iptables防火墙(一)

1.1 Linux防火墙基础 在 Internet 中&#xff0c;企业通过架设各种应用系统来为用户提供各种网络服务&#xff0c;如 Web 网站、 电子邮件系统、 FTP 服务器、数据库系统等。那么&#xff0c;如何来保护这些服务器&#xff0c;过滤企业不 需要的访问甚至是恶意的入侵呢&a…

作为开发人员掌握 GitHub Copilot:15 个提示和技巧

目录 Copilot 的炫酷用例 为您完成代码 从代码编写测试 TDD&#xff1a;通过测试编写代码 测试/模拟数据生成 从注释中编写代码 问&#xff1a;&答&#xff1a; 颜色生成 使用测量单位 自然语言翻译 自动化脚本 正则表达式 配置 命令行命令 文档和自述文本 if (true) 技巧 …

QT与MATLAB混合编程详解

写在前面&#xff1a;由于matlab和qt的环境配置复杂&#xff0c;请大家一定先根据自己电脑的路径来替换本文中的路径 本文使用环境&#xff1a; MATLAB 2022b qt 6.6 编译环境&#xff1a;MSVC2019 64位 matlab的环境还需要配置在环境变量中 此电脑&#xff08;右键&#xf…

Docker 实践之旅:项目迁移与高效部署

目录 1 引言2 初识 Docker2.1 Docker简介2.2 Docker优势 3 传统部署流程的问题4 学习 Docker 的过程5 Docker 解决项目部署的实践5.1 迁移关键服务5.2 定制化打包与快速部署 6 项目实践收获6.1 简化了部署流程6.2 节约了部署成本 7 克服难点和经验分享7.1 版本兼容性问题7.2 网…

Android Studio修改创建新布局时默认根布局

将Android Studio默认布局ConstraintLayout切换成LinearLayout 打开设置&#xff0c; Editor> File and Code Templates > Other > layoutResourceFile.xml 备注&#xff1a;创建时提示根布局仍然为ConstraintLayout&#xff0c;不用管这个&#xff0c;实际创建的…

MybatisX逆向工程方法

官方文档链接&#xff1a;MybatisX快速开发插件 | MyBatis-Plus (baomidou.com) 使用MybatisX可以快速生成mapper文件&#xff0c;实体类和service及实现 效果 方法&#xff1a;首先下载mybatisX插件 然后创建数据库信息 然后选中表&#xff0c;右键&#xff0c;点击Mybatis…

WeakMap 和 Map 的区别,WeakMap 原理,为什么能被 GC?

垃圾回收机制 我们知道&#xff0c;程序运行中会有一些垃圾数据不再使用&#xff0c;需要及时释放出去&#xff0c;如果我们没有及时释放&#xff0c;这就是内存泄露 JS 中的垃圾数据都是由垃圾回收&#xff08;Garbage Collection&#xff0c;缩写为 GC&#xff09;器自动回…

JMeter逻辑控制器之While控制器

JMeter逻辑控制器之While控制器 1. 背景2.目的3. 介绍4.While示例4.1 添加While控制器4.2 While控制器面板4.3 While控制器添加请求4.3 While控制器应用场景 1. 背景 存在一些使用场景&#xff0c;比如&#xff1a;某个请求必须等待上一个请求正确响应后才能开始执行。或者&…

Springboot整合JSP-修订版本(Springboot3.1.6+IDEA2022版本)

1、问题概述&#xff1f; Springboot对Thymeleaf支持的要更好一些&#xff0c;Springboot内嵌的Tomcat默认是没有JSP引擎&#xff0c;不支持直接使用JSP模板引擎。这个时候我们需要自己配置使用。 2、Springboot整合使用JSP过程 现在很多的IDEA版本即使创建的项目类型是WAR工…

页面左中右下布局HTML

效果如下 代码如下 <!DOCTYPE html> <html><head><title>名曲欣赏</title><meta charset"UTF-8" /><style>body {padding: 0;margin: 0;background: linear-gradient(180deg, #d7f5f2 0%, #c4f2ee 100%);}p {margin: 0;p…

学生使用什么牌子的护眼灯好?五款优秀台灯分享

在近几年&#xff0c;儿童青少年近视率非常高。很多家长认为孩子近视的原因是没有养成正确的用眼习惯&#xff0c;例如经常趴桌子写作业、眯眼看书等&#xff0c;但实际上这些坏习惯是因为没有合适的光线而导致的。所以安排一盏合适的台灯给孩子学习是非常重要的。 很多家长会选…

基于C++的类Unix文件系统

这是一个基于C的类Unix文件系统&#xff0c;有意者私信获取。 可用指令如下&#xff1a; ls - 显示当前文件夹下的内容 cd - 按照路径进入到某个文件夹下 mkdir <path/name> - 在指定路径下创建一个文件夹 create <path/name> - 在指定路径下创建一个文件 open &…

Hadoop安装笔记2单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

紧接着上一篇博客&#xff1a;Hadoop安装笔记1&#xff1a; Hadoop安装笔记1单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2&#xff1a;离线数据处理-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/135…

SpringBoot 项目中常用的注解

每一层对应每个包&#xff0c;包名中应全为小写。 一、Common 层&#xff08;实体类&#xff09; 前提&#xff1a;导入 Lombok 依赖 Data&#xff1a;生成 get 和 set 方法以及 toString 方法 Getter&#xff1a;只生成 get 方法&#xff0c;避免对类中的成员变量修改。 …

《MySQL系列-InnoDB引擎01》MySQL体系结构和存储引擎

文章目录 第一章 MySQL体系结构和存储引擎1 数据库和实例2 MySQL配置文件3 MySQL数据库路径4 MySQL体系结构5 MySQL存储引擎5.1 InnoDB存储引擎5.2 MyISAM存储引擎5.3 NDB存储引擎5.4 Memory存储引擎5.5 Archive存储引擎5.6 Federated存储引擎 6 连接MySQL6.1 TCP/IP6.2 命名管…

MIT线性代数笔记-第31讲-线性变换及对应矩阵

目录 31.线性变换及对应矩阵打赏 31.线性变换及对应矩阵 线性变换相当于是矩阵的抽象表示&#xff0c;每个线性变换都对应着一个矩阵 例&#xff1a; 考虑一个变换 T T T&#xff0c;使得平面上的一个向量投影为平面上的另一个向量&#xff0c;即 T : R 2 → R 2 T:R^2 \to R…

CDN 原理

CDN 原理 CND 一般包含分发服务系统、负载均衡系统和管理系统 分发服务系统 其基本的工作单元就是各个 Cache 服务器。负责直接响应用户请求&#xff0c;将内容快速分发到用户&#xff1b;同时还负责内容更新&#xff0c;保证和源站内容的同步。 根据内容类型和服务种类的不…

gitlab请求合并分支

直接去看原文: 原文链接:Gitlab合并请求相关流程_source branch target branch-CSDN博客 --------------------------------------------------------------------------------------------------------------------------------- 入口&#xff1a; 仓库控制台的这两个地方都…