跳转到内容

Scroll:滚动容器

Scroll 构建滚动容器。本页包含可运行示例、完整属性及行为限制。

完整示例

先完成环境准备。下面是完整 main.go,执行 go run .

go
package main

import (
	"github.com/dxui-org/dxui"
	"log"
)

func main() {
	offset := dxui.Point{}
	app := dxui.NewApp(dxui.AppOptions{
		Title:      "Scroll",
		Width:      640,
		Height:     480,
		Background: dxui.RGBA(248, 250, 252, 255),
	})
	if err := app.Run(func() dxui.View {
		return dxui.Box(
			dxui.BoxProps{
				Gap: 16,
				Style: dxui.Style{
					Padding: dxui.Padding(24),
				},
			},
			dxui.Scroll(
				dxui.ScrollProps{
					Style: dxui.Style{
						Height: dxui.Px(240),
						Width:  dxui.Px(400),
					},
					Offset:    dxui.Some(offset),
					OnScroll:  dxui.Assign(&offset),
					Scrollbar: dxui.ScrollbarAlways,
				},
				dxui.Box(
					dxui.BoxProps{
						Gap: 12,
					},
					dxui.Label("Top"),
					dxui.Box(dxui.BoxProps{
						Style: dxui.Style{
							Height: dxui.Px(600),
							Shrink: dxui.NoShrink(),
						},
					}),
					dxui.Label("Bottom"),
				),
			),
		)
	}); err != nil {

		log.Fatal(err)
	}
}

参数与 API

go
func Scroll(props ScrollProps, child View) View
字段类型用途、默认与约束
Keystring同父级稳定唯一身份;默认空。动态列表使用业务 ID,勿用可变索引。
StyleStyle局部布局、绘制和文本样式;零值使用固有尺寸与主题默认。
TokenComponentToken组件主题条目;空值选择该组件默认。
StatesStateStyles真实交互状态的绘制补丁,不能伪造状态或改变布局。
PointerPointerBehavior默认 PointerAuto;PointerNone 排除整个子树的指针参与,不等同 Disabled。
AxisScrollAxis默认 ScrollVertical;启用轴无界测量子项。
InitialOffsetOption[Point]可选首次挂载偏移;后续修改不会重置内部位置。
OffsetOption[Point]Scroll/VirtualList 为可选受控 Point;浮层为可选语义的 MetricValue 间距。
ScrollbarScrollbarPolicy默认 ScrollbarAuto;Always 始终显示,Hidden 隐藏轨道但仍可滚动。
OnScrollfunc(Point)完整 Point 提案;未设置 Offset 时内部滚动不依赖此回调。

行为与边界

恰好一个 child。Axis 默认 ScrollVertical,可选 ScrollHorizontal/ScrollBoth;启用轴对子项无上限测量,因此视口需要确定大小。Offset 未设置时保留内部偏移,InitialOffset 只首次挂载使用;Some Offset 后 OnScroll 仅提案。ScrollbarHidden 仍允许滚轮。嵌套滚动在边界传递剩余量。没有惯性/平滑滚动;普通 Scroll 挂载全部内容。

所有组件共享身份、样式与指针规则。字段引用的枚举、结构体及源码注释见完整声明参考示例运行方式包含构建验证方法。