sard-uniapp
Version:
sard-uniapp 是一套基于 Uniapp + Vue3 框架开发的兼容多端的 UI 组件库
142 lines (87 loc) • 4.93 kB
Markdown
---
nav: 组件
title: NoticeBar
subtitle: 公告栏
group: 数据展示
---
## 介绍
用于循环播放展示一组消息通知。
## 引入
```ts
import NoticeBar from 'sard-uniapp/components/notice-bar/notice-bar.vue'
```
## 代码演示
### 基础使用
公告栏的内容长度溢出时会自动开启滚动播放。
@code('${DEMO_PATH}/notice-bar/demo/Basic.vue')
### 异步数据
`NoticeBar` 组件是通过 `animation` 来实现高效的滚动动画的,
会根据内容宽度动态设置动画时长,以实现固定速率滚动。
@info
在 <sup>1.20</sup>之前, 如果 `NoticeBar` 挂载时机比插槽内容靠前,即插槽内容数据需要通过接口异步获取再渲染的,
需要手动调用 `update` 方法来更新动画时长。
在 <sup>1.20</sup>之后,会监听内容尺寸变化,自动调用更新方法,无需手动调用。
@endinfo
@code('${DEMO_PATH}/notice-bar/demo/Async.vue')
### 强制滚动
设置 `scrollable="always"` 属性时,无论公告栏内容多少都会滚动。
@code('${DEMO_PATH}/notice-bar/demo/Scrollable.vue')
### 强制不滚动
设置 `scrollable="never"` 属性时,无论公告栏内容多少都不会滚动。
@code('${DEMO_PATH}/notice-bar/demo/UnScrollable.vue')
### 多行展示
默认文本不换行,设置 `wrap` 可以使其换行。
@code('${DEMO_PATH}/notice-bar/demo/Wrap.vue')
### 自定义左边图标
设置 `leftIcon` 插槽可以自定义左边的图标;或者设置 `hideLeftIcon` 属性隐藏左侧图标。
@code('${DEMO_PATH}/notice-bar/demo/LeftIcon.vue')
### 可关闭的
设置 `closable` 属性可以在右边显示关闭按钮。
@code('${DEMO_PATH}/notice-bar/demo/Closable.vue')
### 可链接的
设置 `linkable` 属性可以在右边显示箭头。
@code('${DEMO_PATH}/notice-bar/demo/Linkable.vue')
### 自定义右边图标
设置 `rightIcon` 插槽可以修改右边的关闭按钮图标或者箭头图标。
@code('${DEMO_PATH}/notice-bar/demo/RightIcon.vue')
### 自定义样式
通过 `color` 属性设置文本颜色,通过 `background` 属性设置背景色。
@code('${DEMO_PATH}/notice-bar/demo/Style.vue')
### 垂直滚动
搭配 `NoticeBar` 和 `Swipe` 组件,可以实现垂直滚动的效果。
@code('${DEMO_PATH}/notice-bar/demo/Vertical.vue')
## API
### NoticeBarProps
| 属性 | 描述 | 类型 | 默认值 |
| -------------- | --------------------------------------------------- | ----------------------------- | ------ |
| root-class | 组件根元素类名 | string | - |
| root-style | 组件根元素样式 | StyleValue | - |
| color | 自定义颜色 | string | - |
| background | 自定义背景色 | string | - |
| hide-left-icon | 隐藏左边图标 | boolean | false |
| delay | 挂载后,延迟动画时间(单位 ms),避免进入页面时卡顿 | number | 1000 |
| speed | 滚动速率 (px/s) | number | 50 |
| scrollable | 是否开启滚动播放,内容长度溢出时默认开启 | 'auto' \| 'never' \| 'always' | 'auto' |
| wrap | 是否开启文本换行 | boolean | false |
| closable | 是否显示关闭按钮 | boolean | false |
| linkable | 是否展示右侧箭头 | boolean | false |
| visible | 是否显示公告栏 | boolean | true |
| vertical | 搭配 `Swipe` 组件实现垂直滚动 | boolean | false |
### NoticeBarSlots
| 插槽 | 描述 | 属性 |
| ---------- | ------------------ | ---- |
| default | 自定义默认内容 | - |
| left-icon | 自定义左侧图标内容 | - |
| right-icon | 自定义右侧图标内容 | - |
### NoticeBarEmits
| 事件 | 描述 | 类型 |
| ----- | ------------------ | -------------------- |
| click | 点击公告栏时触发 | (event: any) => void |
| close | 点击关闭按钮时触发 | () => void |
### NoticeBarExpose
| 属性 | 描述 | 类型 |
| ------ | ------------ | ---------- |
| update | 重置滚动时长 | () => void |
## 主题定制
### CSS 变量
@code('./variables.scss#variables')