这是一个包含完整HTML、CSS和SVG代码的单文件解决方案。 这个设计采用了**Flat 2.0**风格(扁平化但带有渐变和阴影),并通过CSS变量和JavaScript实现了平滑的昼夜切换动画。 ### 功能特点: 1. **地标建筑**:包含世界贸易中心一号大楼(左)、帝国大厦(中)、克莱斯勒大厦(右)以及前景中风格化的自由女神像。 2. **动态细节**: * **窗户**:白天是暗淡的玻璃,夜晚会随机点亮暖黄色的灯光。 * **倒影**:水面上有建筑物的倒影。 * **飞鸟**:天空中飞翔的海鸥动画。 * **云层**:缓慢飘动的半透明云层。 3. **昼夜切换**:点击右上角的开关,天空渐变、太阳/月亮位置、建筑物颜色和窗户灯光都会平滑过渡。 ### 使用方法: 将以下代码保存为 `.html` 文件(例如 `nyc_skyline.html`),然后用浏览器打开。 ```html 纽约天际线 - 昼夜切换 SVG
``` ### 代码亮点解析: 1. **CSS 变量驱动的主题 (`:root` vs `.night-mode`)**: * 所有的颜色(天空、建筑、窗户光、水面)都定义为 CSS 变量。 * 当 `night-mode` 类被添加到 body 时,这些变量会更新,利用 CSS 的 `transition` 属性实现全局的平滑过渡,无需复杂的 JS 动画逻辑。 2. **SVG 渐变 (`linearGradient`)**: * 建筑使用垂直渐变(顶部较亮,底部较暗)来模拟立体感。 * `stop-color` 绑定了 CSS 变量,确保渐变色也能随昼夜切换而变化。 3. **窗户系统 (`` + CSS Animation)**: * 为了性能和代码整洁,没有画几百个矩形,而是定义了一个 ``。 * 在夜晚模式下,`.window` 类获得高亮颜色,并应用了一个 `flicker`(闪烁)动画,模拟城市灯光闪烁的生动感。使用了 `nth-child` 延迟,让闪烁看起来不那么同步。 4. **自由女神像的简化**: * 使用基本的几何形状(Path/Line/Circle)组合成一个极简但可识别的轮廓,并添加了火炬的光晕动画。 5. **倒影与水波**: * 倒影是通过 `transform="scale(1, -1)"` 翻转并降低透明度实现的。 * 使用了 SVG 滤镜 `blur` 让倒影中的灯光看起来在水中晕开。 6. **天体运动**: * 太阳和月亮共用一个圆形元素。通过 CSS `transform` 在切换时改变其位置,同时改变颜色(黄色 -> 银白色)。