”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 让每一秒都有一个主题! ⏰ 使用 @property 和 hsl()

让每一秒都有一个主题! ⏰ 使用 @property 和 hsl()

发布于2024-11-04
浏览:383

Make Every Second have a Theme! ⏰ using @property and hsl()

?介绍

您是否曾经想过创建一个不仅仅是报时的时钟?如果每一秒都会带来一个全新的主题怎么办?借助 CSS @property 和 hsl() 颜色操作的强大功能,您可以!在本文中,我将引导您完成一个动态且具有视觉吸引力的“主题时钟”的创建过程,该时钟每秒都会改变其颜色(又称其主题),为每个时刻带来新的生命!.


?️ 概念

“主题时钟”背后的想法简单而迷人:随着时间的流逝,时钟的外观会发生变化。我们将利用 CSS 自定义属性来动画颜色的色调(嗯,这是一个以度为单位的角度)并每秒更新时钟的主题(也每分钟和每小时)。结果呢?一个无缝、不断变化的时钟,既迷人又实用。


?演示和代码

嗯,这是“主题时钟”的完整代码。我将对其进行分解,以了解每个部分如何对整体效果做出贡献。

?分解代码

1.CSS自定义属性和@property:这个主题变换时钟背后的魔力在于CSS自定义属性和@property规则的使用。我们定义一个自定义属性 --angle,它使用 hsl() 函数控制时钟颜色的色调。通过使用 @keyframes 规则对该属性进行 60 秒的动画处理,我们实现了连续的颜色过渡。

  • 自定义属性--angle:控制hsl()颜色的色调,动态改变主题。并且还使自定义属性可设置动画,从而实现平滑过渡。
  • CSS @keyframes anim:此动画在 60 秒内将色调值从 0 旋转到 360,循环遍历整个色谱。

2.动态主题切换:切换按钮允许用户在浅色和深色主题之间切换。单击按钮会在 html 元素上切换深色类,从而改变时钟的外观。

  • 亮/暗模式切换:可以使用动态更新时钟外观的按钮切换主题。
  • 容器旋转动画:主题变化时时钟容器旋转,添加微妙的过渡效果。

3.时钟和时间更新:代码的 JavaScript 部分处理时钟指针和数字时间显示的更新。 setTime 函数每秒重新计算时针、分针和秒针的位置,同时还更新时间和日期显示。

  • "scale" 功能:将当前时间转换为对应钟针旋转的度数。

- 实时更新:时钟指针和数字时间每秒更新以匹配当前时间。

?将所有部分组合在一起

通过结合 CSS 自定义属性、hsl() 颜色操作和 @property 规则的强大功能,我们创建了一个时钟,它不仅可以显示时间,而且其外观也会随着每一秒的流逝而变化。这个项目是一个很好的例子,说明了如何使用 CSS 以最少的 JavaScript 创建交互式且具有视觉吸引力的 Web 元素。


点赞❤️,关注更多alishata128

版本声明 本文转载于:https://dev.to/alishata128/make-every-second-have-a-theme-using-property-and-hsl-4n55?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 在数据密集型应用程序中扩展 MySQL 的最佳方法是什么?
    在数据密集型应用程序中扩展 MySQL 的最佳方法是什么?
    MySQL 扩展解决方案:综合指南MySQL 提供各种扩展解决方案来满足数据库密集型应用程序不断增长的需求。了解这些解决方案之间的差异可以显着优化扩展策略。集群:NDB Cluster vs. Continuous Sequoia vs. Federation集群涉及在出现的多个服务器之间分发数据作...
    编程 发布于2024-11-15
  • 为什么 `margin-left: auto` 和 `margin-right: auto` 不使用 `position:absolute` 将元素居中?
    为什么 `margin-left: auto` 和 `margin-right: auto` 不使用 `position:absolute` 将元素居中?
    使用 CSS 使元素居中:绝对定位与相对定位尝试使用 CSS 使元素居中时,您可能会遇到问题其中 margin-left: auto 和 margin-right: auto 似乎对position:absolute无效。然而,当应用position:relative时,这些边距确实起作用。这种差异...
    编程 发布于2024-11-15
  • 如何调试使用 PDO 执行的 SQL 查询?
    如何调试使用 PDO 执行的 SQL 查询?
    调试 PDO 数据库查询:解锁最终查询现代 PHP 脚本通常依赖于准备语句对象 (PDO) 进行数据库交互。虽然 PDO 提供了卓越的性能和安全性,但它在调试语法错误时提出了挑战。与串联 SQL 查询不同,PDO 分多个阶段执行查询,因此很难观察发送到数据库的最终查询。有没有办法捕获并记录 PDO ...
    编程 发布于2024-11-15
  • 为什么我的 CakePHP 网站显示空白页面并且我的 Apache 错误日志报告“分段错误 (11)”?
    为什么我的 CakePHP 网站显示空白页面并且我的 Apache 错误日志报告“分段错误 (11)”?
    Apache错误日志提示“Segmentation Failure”遇到无法通过CakePHP调试的空白白页时,查阅Apache错误.log 可能会显示消息,指示子进程以“分段错误 (11)”信号退出。此错误表示访问内存时出现问题。了解分段错误当程序尝试访问已分配内存段之外的内存时,会发生分段错误。...
    编程 发布于2024-11-15
  • 如何使用 MySQLdb 和 MySQL Connector/Python 在 Python 中重新连接 MySQL 客户端?
    如何使用 MySQLdb 和 MySQL Connector/Python 在 Python 中重新连接 MySQL 客户端?
    重新连接 MySQL 客户端与 MySQLdb在数据库连接领域,保持持久连接对于不间断的数据访问至关重要。 MySQLdb 是一个用于连接 MySQL 数据库的流行 Python 库,它提供了一种在连接失败时自动重新连接客户端的方法。在以前的版本中启用自动重新连接在早期版本的 MySQLdb 中,可...
    编程 发布于2024-11-15
  • 如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    如何在 PHP 中组合两个关联数组,同时保留唯一 ID 并处理重复名称?
    在 PHP 中组合关联数组在 PHP 中,将两个关联数组组合成一个数组是一项常见任务。考虑以下请求:问题描述:提供的代码定义了两个关联数组,$array1和$array2。目标是创建一个新数组 $array3,它合并两个数组中的所有键值对。 此外,提供的数组具有唯一的 ID,而名称可能重合。要求是构...
    编程 发布于2024-11-15
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-15
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-15
  • 为什么我的图像下方有一个看不见的边距,即使我的代码没有指定它?
    为什么我的图像下方有一个看不见的边距,即使我的代码没有指定它?
    图片下方奇怪的隐形边距在本期中,作者在网页中的图像下方遇到了隐形边距,尽管没有代码中的这样的边距。这是由图像作为内联元素的性质引起的常见问题。根据响应,图像的默认内联行为会在与文本基线对齐的图像底部和文本底部之间创建空间。文本行。要解决这个问题,解决方案是将图像转换为块元素。一个简单的解决方案是使用...
    编程 发布于2024-11-15
  • 如何使用 JavaScript 修复滚动表中的标题行和第一列?
    如何使用 JavaScript 修复滚动表中的标题行和第一列?
    如何使用 JavaScript 锁定滚动表格的第一行和第一列在以下情况下锁定表格的第一行和第一列对于顶部和左侧有重要信息的大型表格来说,滚动可能是一个有用的功能。虽然仅靠 CSS 无法实现这一点,但 JavaScript 提供了解决方案。将 fxdHdrCol 插件视为潜在的 JavaScript ...
    编程 发布于2024-11-15
  • 为什么将 pthread 与 g++ 静态链接会导致分段错误,如何使用“--whole-archive”选项解决它?
    为什么将 pthread 与 g++ 静态链接会导致分段错误,如何使用“--whole-archive”选项解决它?
    当g静态链接pthread时,导致Segmentation failure,为什么?静态链接时,链接器会停在第一个符号处,甚至如果是弱者,就不再寻找强者。为了强制它查看所有符号(就像对动态链接库所做的那样),ld 支持 --whole-archive 选项。以下命令将起作用:g -o one o...
    编程 发布于2024-11-15
  • 构造函数与工厂函数:什么时候应该使用它们?
    构造函数与工厂函数:什么时候应该使用它们?
    理解 JavaScript 中构造函数和工厂函数的区别在 JavaScript 对象创建领域,理解构造函数和工厂函数之间的区别工厂的功能至关重要。这种区别围绕着底层机制和用于创建新对象的方法。构造函数:构造函数是使用 new 关键字调用的。此调用会触发 JavaScript 自动创建一个新对象,将函...
    编程 发布于2024-11-15
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-11-15
  • 除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有什么地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为的主要场景bool:语句:if、whi...
    编程 发布于2024-11-15
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-11-15

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3