这是您需要的自动切换壁纸并显示日期的HTML代码,它是一款可直接运行的桌面美化工具,能定时更换背景并叠加当前日期。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">动态壁纸 · 日期切换</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
min-height: 100vh;
background: #0b0d15;
display: flex;
justify-content: center;
align-items: center;
font-family: 'Segoe UI', Roboto, system-ui, -apple-system, sans-serif;
padding: 16px;
}
/* 卡片 — 模拟桌面壁纸预览 */
.wallpaper-card {
position: relative;
width: 100%;
max-width: 1100px;
aspect-ratio: 16 / 9;
border-radius: 36px;
overflow: hidden;
box-shadow: 0 30px 50px rgba(0, 0, 0, 0.7), 0 0 0 1px rgba(255, 255, 255, 0.05);
transition: box-shadow 0.3s ease;
background: #1e2128;
}
.wallpaper-card:hover {
box-shadow: 0 40px 70px rgba(0, 0, 0, 0.9), 0 0 0 1px rgba(255, 255, 255, 0.08);
}
/* 壁纸图层 —— 背景切换由 JS 控制 */
.wallpaper-layer {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
background-size: cover;
background-position: center center;
background-repeat: no-repeat;
transition: opacity 0.8s cubic-bezier(0.23, 1, 0.32, 1);
opacity: 1;
will-change: opacity;
/* 优雅降级:如果图片加载失败,显示纯色 */
background-color: #2a2f3a;
}
/* 玻璃质感日期面板 */
.date-panel {
position: absolute;
bottom: 40px;
right: 40px;
background: rgba(10, 14, 23, 0.45);
backdrop-filter: blur(14px) saturate(180%);
-webkit-backdrop-filter: blur(14px) saturate(180%);
padding: 20px 32px;
border-radius: 60px;
border: 1px solid rgba(255, 255, 255, 0.18);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
display: flex;
align-items: center;
gap: 12px;
pointer-events: none; /* 让点击穿透,不干扰壁纸交互 */
user-select: none;
transition: transform 0.2s ease, background 0.2s;
transform: translateZ(0);
letter-spacing: 0.3px;
}
.date-icon {
font-size: 28px;
line-height: 1;
opacity: 0.9;
filter: drop-shadow(0 2px 4px rgba(0,0,0,0.2));
}
.date-text {
color: #ffffff;
font-size: 28px;
font-weight: 500;
text-shadow: 0 2px 10px rgba(0, 0, 0, 0.4);
white-space: nowrap;
}
.date-text span {
font-weight: 300;
opacity: 0.7;
margin-left: 8px;
font-size: 22px;
}
/* 底部控制条 — 干净轻量 */
.controls {
position: absolute;
bottom: 40px;
left: 40px;
display: flex;
gap: 16px;
align-items: center;
pointer-events: auto;
flex-wrap: wrap;
}
.controls button {
background: rgba(20, 25, 40, 0.55);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.12);
color: #f0f4ff;
padding: 12px 28px;
border-radius: 50px;
font-size: 18px;
font-weight: 450;
letter-spacing: 0.3px;
cursor: pointer;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
transition: background 0.2s, border-color 0.2s, transform 0.1s;
display: flex;
align-items: center;
gap: 8px;
line-height: 1;
white-space: nowrap;
pointer-events: auto;
}
.controls button:hover {
background: rgba(45, 55, 80, 0.7);
border-color: rgba(255, 255, 255, 0.25);
}
.controls button:active {
transform: scale(0.94);
background: rgba(20, 25, 40, 0.8);
}
.controls .indicator {
color: rgba(255, 255, 255, 0.6);
font-size: 16px;
font-weight: 400;
background: rgba(0, 0, 0, 0.2);
backdrop-filter: blur(4px);
padding: 8px 18px;
border-radius: 40px;
border: 1px solid rgba(255, 255, 255, 0.05);
pointer-events: none;
}
/* 移动端适应 */
@media (max-width: 680px) {
.wallpaper-card {
border-radius: 24px;
aspect-ratio: 4 / 3; /* 更适应手机竖版 */
}
.date-panel {
bottom: 24px;
right: 24px;
padding: 14px 22px;
border-radius: 40px;
}
.date-text {
font-size: 22px;
}
.date-icon {
font-size: 22px;
}
.date-text span {
font-size: 18px;
}
.controls {
bottom: 24px;
left: 24px;
gap: 10px;
}
.controls button {
padding: 10px 20px;
font-size: 16px;
}
.controls .indicator {
font-size: 14px;
padding: 6px 14px;
}
}
@media (max-width: 480px) {
.wallpaper-card {
aspect-ratio: 4 / 3;
border-radius: 18px;
}
.date-panel {
bottom: 16px;
right: 16px;
padding: 12px 18px;
}
.date-text {
font-size: 18px;
}
.date-icon {
font-size: 18px;
}
.date-text span {
font-size: 15px;
margin-left: 4px;
}
.controls button {
padding: 8px 14px;
font-size: 14px;
}
.controls .indicator {
font-size: 12px;
padding: 5px 10px;
}
}
</style>
</head>
<body>
<div class="wallpaper-card">
<!-- 壁纸背景层 -->
<div class="wallpaper-layer" id="wallpaperLayer"></div>
<!-- 日期面板 (右下) -->
<div class="date-panel" id="datePanel">
<span class="date-icon">📅</span>
<span class="date-text" id="dateDisplay">-- <span>---</span></span>
</div>
<!-- 控制区 (左下) -->
<div class="controls">
<button id="prevWallpaperBtn" aria-label="上一张">← 上一张</button>
<span class="indicator" id="counterIndicator">1 / 6</span>
<button id="nextWallpaperBtn" aria-label="下一张">下一张 →</button>
</div>
</div>
<script>
(function() {
'use strict';
// ------------------- 壁纸库 (高分辨率优美壁纸) --------------------
const wallpapers = [
{
url: 'https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=1600&q=80',
name: '山水晨雾'
},
{
url: 'https://images.unsplash.com/photo-1470071459604-7f8e44f1e4b2?w=1600&q=80',
name: '林间溪流'
},
{
url: 'https://images.unsplash.com/photo-1447752875215-b2761acb3c5d?w=1600&q=80',
name: '静谧森林'
},
{
url: 'https://images.unsplash.com/photo-1501785888041-af3ef285b470?w=1600&q=80',
name: '山巅云海'
},
{
url: 'https://images.unsplash.com/photo-1433086966358-54859d0ed716?w=1600&q=80',
name: '瀑布清幽'
},
{
url: 'https://images.unsplash.com/photo-1569470451076-03ad4ed1af7f?w=1600&q=80',
name: '暮色山峦'
}
];
// DOM 引用
const wallpaperLayer = document.getElementById('wallpaperLayer');
const dateDisplay = document.getElementById('dateDisplay');
const prevBtn = document.getElementById('prevWallpaperBtn');
const nextBtn = document.getElementById('nextWallpaperBtn');
const counterIndicator = document.getElementById('counterIndicator');
// 状态
let currentIndex = 0; // 0 ~ wallpapers.length-1
let autoSwitchInterval = null;
const AUTO_SWITCH_MS = 8000; // 8秒自动切换
// ---------------- 辅助函数 ----------------
function formatDate() {
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
// 星期几 (中文)
const weekdays = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
const weekday = weekdays[now.getDay()];
return {
dateStr: `${year}.${month}.${day}`,
weekday: weekday
};
}
function updateDateDisplay() {
const { dateStr, weekday } = formatDate();
dateDisplay.innerHTML = `${dateStr} <span>${weekday}</span>`;
}
// 更新壁纸 (背景)
function applyWallpaper(index) {
// 边界保护
if (index < 0) index = wallpapers.length - 1;
if (index >= wallpapers.length) index = 0;
currentIndex = index;
const wallpaper = wallpapers[currentIndex];
// 使用 1600w 的 unsplash 图片,并设置背景
wallpaperLayer.style.backgroundImage = `url('${wallpaper.url}')`;
// 更新计数器
counterIndicator.textContent = `${currentIndex + 1} / ${wallpapers.length}`;
// 可选:预加载附近图片 (改善体验)
preloadAdjacent(currentIndex);
}
// 预加载相邻壁纸 (提前缓存)
function preloadAdjacent(index) {
const nextIndex = (index + 1) % wallpapers.length;
const prevIndex = (index - 1 + wallpapers.length) % wallpapers.length;
[nextIndex, prevIndex].forEach(i => {
const img = new Image();
img.src = wallpapers[i].url;
});
}
// 切换至下一张
function nextWallpaper() {
let newIndex = (currentIndex + 1) % wallpapers.length;
applyWallpaper(newIndex);
resetAutoSwitch();
}
// 切换至上一张
function prevWallpaper() {
let newIndex = (currentIndex - 1 + wallpapers.length) % wallpapers.length;
applyWallpaper(newIndex);
resetAutoSwitch();
}
// ---------------- 自动切换 ----------------
function startAutoSwitch() {
if (autoSwitchInterval) clearInterval(autoSwitchInterval);
autoSwitchInterval = setInterval(() => {
nextWallpaper();
}, AUTO_SWITCH_MS);
}
function resetAutoSwitch() {
// 重置计时器:用户手动切换后重新计时
if (autoSwitchInterval) {
clearInterval(autoSwitchInterval);
autoSwitchInterval = null;
}
startAutoSwitch();
}
// ---------------- 初始化 ----------------
function init() {
// 1. 设置初始壁纸 (随机一张)
const randomIndex = Math.floor(Math.random() * wallpapers.length);
applyWallpaper(randomIndex);
// 2. 显示当前日期
updateDateDisplay();
// 3. 监听日期更新 (每分钟更新一次)
setInterval(updateDateDisplay, 60000); // 每分钟校正一次
// 4. 绑定按钮事件
prevBtn.addEventListener('click', prevWallpaper);
nextBtn.addEventListener('click', nextWallpaper);
// 5. 键盘支持 (左右方向键)
window.addEventListener('keydown', (e) => {
if (e.key === 'ArrowLeft') {
e.preventDefault();
prevWallpaper();
} else if (e.key === 'ArrowRight') {
e.preventDefault();
nextWallpaper();
}
});
// 6. 启动自动切换
startAutoSwitch();
// 7. 窗口加载完毕后预加载所有壁纸 (提升后续切换流畅度)
window.addEventListener('load', () => {
wallpapers.forEach((wp, idx) => {
if (idx !== currentIndex) { // 当前已经加载, 额外预加载其余
const img = new Image();
img.src = wp.url;
}
});
});
// (可选) 页面可见性变化时重置计时器 (用户切回时保证稳定)
document.addEventListener('visibilitychange', () => {
if (!document.hidden) {
resetAutoSwitch();
// 同时刷新一下日期 (可能切回时日期已变)
updateDateDisplay();
}
});
}
// 启动
init();
})();
</script>
</body>
</html>
壁纸切换与日期显示机制
您可以通过手动操作或让程序自动运行,来体验壁纸的循环切换和实时日期显示。
- 壁纸库与切换:代码内置了六张精选的高清风景壁纸,您可以通过点击左下角的“上一张/下一张”按钮,或直接使用键盘的 和 方向键来手动切换壁纸。
- 自动轮播:页面加载后,壁纸会每隔 8秒 自动切换至下一张,形成循环播放效果,当您手动切换壁纸时,自动轮播的计时器会重置,确保您的操作优先。
- 日期与交互反馈:屏幕右下角会清晰显示当前的 年、月、日及星期,您切换壁纸时,左下角的计数器会同步更新当前壁纸的序号(3 / 6”),方便您了解浏览进度。
优化建议: 您可以根据喜好替换 wallpapers 数组中的图片链接,数组内每个对象包含 url 和 name,您只需修改 url 为高清图片地址即可更新壁纸库。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播