当前位置: 首页 > news >正文

19.主题时钟

主题时钟

html部分

<div class="btn">黑色</div><div class="clock-container"><div class="time">21</div><div class="date">21</div><div class="clock"><div class="line hour"></div><div class="line minute"></div><div class="line second"></div><div class="point"></div></div>
</div>

css部分

*{margin: 0;padding: 0;
}:root{--primary-color:#000;--secondary-color:#fff
}html{transition: all .5s;
}
html.dark{--primary-color:#fff;--secondary-color:#333;background-color: #111;color: var(--primary-color);
}body{display: flex;align-items: center;justify-content: center;height: 100vh;overflow: hidden;
}.btn{cursor: pointer;background-color: var(--primary-color);color: var(--secondary-color);border-radius: 4px;padding: 8px 12px;position: absolute;top: 100px;
}.clock-container{display: flex;flex-direction: column;justify-content: space-between;align-items: center;
}
.clock{position: relative;width: 200px;height: 200px;}
.line{background-color: var(--primary-color);position: absolute;top: 50%;left: 50%;height: 85px;transform: translate(-50%,-50%);width: 3px;transform-origin: bottom center;transition: all .5s;}.time{font-size: 24px;margin: 10px 0;
}.minute{transform: rotate(60deg);
}
.second{transform:rotate(220deg);background-color: brown;
}
.point{position: absolute;top: 92%;left: 51%;transform: translate(-50%,-50%);width: 10px;height: 10px;border-radius: 50%;background-color: var(--secondary-color);border: 2px solid brown;
}

js部分

// 获取dom
const btn=document.querySelector('.btn');
const html=document.querySelector('html');
const time_box=document.querySelector('.time');
const date_box=document.querySelector('.date');
const hour_box=document.querySelector('.hour');
const min_box=document.querySelector('.minute');
const sec_box=document.querySelector('.second');// 定义周数组
const weeks=['星期日','星期一','星期俩','星期三','星期四','星期俩','星期六'];// 主题按钮
btn.addEventListener("click",()=>{html.classList.toggle('dark');btn.innerHTML=='黑色'?btn.innerHTML='白色':btn.innerHTML='黒色';})function active_time(){const time=new Date();const months=time.getMonth()+1;const days=time.getDate();const week=time.getDay();const hour=time.getHours()%12;const min=time.getMinutes();const sec=time.getSeconds();// 设置时针,分针,秒针 hour_box.style.transform=`scaleX(0.8) rotate(${scale(hour,0,12,0,360)}deg)`;sec_box.style.transform=`rotate(${scale(sec,0,60,0,360)}deg)`;min_box.style.transform=`rotate(${scale(min,0,60,0,360)}deg)`;// 设置时间,日期const dom_time=`${hour}:${min.toString().padStart(2,'0')} ${new Date().getHours()>12?'PM':'AM'}`const date_time=`${weeks[week]},${months.toString().padStart(2,'0')}月${days.toString().padStart(2,'0')}日`time_box.innerHTML=dom_timedate_box.innerHTML=date_time
}
active_time();setInterval(active_time,10)function scale(num,in_min,in_max,out_min,out_max){return (num-in_min)*(out_max-out_min)/(in_max-in_min)+out_min;
}

效果

在这里插入图片描述

http://www.lryc.cn/news/97099.html

相关文章:

  • ChatGPT在智能电子设备中的应用如何?
  • MGRE之OSPF实验
  • 【Selenium+Pytest+allure报告生成自动化测试框架】附带项目源码和项目部署文档
  • 如何负载均衡中的日志统一管理
  • Java_26_Stream流
  • 周四见 | 物流人的一周资讯
  • uniapp 即时通讯开发流程详解
  • 【Terraform学习】Terraform-docker部署快速入门(快速入门)
  • C# 全局响应Ctrl+Alt+鼠标右键
  • 【Leetcode】54.螺旋矩阵
  • 怎样计算一个算法的复杂度?
  • 【问题记录】Ubuntu 22.04 环境下,打开 VS Code 老是访问密钥环该怎么解决?
  • format格式化输出语法详解
  • RocketMQ教程-(5)-功能特性-事务消息
  • HANA学习笔记
  • VMware虚拟机无法上网的解决办法
  • PLC-Recorder的高速采集有多快?0.5ms算快吗?看控制器能力了!
  • KMP算法总结
  • 消息中间件ActiveMQ介绍
  • 【100天精通python】Day9:数据结构_字典、集合
  • 上海VR全景展示,快速了解VR全景拍摄
  • VScode远程不用再输入密码操作
  • MyBatis基本用法-@TableId
  • React AntDesign写一个导出数据的提示语 上面有跳转的路径,或者点击知道了,关闭该弹层
  • 小红书课程发光社群知识库,点亮哥专为超级个体设计解决方案
  • 基于SpringBoot+Vue的摄影跟拍预定管理系统设计与实现(源码+lw+部署文档等)
  • HCIA 第二课总结
  • linux-------联网下载文件和配置
  • 字典树Trie
  • 算法之桶排序算法