本文最初发表于 Rails Designer
多年来 HTML 和 CSS 已经变得越来越好,这已经不是什么秘密了。虽然我已经开始喜欢编写 JavaScript,但只要我能逃脱惩罚,我就会这么做。
典型的手风琴是不需要 JavaScript 的东西之一。这种组件很容易使用 Vue、Alpine 和 Stimulus 等 JS 框架创建,但对于最基本的版本,您不需要它们中的任何一个。要让它们看起来不错,您只需要 CSS。
这个例子就是我想要的。您会发现它不一定是典型的常见问题解答列表样式。将其用于像这样的部分,效果也非常好。
本文来自:
- 基础知识;
- 增加视觉趣味;
- 使用鲜为人知的高级刺激功能来冷却渐进增强。
基础知识
最基本的版本,如下所示:
<details> <summary> Show me more </summary> This is more! </details> <details> <summary> Show me even more </summary> This is even more! </details>
它看起来是这样的:
查看原始文章以获取实例。 ?
这不是最漂亮的,但很有效!
详细信息/摘要属性
详细信息/摘要元素有一些有趣的技巧。
- 打开-属性;您可以设置此属性以默认打开一个或多个元素(它也用于下面的 CSS);
- 添加名称-属性;这仅允许打开一个 details 元素。当您打开其中一个时,所有其他都会自动关闭。
<details name="more" open> <summary> Show me more </summary> This is more! </details> <details name="more"> <summary> Show me even more </summary> This is even more! </details>
检查一下:
查看原始文章以获取实例。 ?
增加更多视觉趣味
默认值看起来不太好,所以让我们添加一些 CSS 以使内容更符合您的应用程序。关键部分是:
- [&::-webkit-details-marker]:隐藏;这将隐藏默认的 V 形;
- 组打开/详细信息:旋转 180;这将根据其状态旋转自定义 V 形图标。
使用 Tailwind CSS 的完整版本如下所示:
<details> <p>This is how it looks:</p> <blockquote> <p>View the original article to live examples. ?</p> </blockquote> <h2> Progressive enhancements </h2> <p>A <strong>toggle</strong> event is dispatched on the <strong>details</strong>-element whenever it state changes. So you could listen for it like this:<br> </p> <pre class="brush:php;toolbar:false">details.addEventListener("toggle", (event) => { if (details.open) { // Do something } else { // Do something else } });
你能用这个做什么?例如,将 details 元素的状态存储在浏览器的 localStorage 中,以便其始终保持不变。让我们用一个小的 Stimulus 控制器来看看:
// app/javascript/controllers/accordion_controller.js import { Controller } from "@hotwired/stimulus" export default class extends Controller { connect() { this.element.open = localStorage.getItem(this.element.id) === "open"; this.#attachEventListeners(); } // private #attachEventListeners() { this.element.addEventListener("toggle", (event) => { if (this.element.open) { localStorage.setItem(this.element.id, "open"); } else { localStorage.removeItem(this.element.id); } }); } }
需要另一个例子吗?定价页面上可以看到典型的常见问题解答列表样式。
使用纯 HTML 添加手风琴就是这么简单。您可以从非常简单的开始,然后使用 CSS 添加一些视觉兴趣,最后使用简单的 Stimulus 控制器进行一些渐进增强。
以上是无需 JavaScript 的简单手风琴的详细内容。更多信息请关注PHP中文网其他相关文章!

JavaScript在网站、移动应用、桌面应用和服务器端编程中均有广泛应用。1)在网站开发中,JavaScript与HTML、CSS一起操作DOM,实现动态效果,并支持如jQuery、React等框架。2)通过ReactNative和Ionic,JavaScript用于开发跨平台移动应用。3)Electron框架使JavaScript能构建桌面应用。4)Node.js让JavaScript在服务器端运行,支持高并发请求。

Python更适合数据科学和自动化,JavaScript更适合前端和全栈开发。1.Python在数据科学和机器学习中表现出色,使用NumPy、Pandas等库进行数据处理和建模。2.Python在自动化和脚本编写方面简洁高效。3.JavaScript在前端开发中不可或缺,用于构建动态网页和单页面应用。4.JavaScript通过Node.js在后端开发中发挥作用,支持全栈开发。

C和C 在JavaScript引擎中扮演了至关重要的角色,主要用于实现解释器和JIT编译器。 1)C 用于解析JavaScript源码并生成抽象语法树。 2)C 负责生成和执行字节码。 3)C 实现JIT编译器,在运行时优化和编译热点代码,显着提高JavaScript的执行效率。

JavaScript在现实世界中的应用包括前端和后端开发。1)通过构建TODO列表应用展示前端应用,涉及DOM操作和事件处理。2)通过Node.js和Express构建RESTfulAPI展示后端应用。

JavaScript在Web开发中的主要用途包括客户端交互、表单验证和异步通信。1)通过DOM操作实现动态内容更新和用户交互;2)在用户提交数据前进行客户端验证,提高用户体验;3)通过AJAX技术实现与服务器的无刷新通信。

理解JavaScript引擎内部工作原理对开发者重要,因为它能帮助编写更高效的代码并理解性能瓶颈和优化策略。1)引擎的工作流程包括解析、编译和执行三个阶段;2)执行过程中,引擎会进行动态优化,如内联缓存和隐藏类;3)最佳实践包括避免全局变量、优化循环、使用const和let,以及避免过度使用闭包。

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

Python和JavaScript在社区、库和资源方面的对比各有优劣。1)Python社区友好,适合初学者,但前端开发资源不如JavaScript丰富。2)Python在数据科学和机器学习库方面强大,JavaScript则在前端开发库和框架上更胜一筹。3)两者的学习资源都丰富,但Python适合从官方文档开始,JavaScript则以MDNWebDocs为佳。选择应基于项目需求和个人兴趣。


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

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

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

Dreamweaver Mac版
视觉化网页开发工具

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

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中