14

使用 HTML 创建可折叠的交互式组件

Calm
·2小时前

如果你想创建一个可折叠的交互式组件,使用 <details> 元素即可,一行 JavaScript 也不用写。

image.png

<details> 组件定义了一个可折叠的容器,它的第一个元素必须是 <summary> 元素,代表标题,用户点击它可以控制区域的显示和隐藏。后面的元素随便写,它们会出现在打开的面板中。

ts
<details>   <summary>我是标题</summary>   <p>     我是具体的内容,我是第一段。   </p> </details>

如果你想让 <details> 默认打开,添加 open 属性。

ts
<details open>   <summary>我是标题</summary>   <p>     我是具体的内容,我是第一段。   </p> </details>

如果把多个 <details> 放在一起,并且给它们设置相同的 name 属性,就可以形成联动效果。点击其中一个,其余面板自动关闭。

ts
<details open name="demo">   <summary>我是标题 1</summary>   <p>     我是具体的内容,我是第一段。   </p> </details> <details name="demo">   <summary>我是标题 2</summary>   <p>     我是具体的内容,我是第二段。   </p> </details> <details name="demo">   <summary>我是标题 3</summary>   <p>     我是具体的内容,我是第三段。   </p> </details>

默认样式比较简陋,使用 CSS 给它们化化妆。

ts
// details {   border: 1px solid #ccc;   padding: 10px;   margin: 10px;   border-radius: 10px;   overflow: hidden; } summary {   cursor: pointer; } details[open] {   padding: 0; } details[open] summary {   border-bottom: 1px solid #ccc;   padding: 10px;   background: skyblue; } details > p {   padding: 10px; }

640.gif

Vue.Ge 全栈开发交流平台

回复讨论
0

登录后可参与回复讨论。

当前还没有回复,欢迎成为第一个参与讨论的人。

文明发言,理性讨论