一组垂直堆叠的交互式标题,每个标题都会显示一个相关的内容部分。
import * as React from "react";import { Accordion } from "radix-ui";import classNames from "classnames";import { ChevronDownIcon } from "@radix-ui/react-icons";import "./styles.css";const AccordionDemo = () => (<Accordion.Root className="AccordionRoot" type="single" defaultValue="item-1" collapsible ><Accordion.Item className="AccordionItem" value="item-1"><AccordionTrigger>Is it accessible?</AccordionTrigger><AccordionContent>Yes. It adheres to the WAI-ARIA design pattern.</AccordionContent></Accordion.Item><Accordion.Item className="AccordionItem" value="item-2"><AccordionTrigger>Is it unstyled?</AccordionTrigger><AccordionContent>Yes. It's unstyled by default, giving you freedom over the look andfeel.</AccordionContent></Accordion.Item><Accordion.Item className="AccordionItem" value="item-3"><AccordionTrigger>Can it be animated?</AccordionTrigger><Accordion.Content className="AccordionContent"><div className="AccordionContentText">Yes! You can animate the Accordion with CSS or JavaScript.</div></Accordion.Content></Accordion.Item></Accordion.Root>);const AccordionTrigger = React.forwardRef(({ children, className, ...props }, forwardedRef) => (<Accordion.Header className="AccordionHeader"><Accordion.Trigger className={classNames("AccordionTrigger", className)} {...props} ref={forwardedRef} >{children}<ChevronDownIcon className="AccordionChevron" aria-hidden /></Accordion.Trigger></Accordion.Header>),);const AccordionContent = React.forwardRef(({ children, className, ...props }, forwardedRef) => (<Accordion.Content className={classNames("AccordionContent", className)} {...props} ref={forwardedRef} ><div className="AccordionContentText">{children}</div></Accordion.Content>),);export default AccordionDemo;
完整的键盘导航。
支持横向/纵向方向。
支持从右到左的方向。
可以展开一个或多个项目。
可以是受控或非受控的。
从命令行安装组件。
导入所有部分并将其组合在一起。
包含手风琴的所有部分。
包含可折叠部分的所有部分。
包裹一个 Accordion.Trigger
。 使用 asChild
属性将它更新为适合您页面的标题级别。
切换其关联项目的折叠状态。 应嵌套在 Accordion.Header
内部。
包含项目的可折叠内容。
使用 defaultValue
属性定义默认打开的项目。
使用 collapsible
属性允许所有项目关闭。
将 type
属性设置为 multiple
以启用同时打开多个项目。
您可以添加额外的装饰元素,例如尖头,当项目打开时旋转它。
使用 orientation
属性创建一个横向手风琴。
使用 --radix-accordion-content-width
和/或 --radix-accordion-content-height
CSS 变量来动画内容打开/关闭时的大小: