---
name: skyline-components
description: Skyline 组件开发技能。涵盖 scroll-view 及其增强模式(列表/嵌套滚动)、swiper 高级特性、表单组件、图片/文本组件、半屏可拖拽组件、共享元素动画等。适用于需要开发滚动列表、轮播、表单输入、页面过渡动画等场景。
---
# Skyline 组件开发指南
## 适用场景
- 开发滚动列表/瀑布流/网格布局
- 实现下拉刷新、下拉二级功能
- 使用嵌套滚动模式
- 开发轮播图、卡片切换效果
- 处理表单输入(input/textarea)
- 实现共享元素/页面转场动画
- 开发半屏可拖拽面板
## 组件支持概览
### 完全支持的高频组件
| 组件 | Skyline 特性增强 |
|------|-----------------|
| scroll-view | type 模式、worklet 回调、嵌套滚动、下拉二级 |
| swiper | layout-type 堆叠/卡片、indicator 动画类型 |
| text | overflow 文本溢出处理、max-lines |
| image | fade-in 渐显、默认懒加载 |
| input/textarea | worklet 键盘回调、输入法事件 |
| view/button | 完全支持 |
### Skyline 新增组件
| 组件 | 说明 |
|------|------|
| list-view | 列表布局容器 |
| grid-view | 网格/瀑布流容器 |
| sticky-section/sticky-header | 吸顶布局 |
| nested-scroll-header/body | 嵌套滚动 |
| draggable-sheet | 半屏可拖拽 |
| share-element | 共享元素动画 |
| snapshot | 截图组件 |
| span | 内联混排 |
## 文档索引
根据需求快速定位(路径相对于 `references/`):
| 我想要... | 查阅文档 |
|-----------|----------|
| 实现长列表/虚拟列表 | `scroll/scroll-view.md` |
| 下拉刷新/下拉二级 | `scroll/scroll-view.md#下拉刷新` |
| 嵌套滚动 | `scroll/nested-scroll.md` |
| 列表/网格布局 | `scroll/list-grid-view.md` |
| 吸顶效果 | `scroll/sticky.md` |
| 半屏拖拽面板 | `scroll/draggable-sheet.md` |
| 轮播图/卡片效果 | `layout/swiper.md` |
| 文本处理 | `media/text.md` |
| 图片显示 | `media/image.md` |
| 输入框开发 | `form/input.md` |
| 共享元素动画 | `special/share-element.md` |
| 截图功能 | `special/snapshot.md` |
## 强制规则
### MUST(必须遵守)
1. **scroll-view 必须指定 type**:Skyline 下使用 scroll-view 必须设置 `type` 属性
```html
...
...
```
2. **横向滚动需 enable-flex**:横向滚动需同时开启 `enable-flex` 以兼容 WebView
```html
```
3. **文本必须用 text 组件**:内联文本只能用 `` 组件
```html
Hello World
Hello World
```
4. **list-view/grid-view 必须在 custom 模式**:
```html
...
```
5. **嵌套滚动必须使用 nested 模式**:
```html
...
...
```
### NEVER(禁止行为)
1. **NEVER** 在 scroll-view 外直接放置 list-view/grid-view
2. **NEVER** 在 list-view 中使用非直接子节点列表项
3. **NEVER** 在 Skyline 使用 web-view/editor/movable-view 组件
4. **NEVER** 依赖 image 的 WebView-only 裁剪模式(top/bottom/center/left/right)
## scroll-view 核心用法
### type 属性详解
| type 值 | 说明 | 使用场景 |
|---------|------|----------|
| list | 列表模式,按需渲染直接子节点 | 普通长列表 |
| custom | 自定义模式,支持 list-view/grid-view/sticky | 复杂布局 |
| nested | 嵌套模式,处理父子 scroll-view 联动 | Tab + 列表 |
### 基础列表模式
```html
{{item.name}}
```
### 下拉刷新
```html
自定义刷新区域
```
```javascript
Page({
data: { refreshing: false },
onRefresh() {
this.setData({ refreshing: true })
// 加载数据...
setTimeout(() => {
this.setData({ refreshing: false })
}, 1000)
}
})
```
### 嵌套滚动模式
```html
顶部固定区域
```
### Worklet 滚动回调
```html
```
```javascript
Page({
onScrollUpdate(e) {
'worklet'
// 在 UI 线程执行,无延迟
console.log(e.detail.scrollTop)
}
})
```
## swiper 增强特性
### 布局类型
```html
...
...
...
```
### 指示器样式
```html
```
| indicator-type | 效果 |
|----------------|------|
| normal | 默认圆点 |
| worm | 蠕虫动画 |
| expand | 展开动画 |
| jump | 跳跃动画 |
| slide | 滑动动画 |
| scale | 缩放动画 |
## text 组件
### 文本溢出处理
```html
这是一段很长的文本内容...
这是一段很长的文本内容...
这是一段很长的文本内容...
```
### 内联混排
```html
图文混排内容
```
## input 组件
### Skyline 特有事件
```html
```
```javascript
Page({
onKeyboardHeight(e) {
'worklet'
// UI 线程回调,可用于同步调整布局
const { height, pageBottomPadding } = e.detail
}
})
```
## draggable-sheet 半屏组件
```html
```
```javascript
Page({
onReady() {
this.createSelectorQuery()
.select('.sheet')
.node()
.exec(res => {
const sheetContext = res[0].node
sheetContext.scrollTo({
size: 0.7,
animated: true,
duration: 300
})
})
}
})
```
## share-element 共享元素
### 页面间共享元素动画
源页面:
```html
```
目标页面:
```html
```
### 属性说明
| 属性 | 说明 |
|------|------|
| key | 页面内唯一标识,源和目标必须匹配 |
| transform | 是否启用动画 |
| transition-on-gesture | 手势返回时是否动画 |
| rect-tween-type | 动画轨迹(materialRectArc/linear) |
## 性能优化
### 列表性能
1. **使用 list 模式**:确保只渲染可见区域
```html
```
2. **指定 cache-extent**:预渲染视口外区域,优化滚动体验
3. **使用 list-item 属性**:启用样式共享
```html
```
### swiper 性能
```html
```
## 组件差异速查
| 组件 | WebView | Skyline | 备注 |
|------|---------|---------|------|
| scroll-view | 无 type | 必须 type | Skyline 增强 |
| text | space 属性 | overflow/max-lines | 不同特性 |
| image | 9种裁剪模式 | 5种缩放模式 | 裁剪模式仅 WebView |
| swiper | snap-to-edge | layout-type/indicator-type | 不同特性 |
| input | placeholder-class | worklet 回调 | 不同特性 |
## 相关技能
| 场景 | 推荐技能 | 说明 |
|------|----------|------|
| 滚动 API | `skyline-scroll-api` | ScrollViewContext 接口 |
| 动画开发 | `skyline-worklet` | Worklet 动画系统 |
| 样式开发 | `skyline-wxss` | WXSS 支持情况 |
| 路由转场 | `skyline-route` | 页面转场动画 |
| 兼容性诊断 | `skyline-diagnostics` | 自动检查组件兼容性问题 |
## References 目录结构
```
references/
├── form/
│ └── input.md
├── gesture/
│ ├── gesture-negotiation.md
│ └── gesture-system.md
├── layout/
│ └── swiper.md
├── media/
│ ├── image.md
│ └── text.md
├── scroll/
│ ├── draggable-sheet.md
│ ├── list-grid-view.md
│ ├── nested-scroll.md
│ ├── scroll-view.md
│ └── sticky.md
└── special/
├── share-element.md
└── snapshot.md
```