时钟

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>⏰TickingClock🥰</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" rel="stylesheet" type="text/css">
<style>
* {
font-family: 'Poppins', 'Microsoft YaHei', sans-serif;
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: #2e2e44;
}
.digital-clock {
position: relative;
color: #fff;
background: #2e2e44;
width: 460px;
padding: 20px 30px;
box-shadow: 0 5px 25px rgba(14, 21, 37, 0.8);
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.digital-clock:before {
content: '';
position: absolute;
background: linear-gradient(45deg, #24ff6d, #2f93f1, #ff5e9a);
background-size: 200% 200%;
top: -5px;
left: -5px;
bottom: -5px;
right: -5px;
z-index: -1;
filter: blur(40px);
animation: glowing 10s ease infinite;
}
@keyframes glowing {
0% { background-position: 0 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0 50%; }
}
.time {
position: relative;
display: flex;
justify-content: center;
align-items: center;
}
.hours, .dots, .minutes {
display: flex;
justify-content: center;
align-items: center;
font-weight: 600;
padding: 0 10px;
line-height: 125px;
}
.hours, .minutes {
font-size: 6.5em;
width: 125px;
}
.dots {
font-size: 5em;
color: #929292;
}
.hours {
background: -webkit-linear-gradient(90deg, #634dff, #5fd4ff);
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
}
.minutes {
background: -webkit-linear-gradient(90deg, #ff5e9e, #ffb960);
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
}
.right-side {
position: relative;
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
margin-left: 10px;
}
.period, .seconds {
font-size: 1.2em;
font-weight: 500;
}
.period {
transform: translateY(-20px);
background: -webkit-linear-gradient(90deg, #f7b63f, #faf879);
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
}
.seconds {
transform: translateY(16px);
background: -webkit-linear-gradient(90deg, #24ff6d, #2f93f1);
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
}
.calender {
display: flex;
justify-content: center;
align-items: center;
font-size: 1.3em;
font-weight: 500;
margin-bottom: 5px;
background: -webkit-linear-gradient(90deg, #ae4af6, #ff98d1);
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
}
.calender span {
margin: 0 2px;
}
.day-name {
margin-left: 15px !important;
}
.dot-menu-btn {
position: absolute;
top: 0;
right: 0;
margin: 10px;
color: #efefef;
font-size: 1.5em;
cursor: pointer;
z-index: 20;
}
.dot-menu {
z-index: 999;
position: absolute;
top: 7px;
right: 5px;
list-style: none;
background: #353e54;
padding: 10px 20px;
border-radius: 5px;
box-shadow: 0 5px 25px rgba(0, 0, 0, 0.5);
visibility: hidden;
opacity: 0;
transition: 0.4s ease;
}
.dot-menu.active {
visibility: visible;
opacity: 1;
}
.menu-item {
display: flex;
justify-content: center;
align-items: center;
}
.clock-format-text {
color: #efefef;
font-size: 0.9em;
margin-right: 20px;
white-space: nowrap;
}
.format-switch-btn {
width: 35px;
height: 15px;
background: #485470;
border-radius: 75px;
box-shadow: inset 2px 2px 4px rgba(255, 255, 255, 0.1), inset -2px -2px 4px rgba(0, 0, 0, 0.2);
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
position: relative;
}
.format-switch-btn:before {
content: '';
position: absolute;
width: 14px;
height: 14px;
background: #ff5e9a;
border-radius: 50%;
box-shadow: 0 5px 25px #ff5e9a;
transform: translateX(-10px);
transition: 0.4s ease;
transition-property: background, transform;
}
.format-switch-btn.active:before {
background: #0bff8d;
box-shadow: 0 5px 25px #0bff8d;
transform: translateX(10px);
}
</style>
</head>
<body>
<div class="digital-clock">
<i class="fas fa-ellipsis-v dot-menu-btn" id="dot-menu-btn"></i>
<ul class="dot-menu" id="dot-menu">
<li class="menu-item">
<span class="clock-format-text">24小时制</span>
<div class="format-switch-btn" data-format="12"></div>
</li>
</ul>
<div class="time">
<span class="hours">00</span>
<span class="dots">:</span>
<span class="minutes">00</span>
<div class="right-side">
<span class="period">AM</span>
<span class="seconds">00</span>
</div>
</div>
<div class="calender">
<span class="year">0000</span>年
<span class="month-name">0</span>月
<span class="day-num">00</span>日
<span class="day-name">星期X</span>
</div>
</div>
<script>
const formatSwitchBtn = document.querySelector(".format-switch-btn");
const dotMenuBtn = document.querySelector(".dot-menu-btn");
const dotMenu = document.querySelector(".dot-menu");
// 切换 12/24 小时制
formatSwitchBtn.addEventListener("click", () => {
formatSwitchBtn.classList.toggle("active");
var formatValue = formatSwitchBtn.getAttribute("data-format");
if (formatValue === "12") {
formatSwitchBtn.setAttribute("data-format", "24");
} else {
formatSwitchBtn.setAttribute("data-format", "12");
}
});
// 菜单显示/隐藏
dotMenuBtn.addEventListener("click", (e) => {
e.stopPropagation();
dotMenu.classList.toggle("active");
});
document.addEventListener("click", (e) => {
if (e.target !== dotMenuBtn && !dotMenu.contains(e.target)) {
dotMenu.classList.remove("active");
}
});
function clock() {
var today = new Date();
// --- 1. 更新日期部分 (年、月、日、星期) ---
const year = today.getFullYear();
const monthNum = today.getMonth() + 1;
const dayNum = today.getDate();
const dayName = today.toLocaleString("zh-CN", {weekday: "long"});
document.querySelector(".year").innerHTML = year;
document.querySelector(".month-name").innerHTML = monthNum;
document.querySelector(".day-num").innerHTML = dayNum;
document.querySelector(".day-name").innerHTML = dayName;
// --- 2. 更新时间部分 (时、分、秒) ---
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();
let period = "AM";
var formatValue = formatSwitchBtn.getAttribute("data-format");
if (hours >= 12) {
period = "PM";
}
if (formatValue === "12") {
hours = hours > 12 ? hours % 12 : hours;
if (hours === 0) hours = 12;
}
if (hours < 10) hours = "0" + hours;
if (minutes < 10) minutes = "0" + minutes;
if (seconds < 10) seconds = "0" + seconds;
document.querySelector(".hours").innerHTML = hours;
document.querySelector(".minutes").innerHTML = minutes;
document.querySelector(".period").innerHTML = period;
document.querySelector(".seconds").innerHTML = seconds;
}
// 每秒运行一次
var updateClock = setInterval(clock, 1000);
// 初始立即运行一次,防止页面加载瞬间显示 00:00
clock();
</script>
</body>
</html>
留言交流
欢迎留下想法,理性友善交流