在写页面的时候,经常会遇到元素垂直居中的需求。有时候一连试了几种方法,并没有效果,那是因为你没有用对方法,每种垂直居中,都有不同的使用条件。下面我们来详细了解一下吧。
这里收集了八种不同的方法。
一、行高,line-height。
适用场景:单行文字垂直居中。
2025年08月18日
在写页面的时候,经常会遇到元素垂直居中的需求。有时候一连试了几种方法,并没有效果,那是因为你没有用对方法,每种垂直居中,都有不同的使用条件。下面我们来详细了解一下吧。
这里收集了八种不同的方法。
适用场景:单行文字垂直居中。
2025年08月18日
在天行数据发现一个有趣的Api接口-藏头诗生成,只要输入特定的内容就能生成藏头诗句,使用DevEco Studio 3.0 Beta4 实现一款运行在OpenHarmony操作系统上的应用程序。
2025年08月18日
把代码复制在电脑文本文档中,文本文档后缀名改为html ,这样你就自己制作成功一个大乐透机选模拟器,来试试吧。
<!DOCTYPE html>
<html lang="zh-CN">
2025年08月18日
海康威视摄像头提供的 ws:// 或 wss:// 格式的视频流,通常是封装了 FLV (Flash Video) 或其他实时流协议的数据。
标准的 React Native 视频播放器(如 react-native-video)和浏览器 <video> 标签一样,本身不支持直接播放 ws:// 协议的 FLV 实时流。
因此,解决方案的核心在于:在 React Native 中找到一个能够解码 ws:// 协议和 FLV 视频格式的播放器库。
2025年08月18日
本文基于Api13
很多的场景下,父组件需要触发子组件中的某个方法,来实现一些特定的逻辑,但是ArkUI是声明式UI,不能直接调用子组件中的方法,那么怎么去实现这个功能呢?
2025年08月18日
@Entry
@Component
struct TextDemo {
build() {
Column({space: 16}) {
Text('我是文本Text组件')
// 引用Resource资源。
// 资源引用类型可以通过$r创建Resource类型对象
// 文件位置为/resources/base/element/string.json。
Text($r('app.string.my_text'))
// 设置基线偏移量。
.baselineOffset(5)
// 设置字体
.fontSize(20)
.fontStyle(FontStyle.Italic)
.fontWeight(FontWeight.Medium)
// 边框设置
.border({ width: 1 })
.borderColor(Color.Red)
.borderRadius(20)
// 边距设置
.padding(5)
// 宽度设置
.width(200)
// Span只能作为Text和RichEditor组件的子组件显示文本内容。
// 可以在一个Text内添加多个Span来显示一段信息,例如产品说明书、承诺书等。
//
// 创建Span。
// Span组件需要写到Text组件内,单独写Span组件不会显示信息
// Text与Span同时配置文本内容时,Span内容覆盖Text内容。
Text('显示text') {
Span('显示 Span')
}
.padding(8)
.fontColor(Color.White)
.fontSize(20)
.backgroundColor(Color.Red)
.borderRadius(10)
// 设置文本装饰线及颜色。
// 通过decoration设置文本装饰线及颜色。
Text() {
Span('我是一名保安,')
.fontSize(16)
.fontColor(Color.Grey)
.decoration({ type: TextDecorationType.LineThrough, color: Color.Orange })
Span('保卫一方平安')
.fontColor(Color.Red)
.fontSize(16)
.fontStyle(FontStyle.Italic)
.decoration({ type: TextDecorationType.Underline, color: Color.Black })
Span(',最爱吃小熊饼干')
.fontSize(16)
.fontColor(Color.Blue)
.decoration({ type: TextDecorationType.Overline, color: Color.Red })
}
.maxLines(3)
.borderWidth(1)
.padding(10)
// 通过textCase设置文字一直保持大写或者小写状态。
Text() {
Span('I\'m a security guard')
.fontSize(12)
.textCase(TextCase.UpperCase)
}
.borderWidth(1)
.borderRadius(8)
.borderColor(Color.Red)
.padding(12)
// 添加事件。
// 由于Span组件无尺寸信息,事件仅支持添加点击事件onClick。
Text() {
Span('Keep one side safe')
.fontSize(12)
.textCase(TextCase.UpperCase)
.onClick(()=>{
console.info('我是一名保安,保卫一方平安')
})
}
.borderWidth(1)
.borderRadius(8)
.borderColor(Color.Red)
.padding(12)
// 自定义Text的Modifier
Text('自定义Text的Modifier')
.attributeModifier(new MyTextModifier())
// 自定义文本样式
// 通过textAlign属性设置文本对齐样式。
// 头部对齐(效果居左对齐)
Text('我是一名保安')
.textAlign(TextAlign.Start)
.attributeModifier(new MyTextModifier())
// 居中对齐
Text('保卫一方平安')
.fontSize(18)
.textAlign(TextAlign.Center)
.attributeModifier(new MyTextModifier())
// 尾部对齐(效果居右对齐)
Text('喜欢业主小丹')
.fontSize(20)
.fontColor(Color.Red)
.textAlign(TextAlign.End)
.attributeModifier(new MyTextModifier())
.padding(10)
// 通过textOverflow属性控制文本超长处理
// textOverflow需配合maxLines一起使用(默认情况下文本自动折行)。
// 自动折行
Text('我是一名保安,保卫一方平安,最爱吃小熊饼干,喜欢业主小丹。')
.attributeModifier(new MyTextModifier())
.textOverflow({ overflow: TextOverflow.None })
.maxLines(1)
.fontSize(12)
// 尾部截取...
Text('我是一名保安,保卫一方平安,最爱吃小熊饼干,喜欢业主小丹。')
.attributeModifier(new MyTextModifier())
.textOverflow({ overflow: TextOverflow.Ellipsis })
.maxLines(1)
.fontSize(12)
// 跑马灯效果
Text('我是一名保安,保卫一方平安,最爱吃小熊饼干,喜欢业主小丹。')
.attributeModifier(new MyTextModifier())
.textOverflow({ overflow: TextOverflow.MARQUEE })
.maxLines(1)
.fontSize(12)
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Start)
.alignItems(HorizontalAlign.Center)
}
}
2025年08月18日
这个欢迎页面是 Expo 在启动时默认显示的“Welcome to Expo”启动屏(Splash Screen),它通常在你的应用加载之前短暂显示。
1. 自定义 Splash Screen