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

原生 HTML:手风琴
安德鲁·博恩 ・2019 年 1 月 4 日
在本文中,我们将重新审视并充分利用现代 CSS 属性来为您的手风琴增添光彩。我还将分享一个展示这些功能的演示实现。
基础知识:和
element 提供了一种在 HTML 中创建可切换部分的本机方法,其中
这是一个简单的例子:
<details> <summary>Read more</summary> Some text to be hidden. </details>
单击摘要可切换关联内容的可见性。无需 JavaScript!
增强功能:独有的开放行为
为了模仿传统的手风琴行为(一次仅打开一个部分),您可以在
<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; }
它是如何运作的
- 高度动画: interpolate-size 属性允许在 height: 0 (关闭)和 height: auto (打开)之间平滑过渡。不过,目前仅 Chrome 支持此功能。
- 可见性转换:转换行为属性确保可见性变化看起来无缝。
演示:将所有内容整合在一起
这是完整的实现:
浏览器支持
- interpolate-size: 目前仅在 Chrome 中支持。
- 转换行为:大多数现代浏览器都支持。
对于不支持的浏览器,动画会优雅地回退,并且手风琴在没有平滑过渡的情况下仍保持功能。
结论
和 elements 与现代 CSS 相结合,为创建交互式手风琴提供了一个轻量级且易于访问的解决方案。这些新的增强功能使它们对现代 Web 项目更具吸引力。尝试一下演示,让您的手风琴焕然一新、光彩夺目!
非常感谢您的阅读。如果您想在 Dev 之外与我联系,请来我的 twitter、bsky 和 linkedin 打个招呼吧?
以上是原生 HTML:重温手风琴的详细内容。更多信息请关注PHP中文网其他相关文章!

@keyframesandCSSTransitionsdifferincomplexity:@keyframesallowsfordetailedanimationsequences,whileCSSTransitionshandlesimplestatechanges.UseCSSTransitionsforhovereffectslikebuttoncolorchanges,and@keyframesforintricateanimationslikerotatingspinners.

我知道,我知道:有大量的内容管理系统选项可用,而我进行了几个测试,但实际上没有一个是一个,y&#039;知道吗?怪异的定价模型,艰难的自定义,有些甚至最终成为整个&

链接CSS文件到HTML可以通过在HTML的部分使用元素实现。1)使用标签链接本地CSS文件。2)多个CSS文件可通过添加多个标签实现。3)外部CSS文件使用绝对URL链接,如。4)确保正确使用文件路径和CSS文件加载顺序,优化性能可使用CSS预处理器合并文件。

选择Flexbox还是Grid取决于布局需求:1)Flexbox适用于一维布局,如导航栏;2)Grid适合二维布局,如杂志式布局。两者在项目中可结合使用,提升布局效果。

包含CSS文件的最佳方法是使用标签在HTML的部分引入外部CSS文件。1.使用标签引入外部CSS文件,如。2.对于小型调整,可以使用内联CSS,但应谨慎使用。3.大型项目可使用CSS预处理器如Sass或Less,通过@import导入其他CSS文件。4.为了性能,应合并CSS文件并使用CDN,同时使用工具如CSSNano进行压缩。

是的,youshouldlearnbothflexboxandgrid.1)flexboxisidealforone-demensional,flexiblelayoutslikenavigationmenus.2)gridexcelstcelsintwo-dimensional,confffferDesignssignssuchasmagagazineLayouts.3)blosebothenHancesSunHanceSlineHancesLayOutflexibilitibilitibilitibilitibilityAnderibilitibilityAndresponScormentilial anderingStruction

重构自己的代码看起来是什么样的?约翰·瑞亚(John Rhea)挑选了他写的一个旧的CSS动画,并介绍了优化它的思维过程。

CSSanimationsarenotinherentlyhardbutrequirepracticeandunderstandingofCSSpropertiesandtimingfunctions.1)Startwithsimpleanimationslikescalingabuttononhoverusingkeyframes.2)Useeasingfunctionslikecubic-bezierfornaturaleffects,suchasabounceanimation.3)For


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。