我最近正在查看最新的 CSSWG 会议记录(您可以在 W3C.org 订阅它们),发现了一些我想记下来以便日后参考的有趣内容。该小组讨论了 CSS 值、CSS 缓动和选择器模块,但我真正关注的是为 CSS 添加触发延迟,例如用于悬停、长按和焦点状态。
这个想法源于一个 OpenUI 提案,这个小组也为我们带来了 弹出框 API 和 可自定义选择元素 这样的东西。如果我理解正确的话,这个概念是,只要有人将鼠标悬停、点击或聚焦在某个元素上(例如 <button>
)一定时间,我们就可以触发一些操作。工具提示就是一个完美的例子。根据推理,将鼠标悬停在触发元素上是一种表示兴趣的行为,作为 Web 作者,我们可以对这种兴趣做点什么,比如显示工具提示。
哇,对吧?!一直以来都有关于 CSS 侵占 JavaScript 地盘的讨论(讽刺的是,你不觉得吗?)。根据交互触发事件是我唯一使用 JavaScript 做的事情。正如会议记录中所记录的那样,CSSWG 方面对此也毫不含糊。
那么。这是否应该放在 CSS 中?或者应该放在其他地方?这种方法是否合理?还有更好的想法吗?我最关心的是最后一个问题。
[…]
另一个问题;这是否应该放在 CSS 或 HTML 中……也许这只是一个 JavaScript 功能?在 JS 中,你可以确定 MQ 状态并进行更改,因此它不一定要放在 CSS 中。
不久之后
当你在说话的时候;我一直在想一件事;开发人员是否应该自定义延迟?延迟的最初用例是悬停不应该立即发生。但如果我们不允许自定义,我们可以与平台延迟长度保持一致。
但我们有一个很好的理由可以证明我们很多人都已经使用 CSS 动画 (animation-delay
) 和过渡 (transition-delay
) 这么做了。有时甚至使用通用选择器或 prefers-*
查询在全局范围内应用它们。
当考虑如何定义这些值时,事情变得更加复杂。是显式延迟 (800ms
)、通用关键字 (none
/short
/medium
/long
)、自定义属性、伪类……还是其他东西?我很高兴有如此聪明的人在研究这些问题。
我认为这里使用时间值比较好。CSS 是一个很好的放置位置。我们拥有所有的人体工程学。这是一个合适的声明式位置。
无论最终情况如何
我认为这听起来很合理,我想探索一下。我不确定这是否是最终的形状,但这个空间对我来说似乎很有用。