目录
原生 HTML:手风琴
安德鲁·博恩 ・2019 年 1 月 4 日
首页 web前端 css教程 原生 HTML:重温手风琴

原生 HTML:重温手风琴

Jan 07, 2025 am 06:45 AM

六年前,我探索了原生的<细节>和<摘要>创建可访问的手风琴的元素。从那时起,网络平台不断发展,为这些元素引入了令人兴奋的新功能,例如独家开放行为流畅动画

Native HTML: Accordion Revisited

原生 HTML:手风琴

安德鲁·博恩 ・2019 年 1 月 4 日

#html #css #a11y #设计

在本文中,我们将重新审视<细节>并充分利用现代 CSS 属性来为您的手风琴增添光彩。我还将分享一个展示这些功能的演示实现。

基础知识:<详细信息>和<摘要>

element 提供了一种在 HTML 中创建可切换部分的本机方法,其中

充当可点击标签的元素。这使得您可以轻松地以最小的努力创建披露小部件。

这是一个简单的例子:

<details>
  <summary>Read more</summary>
  Some text to be hidden. 
</details>
登录后复制

单击摘要可切换关联内容的可见性。无需 JavaScript!

增强功能:独有的开放行为

为了模仿传统的手风琴行为(一次仅打开一个部分),您可以在

上使用 name 属性。元素。当元素具有相同的名称,打开一个元素会自动关闭组中的其他元素。

<details name="exclusive">
  <summary>Section 1</summary>
  <p>Content for section 1.</p>
</details>
<details name="exclusive">
  <summary>Section 2</summary>
  <p>Content for section 2.</p>
</details>
登录后复制

此行为是本机行为,并且可以在现代浏览器中无缝运行!

使用 CSS 添加平滑动画

为了使打开和关闭过渡更加平滑,我们可以使用现代 CSS 属性,例如 interpolate-size 和 transition-behavior。

主要特性

  • interpolate-size:允许在固有尺寸(如自动)和固定尺寸之间进行动画处理。 此属性目前仅在 Chrome 中受支持。
  • transition-behavior:当设置为允许离散时,通常无法进行动画处理的属性(如可见性和显示)会等待而不是立即更新。

样式示例

这是演示中使用的 CSS 的完整示例:

details {
  interpolate-size: allow-keywords;
  overflow: clip;
  margin-top: 0.125em;
  border: 1px solid #dddddd;
  background: #ffffff;
  color: #333333;
  border-radius: 3px;
}

details summary {
  display: block;
  cursor: pointer;
  position: relative;
  padding: 0.5em 0.5em 0.5em 0.7em;
  background: #ededed;
  color: #2b2b2b;
  border-radius: 3px 3px 0 0;
}

details:not([open]) summary:hover,
details:not([open]) summary:focus {
  background: #f6f6f6;
  color: #454545;
}

details[open] summary {
  outline: 1px solid #003eff;
  background: #007fff;
  color: #ffffff;
}

details[open]::details-content {
  height: auto;
}

details::details-content {
  height: 0;
  overflow-y: clip;
  transition: content-visibility 475ms allow-discrete, height 475ms;
}

details main {
  padding: 1em 2.2em;
}
登录后复制

它是如何运作的

  1. 高度动画: interpolate-size 属性允许在 height: 0 (关闭)和 height: auto (打开)之间平滑过渡。不过,目前仅 Chrome 支持此功能。
  2. 可见性转换:转换行为属性确保可见性变化看起来无缝。

演示:将所有内容整合在一起

这是完整的实现:

浏览器支持

  • interpolate-size: 目前仅在 Chrome 中支持。
  • 转换行为:大多数现代浏览器都支持。

对于不支持的浏览器,动画会优雅地回退,并且手风琴在没有平滑过渡的情况下仍保持功能。

结论

和<摘要> elements 与现代 CSS 相结合,为创建交互式手风琴提供了一个轻量级且易于访问的解决方案。这些新的增强功能使它们对现代 Web 项目更具吸引力。尝试一下演示,让您的手风琴焕然一新、光彩夺目!

非常感谢您的阅读。如果您想在 Dev 之外与我联系,请来我的 twitter、bsky 和 ​​linkedin 打个招呼吧?

以上是原生 HTML:重温手风琴的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1657
14
CakePHP 教程
1415
52
Laravel 教程
1309
25
PHP教程
1257
29
C# 教程
1229
24
Google字体可变字体 Google字体可变字体 Apr 09, 2025 am 10:42 AM

我看到Google字体推出了新设计(Tweet)。与上一次大型重新设计相比,这感觉更加迭代。我几乎无法分辨出区别

如何使用HTML,CSS和JavaScript创建动画倒计时计时器 如何使用HTML,CSS和JavaScript创建动画倒计时计时器 Apr 11, 2025 am 11:29 AM

您是否曾经在项目上需要一个倒计时计时器?对于这样的东西,可以自然访问插件,但实际上更多

HTML数据属性指南 HTML数据属性指南 Apr 11, 2025 am 11:50 AM

您想了解的有关HTML,CSS和JavaScript中数据属性的所有信息。

如何通过CSS选择第一个类名为item的子元素? 如何通过CSS选择第一个类名为item的子元素? Apr 05, 2025 pm 11:24 PM

在元素个数不固定的情况下如何通过CSS选择第一个指定类名的子元素在处理HTML结构时,常常会遇到元素个数不�...

为什么Flex布局中的紫色斜线区域会被误认为是'溢出空间”? 为什么Flex布局中的紫色斜线区域会被误认为是'溢出空间”? Apr 05, 2025 pm 05:51 PM

关于Flex布局中紫色斜线区域的疑问在使用Flex布局时,你可能会遇到一些令人困惑的现象,比如在开发者工具(d...

我们如何创建一个在SVG中生成格子呢模式的静态站点 我们如何创建一个在SVG中生成格子呢模式的静态站点 Apr 09, 2025 am 11:29 AM

格子呢是一块图案布,通常与苏格兰有关,尤其是他们时尚的苏格兰语。在Tar​​tanify.com上,我们收集了5,000多个格子呢

使Sass更快的概念证明 使Sass更快的概念证明 Apr 16, 2025 am 10:38 AM

在一个新项目开始时,Sass汇编发生在眼睛的眨眼中。感觉很棒,尤其是当它与browsersync配对时,它重新加载

在前端开发中,如何使用CSS和JavaScript实现类似Windows 10设置界面的探照灯效果? 在前端开发中,如何使用CSS和JavaScript实现类似Windows 10设置界面的探照灯效果? Apr 05, 2025 pm 10:21 PM

在前端开发中如何实现类似Windows...

See all articles