其他代码

纯CSS3超酷书架样式404页面动画特效

阿里云


这是一款使用 CSS3 帧动画来制作的炫酷 404 页面动画特效。该 404 页面以书架为主题,当某个页面不存在时,以书架中找不到这本书来表示,非常有创意。

HTML 结构

该 404 页面使用一个<nav>元素来作为导航。

也想出现在这里?联系我们
创客主机
  1. <nav class="shelf">
  2.   <a class="book home-page">Home page</a>
  3.   <a class="book about-us">About us</a>
  4.   <a class="book contact">Contact</a>
  5.   <a class="book faq">F.A.Q.</a>
  6.  
  7.   <span class="book not-found"></span>
  8.  
  9.   <span class="door left"></span>
  10.   <span class="door right"></span>
  11. </nav>
  12. <h1>Error 404</h1>
  13. <p>糟糕,您要找的书籍不在书架中。。。</p>

CSS 样式

整个页面使用 flexbox 来进行布局。

  1. body {
  2.   display: -webkit-box;
  3.   display: -webkit-flex;
  4.   display: -ms-flexbox;
  5.   display: flex;
  6.   margin: 0;
  7.   padding: 0;
  8.   background-color: #446072;
  9.   font-family: "Microsoft YaHei",sans-serif;
  10.   color: white;
  11.   -webkit-box-pack: center;
  12.   -webkit-justify-content: center;
  13.       -ms-flex-pack: center;
  14.           justify-content: center;
  15.   -webkit-box-align: center;
  16.   -webkit-align-items: center;
  17.       -ms-flex-align: center;
  18.           align-items: center;
  19.   -webkit-box-orient: vertical;
  20.   -webkit-box-direction: normal;
  21.   -webkit-flex-direction: column;
  22.       -ms-flex-direction: column;
  23.           flex-direction: column;
  24.   overflow: hidden;
  25. }

.shelf 元素是书架,里面是一些导航按钮。它使用相对定位,为了制作开门的 3D 动画效果,为它设置了 perspective 透视度。

  1. .shelf {
  2.   position: relative;
  3.   width: 30rem;
  4.   height: 14rem;
  5.   border: 0.5rem solid #374d5b;
  6.   border-radius: 0.5rem;
  7.   background-color: rgba(255, 255, 255, 0.1);
  8.   -webkit-perspective: 130rem;
  9.           perspective: 130rem;
  10.   box-shadow: inset 0 0 2rem rgba(0, 0, 0, 0.2);
  11. }

.door 是左右两扇书架门,它的:before 伪元素用来制作门的手柄。

  1. .door {
  2.   position: absolute;
  3.   width: 14.8rem;
  4.   height: 14rem;
  5.   display: -webkit-box;
  6.   display: -webkit-flex;
  7.   display: -ms-flexbox;
  8.   display: flex;
  9.   box-sizing: border-box;
  10.   padding: 1rem;
  11.   background-color: #374d5b;
  12.   -webkit-box-align: center;
  13.   -webkit-align-items: center;
  14.       -ms-flex-align: center;
  15.           align-items: center;
  16.   box-shadow: 0 1px 1px rgba(0, 0, 0, 0.3);
  17. }
  18. .door::before {
  19.   width: 1.5rem;
  20.   height: 1.5rem;
  21.   border-radius: 50%;
  22.   background-color: rgba(0, 0, 0, 0.1);
  23.   content: "";
  24. }

左侧的门的 transform-origin 被设置在 0 0 0 位置,及左上角位置,并执行 leftDoorOpen 和 leftDoorFlap 两个帧动画。

  1. .door.left {
  2.   border-radius: 0 0.75rem 0.75rem 0;
  3.   -webkit-box-pack: end;
  4.   -webkit-justify-content: flex-end;
  5.       -ms-flex-pack: end;
  6.           justify-content: flex-end;
  7.   -webkit-animation: 
  8.       leftDoorOpen 3.5s ease-out forwards 1s,
  9.       leftDoorFlap 15s linear infinite forwards 9s;
  10.           animation: 
  11.       leftDoorOpen 3.5s ease-out forwards 1s,
  12.       leftDoorFlap 15s linear infinite forwards 9s;
  13.   -webkit-transform-origin: 0 0 0;
  14.           transform-origin: 0 0 0;
  15. }
  16. @keyframes leftDoorOpen {
  17.   60% {-webkit-transform: rotateY(-115deg);transform: rotateY(-115deg)}
  18.   100% {-webkit-transform: rotateY(-110deg);transform: rotateY(-110deg)}
  19. }
  20. @keyframes leftDoorFlap {
  21.   0% { -webkit-transform: rotateY(-110deg); transform: rotateY(-110deg)}
  22.   5% {-webkit-transform: rotateY(-115deg);transform: rotateY(-115deg)}
  23.   15% {-webkit-transform: rotateY(-107deg);transform: rotateY(-107deg)}
  24.   25% {-webkit-transform: rotateY(-113deg);transform: rotateY(-113deg)}
  25.   30% {-webkit-transform: rotateY(-110deg);transform: rotateY(-110deg)}
  26.   100% {-webkit-transform: rotateY(-110deg);transform: rotateY(-110deg)}
  27. }

右侧的门的转换圆点设置在 100% 0 0 位置,并执行 rightDoorOpen 和 rightDoorFlap 两个帧动画。

  1. .door.right {
  2.   right: 0;
  3.   border-radius: 0.75rem 0 0 0.75rem;
  4.   -webkit-animation: 
  5.       rightDoorOpen 3s ease-out forwards 1.5s,
  6.       rightDoorFlap 10s linear infinite forwards 8s;
  7.           animation: 
  8.       rightDoorOpen 3s ease-out forwards 1.5s,
  9.       rightDoorFlap 10s linear infinite forwards 8s;
  10.   -webkit-transform-origin: 100% 0 0;
  11.           transform-origin: 100% 0 0;
  12. }
  13. @keyframes rightDoorOpen {
  14.   60% {-webkit-transform: rotateY(125deg);transform: rotateY(125deg)}
  15.   100% {-webkit-transform: rotateY(120deg);transform: rotateY(120deg)}
  16. }
  17. @keyframes rightDoorFlap {
  18.   0% { -webkit-transform: rotateY(120deg); transform: rotateY(120deg)}
  19.   5% {-webkit-transform: rotateY(125deg);transform: rotateY(125deg)}
  20.   15% {-webkit-transform: rotateY(117deg);transform: rotateY(117deg)}
  21.   25% {-webkit-transform: rotateY(123deg);transform: rotateY(123deg)}
  22.   30% {-webkit-transform: rotateY(120deg);transform: rotateY(120deg)}
  23.   100% {-webkit-transform: rotateY(120deg);transform: rotateY(120deg)}
  24. }

几个链接元素被制作为圆角矩形,并使用 transform 函数将它们旋转和移动到相应的位置。.not-found 元素还会执行一个闪烁动画 bookFadeOut。

  1. .book {
  2.   position: absolute;
  3.   box-sizing: border-box;
  4.   padding: 0.8rem 4rem 0.8rem 2rem;
  5.   border-radius: 0.25rem;
  6.   background-color: rgba(255, 255, 255, 0.1);
  7.   color: white;
  8.   font-size: 1rem;
  9.   text-transform: uppercase;
  10.   letter-spacing: 0.1rem;
  11.   cursor: pointer;
  12.   box-shadow: inset 0 0 0.75rem rgba(255, 255, 255, 0.1);
  13. }
  14. .book.home-page {
  15.   -webkit-transform: rotate(-90deg) translate(-12.4rem, 3rem);
  16.           transform: rotate(-90deg) translate(-12.4rem, 3rem);
  17.   -webkit-transform-origin: 0;
  18.           transform-origin: 0;
  19. }
  20. .book.about-us {
  21.   -webkit-transform: rotate(-100deg) translate(-13.4rem, 6.1rem);
  22.           transform: rotate(-100deg) translate(-13.4rem, 6.1rem);
  23.   -webkit-transform-origin: 0;
  24.           transform-origin: 0;
  25. }
  26. .book.contact {
  27.   right: 2rem;
  28.   bottom: 0.2rem;
  29.   border-radius: 0.3rem 0 0 0.3rem;
  30. }
  31. .book.faq {
  32.   right: 0.8rem;
  33.   bottom: 3.3rem;
  34.   border-radius: 0.3rem 0 0 0.3rem;
  35. }
  36. .book.not-found {
  37.   width: 12rem;
  38.   height: 3.5rem;
  39.   border: 1px dashed rgba(255, 255, 255, 0.3);
  40.   background-color: transparent;
  41.   -webkit-transform: rotate(-90deg) translate(-12rem, 13rem) scale(1);
  42.           transform: rotate(-90deg) translate(-12rem, 13rem) scale(1);
  43.   -webkit-transform-origin: 0;
  44.           transform-origin: 0;
  45.   cursor: default;
  46.   -webkit-animation: bookFadeOut 1s 3s infinite forwards;
  47.           animation: bookFadeOut 1s 3s infinite forwards;
  48. }

纯 CSS3 超酷书架样式 404 页面动画特效

已有 596 人购买
  • sfvg
查看演示升级 VIP立刻购买

演示地址 下载地址
收藏
(1)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!