3D电子数字时钟项目分享

Feng
7月6日发布

图片[1] - 3D电子数字时钟项目分享 - Feng的小屋

HTML与CSS打造的3D数字时钟

在网页开发的世界里,HTML 和 CSS 是构建网页基础与样式的强大工具。今天,我们要深入剖析一个由 HTML 和 CSS 实现的极具创意的项目,它包含了 3D 数字和方块动画效果,为网页增添了独特的视觉魅力。

代码演示

项目概述

这个项目主要由一个包含多个数字容器和一个表面容器组成,表面容器内有众多方块元素。通过精心设计的 CSS 样式和动画,实现了 3D 效果和动态展示。整体项目的代码包含在 runoob - test.html 文件中,它充分展示了 HTML 和 CSS 在创建复杂视觉效果方面的能力。

HTML 结构分析

数字容器

<div class="container">
    <div class="digit"></div>
    <div class="digit"></div>
    <div class="digit"></div>
    <div class="digit"></div>
    <div class="digit"></div>
    <div class="digit"></div>

container 类的 div 元素是整个项目的容器,它采用绝对定位并居中显示。内部的多个 digit 类的 div 元素可能用于后续展示数字效果,不过目前代码中未对其进行详细的样式和内容设置。

表面容器与方块元素

<div class="surface">
    <!-- 众多的方块元素,如 b1 - b94 -->
    <div class="block b1">
        <div class="block-outer">
            <div class="block-inner">
                <div class="bottom"></div>
                <div class="front"></div>
                <div class="left"></div>
                <div class="right"></div>
            </div>
        </div>
    </div>
    <!-- 其他方块元素... -->
</div>

surface 类的 div 元素用于承载众多的方块元素。每个方块元素由 block 类的 div 包裹,内部又分为 block-outerblock-inner 两层。block-inner 包含了 bottomfrontleftright 四个面,用于构建 3D 方块的外观。

CSS 样式与动画效果

全局样式

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

body {
    background: radial-gradient(circle at center, transparent, #000 95%), linear-gradient(#444 2px, transparent 0) 0 0/20px 20px, linear-gradient(90deg, #444 2px, #000 0) 0 0/20px 20px;
    height: 100vh;
    margin: 0;
    overflow: hidden;
}

全局样式设置了所有元素的盒模型为 border-box,并为 body 元素设置了独特的背景,包括径向渐变和线性渐变,营造出一种网格状的黑暗背景效果。同时,将 body 的高度设置为视口高度,并隐藏溢出部分。

3D 效果与容器样式

.container, .surface, .block, .block-outer, .block-inner {
    transform-style: preserve-3d;
}

.container {
    animation: bounce 2s cubic-bezier(0.4, 0.1, 0.6, 0.9) infinite;
    display: flex;
    margin: auto;
    overflow: hidden;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    width: 594px;
    height: 200px;
    perspective: 800px;
}

通过 transform-style: preserve-3d 属性,确保容器和内部元素能够正确呈现 3D 效果。container 元素使用了 bounce 动画,实现了上下弹跳的效果。同时,通过 perspective 属性设置了透视效果,增强了 3D 视觉感受。

表面容器样式

.surface {
    animation: tilt 2s -1.5s cubic-bezier(0.4, 0.1, 0.6, 0.9) infinite;
    display: block;
    width: 540px;
    height: 20px;
    margin: auto;
    transform: translateY(50px) rotateX(105deg) rotateZ(0deg);
    will-change: transform;
}

surface 元素使用了 tilt 动画,使其产生倾斜的动态效果。通过 transform 属性对其进行位置和角度的调整,让表面呈现出特定的 3D 姿态。

方块样式

.block-inner div {
    background-color: #74d447;
}
.block-inner > div {
    display: flex;
    flex-wrap: wrap;
    align-content: flex-start;
    position: absolute;
    width: 20px;
    height: 20px;
}

方块的内部元素使用绿色背景色,通过 position: absolute 进行绝对定位,并使用 flexbox 布局进行内部元素的排列。

动画效果

@keyframes bounce {
    0%, 100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-50px);
    }
}

@keyframes tilt {
    0%, 100% {
        transform: translateY(50px) rotateX(105deg) rotateZ(0deg);
    }
    50% {
        transform: translateY(50px) rotateX(105deg) rotateZ(10deg);
    }
}

bounce 动画使 container 元素在垂直方向上上下弹跳,tilt 动画使 surface 元素在一定角度内倾斜,为整个项目增添了生动的动态效果。

© 版权声明
THE END
喜欢就支持一下吧
点赞 2 分享 赞赏
评论 抢沙发
OωO
取消
SSL