Skip to content

Box

Box 是基础容器组件,支持多态 componentsxroundedshadow,以及元素范围内的 loading/modal 遮罩层。

Basic

Polymorphic Component

通过 component 可以让 Box 渲染为不同语义标签(例如 sectionbutton)。

Rounded + Shadow

Box 支持 roundedshadow 预设,也支持自由 CSS 值。

Loading + Modal

loadingmodal 都是元素范围内遮罩,不是全屏。

Long Press

onLongPresslongPressDelay 可用于长按交互(鼠标按住或触摸按住):

常见场景

基础布局

用于组织页面结构、控制间距、对齐和响应式布局。

组合嵌套

复杂页面推荐拆成多个 Box 组合,避免在单个容器中堆叠过多职责。

响应式适配

可通过尺寸、间距、classNamesx 处理不同屏幕下的布局变化。

Usage

tsx
import { Box } from "@ldkj/web-ui";

export function Example() {
  return (
    <Box
      component="section"
      rounded="xl"
      shadow="lg"
      className="border p-4"
      loading={false}
      modal={false}
      sx={{ "&:hover": { backgroundColor: "#f8fafc" } }}
    >
      Content
    </Box>
  );
}

API

属性说明类型默认值
component渲染标签或组件React.ElementType"div"
className追加类名string-
class历史类名别名string-
style内联样式React.CSSProperties-
sxCSS-in-JS 样式入口SxProps-
rounded圆角'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'full' | number | string-
shadow阴影'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'inner' | string-
onLongPress长按触发回调() => void-
longPressDelay长按触发延时(毫秒)number500
loading是否显示 loading 遮罩booleanfalse
loadingContent自定义 loading 内容React.ReactNode内置 spinner
modal是否显示元素级 modalbooleanfalse
modalContentmodal 内容节点React.ReactNode-
onModalMaskClick点击 modal 遮罩回调MouseEventHandler<HTMLDivElement>-
children内容React.ReactNode-
...rest原生属性透传(含 aria-*/data-*/事件)React.ComponentPropsWithoutRef<T>-

事件优先级:当你显式传入 onMouseDownonMouseUponMouseLeaveonTouchStartonTouchEnd 时,会覆盖 onLongPress 自动注入的对应处理器。

行为规则 / 优先级

  • 布局组件只处理结构、尺寸和对齐,不承载业务状态。
  • classNameclass 用于追加类名;如同时传入原生 style,内联样式会按 React 规则覆盖同名 CSS。
  • 复杂内容优先通过组合能力传入,避免在组件内部硬编码业务文案。
  • Box 的默认值应服务于最常见场景,特殊场景通过显式 props 覆盖。

Notes

  • 布局层尽量保持语义清晰,避免把业务点击行为隐藏在纯布局组件里。
  • 文档 demo 展示的是推荐组合方式;生产代码中可按业务密度调整间距和尺寸。
  • 修改组件能力时需要同步更新本页 Demo、Usage、API 与行为规则。