非常好看的一款404界面【带演示】

本404页面采用纯HTML与CSS打造,呈现一只卡通奶牛跌入井中的趣味动画效果。页面兼容现代浏览器,具有高性能和轻量级特性,适合作为前端项目中的自定义错误页面模板,增强用户体验。

<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <title>404</title>
    <style>
      *,
      *:after,
      *:before {
        box-sizing: border;
      }

      :root {
        font-size: 0.75vw;
        --bg: #ff8a65;
        --anime-speed: 0.2s;
      }

      body {
        height: 100vh;
        font-family: arial;
        background: var(--bg);
        overflow: hidden;
      }

      .cow {
        width: 30rem;
        aspect-ratio: 2/1;
        border-radius: 4rem/15%;
        background-color: #fefefe;
        position: absolute;
        top: 40%;
        z-index: 10;
        transform-origin: 100% 150%;
        left: 38%;
        transform: translateY(15rem) rotate(90deg);
        animation: jmb var(--anime-speed) linear,
          move calc(var(--anime-speed) * 10) linear;
      }
      .cow:before {
        content: "";
        position: absolute;
        left: 11%;
        top: 0;
        width: 40%;
        height: 60%;
        color: #000;
        background: currentcolor;
        border-radius: 0 0 100% 50%;
        box-shadow: 9rem -2rem 0 -2rem, 15rem -3rem 0 -3rem;
      }
      .cow:after {
        content: "";
        position: absolute;
        left: 20%;
        bottom: 6%;
        color: #000;
        background: currentcolor;
        box-shadow: 8rem -4rem 0 -1rem;
        width: 5rem;
        aspect-ratio: 1/1;
        border-radius: 43% 57% 51% 49%/51% 55% 45% 49%;
      }
      .cow .head {
        position: absolute;
        top: 0;
        left: 100%;
        z-index: 1;
      }
      .cow .head .face {
        width: 11rem;
        aspect-ratio: 12.5/7.5;
        background: #fff;
        box-shadow: -2rem 4.5rem #000 inset;
        border-radius: 10% 100% 50% 45%/44% 72% 26% 25%;
        transform: rotateX(180deg) rotate(-55deg) translate(-25%, -55%);
        position: relative;
        z-index: 10;
      }
      .cow .head:after,
      .cow .head:before {
        content: "";
        position: absolute;
        top: -3.5rem;
        left: -5.5rem;
        transform: rotate(-25deg);
        background: #000;
        width: 4rem;
        height: 5rem;
        z-index: 20;
        box-shadow: 0.2rem 0.1rem 0 0.2rem #fff inset;
        border-radius: 0% 100% 38% 62%/41% 73% 27% 59%;
      }
      .cow .head:before {
        z-index: 2;
        top: -4rem;
        left: -5rem;
        transform: rotate(-5deg);
      }
      .cow .leg {
        position: absolute;
        top: 95%;
        background: #fff;
        width: 1.5rem;
        height: 3rem;
        transform-origin: top center;
      }
      .cow .leg:after {
        content: "";
        position: absolute;
        left: 0;
        top: 90%;
        width: 100%;
        height: 2.5rem;
        background: #fff;
        border-bottom: 1.5rem solid #000;
      }
      .cow .leg.b {
        left: 4%;
        animation: legMoveB var(--anime-speed) alternate infinite;
      }
      .cow .leg.b.l {
        left: 13%;
      }
      .cow .leg.b.l:after {
        left: 10%;
        top: 75%;
        background: #fff;
        transform: rotate(-5deg);
      }
      .cow .leg.b.r {
        animation-delay: var(--anime-speed);
      }
      .cow .leg.b.r:after {
        left: 32%;
        top: 90%;
        background: #fff;
        transform: rotate(-15deg);
      }
      .cow .leg.f {
        right: 5%;
        animation: legMoveF var(--anime-speed) alternate infinite;
      }
      .cow .leg.f.l {
        right: 10%;
        animation-delay: var(--anime-speed);
      }
      .cow .leg.f.l:after {
        right: 10%;
        left: auto;
        top: 75%;
        background: #fff;
        transform: rotate(5deg);
      }
      .cow .leg.f.r:after {
        right: 20%;
        left: auto;
        top: 90%;
        background: #fff;
        transform: rotate(10deg);
      }
      .cow .tail {
        position: absolute;
        right: 98%;
        top: 12%;
        width: 2rem;
        height: 10rem;
        border-left: 0.5rem solid #fff;
        border-top: 0.5rem solid #fff;
        border-radius: 100% 0% 51% 49%/42% 100% 0% 58%;
        transform-origin: top left;
        animation: tail 0.75s alternate infinite;
      }
      .cow .tail:after {
        content: "";
        position: absolute;
        left: 7%;
        top: 100%;
        background: #000;
        width: 1.5rem;
        height: 1.75rem;
        border-radius: 70% 30% 100% 0%/100% 30% 70% 0%;
        transform: rotate(-60deg);
      }

      .well {
        background: #000;
        width: 30rem;
        height: 2rem;
        position: absolute;
        top: calc(40% + 19rem);
        left: 60%;
        border-radius: 50%;
      }
      .well:before {
        content: "";
        position: absolute;
        left: 0;
        top: 0%;
        width: 100%;
        height: 100%;
        border-radius: 50%;
        box-shadow: 0 -1.2rem 0.25rem #000 inset;
        z-index: 110;
      }
      .well::after {
        content: "";
        position: absolute;
        left: 0;
        top: 50%;
        width: 100%;
        height: 24rem;
        background: var(--bg);
        z-index: 100;
      }

      .home-btn {
        position: absolute;
        left: -190%;
        top: 2rem;
        font-size: 2.5rem;
        font-weight: bold;
        color: #000;
        background: #ffd600;
        display: inline-block;
        text-decoration: none;
        padding: 1.5rem 3rem;
        border-radius: 1rem;
        transition: background 0.3s ease-in;
        transform-origin: 45rem 45rem;
        animation: btnAnim calc(var(--anime-speed) * 20) linear;
      }
      .home-btn:hover {
        background: #fbc02d;
      }

      .text-box {
        font-family: "Cabin Sketch", serif;
        font-weight: 700;
        color: #fff;
        text-align: center;
        position: absolute;
        left: 10%;
        top: 28%;
        animation: textAnim calc(var(--anime-speed) * 18) linear;
      }
      .text-box h1 {
        font-size: 24rem;
        margin: 0;
        line-height: 18rem;
      }
      .text-box p {
        width: 42rem;
        font-size: 5rem;
        line-height: 1;
        margin: 0;
      }

      @keyframes btnAnim {
        0%,
        48% {
          transform: translateX(-10rem) rotate(95deg);
        }
        55%,
        100% {
          transform: translateX(0rem) rotate(0deg);
        }
      }
      @keyframes textAnim {
        0%,
        60% {
          top: 0%;
          transform: translatey(0);
          opacity: 0;
        }
        70%,
        76%,
        85% {
          top: 28%;
          transform: translatey(5%);
          opacity: 1;
        }
        73%,
        79% {
          top: 28%;
          transform: translatey(-15%);
          opacity: 1;
        }
        100% {
          top: 28%;
          transform: translatey(0);
        }
      }
      @keyframes move {
        0% {
          left: 0%;
          transform: translateY(0) rotate(0deg);
        }
        85% {
          left: 38%;
          transform: translateY(0) rotate(0deg);
        }
        90% {
          left: 40%;
          transform: translateY(0) rotate(5deg);
        }
        95% {
          left: 38%;
          transform: translateY(0) rotate(90deg);
        }
        100% {
          left: 38%;
          transform: translateY(15rem) rotate(90deg);
        }
      }
      @keyframes jmb {
        0%,
        100% {
          transform: translatey(0);
        }
        50% {
          transform: translatey(5px);
        }
      }
      @keyframes legMoveB {
        0% {
          transform: rotate(2deg) translatey(0%);
        }
        100% {
          transform: rotate(-5deg) translatey(-5%);
        }
      }
      @keyframes legMoveF {
        0% {
          transform: rotate(0deg) translatey(0%);
        }
        100% {
          transform: rotate(-15deg) translatey(-5%);
        }
      }
      @keyframes tail {
        0% {
          transform: rotate(3deg);
          height: 10rem;
        }
        100% {
          transform: rotate(-3deg);
          height: 8rem;
        }
      }
    </style>
  </head>
  <body>
    <div class="cow">
      <div class="head">
        <div class="face"></div>
      </div>
      <div class="leg b l"></div>
      <div class="leg b r"></div>
      <div class="leg f l"></div>
      <div class="leg f r"></div>
      <div class="tail"></div>
    </div>
    <div class="well">
      <a class="home-btn" href="#">回到首页</a>
    </div>
    <div class="text-box">
      <h1>404</h1>
    </div>
  </body>
</html>

演示:https://nide.xin/zheshi

Notahero

我还没有学会写个人说明!

相关推荐

粉色冰块闯关游戏

PINK ICE 是一款基于 HTML、CSS 和 JavaScript 开发的响应式滑块解谜游戏,支持方向键或触屏操作,适配移动与桌面端,拥有多 ...

记忆游戏

轻量级的浏览器记忆游戏,使用原生 JavaScript 和 CSS Grid 构建,适合初学者学习 DOM 操作、动画效果和响应式设计的网页小 ...

1 条评论

  1. ζ蔚蓝°

    感谢分享!