网站来点圣诞气氛?

本贴最后更新于 1637 天前,其中的信息可能已经渤澥桑田

上 codepen 找了一圈灵感.....

<template> <div> <div class="container"> <div class="text">Merry Christmas, Friends!</div> <div class="presents"> <div class="present orange"> <div class="lid"></div> <div class="box"></div> <div class="bow"></div> <div class="ribbon"></div> </div> <div class="present blue"> <div class="lid"></div> <div class="box"></div> <div class="bow"></div> <div class="ribbon"></div> </div> <div class="present green"> <div class="lid"></div> <div class="box"></div> <div class="bow"></div> <div class="ribbon"></div> </div> </div> </div> </div> </template> <script> // 记得引入 mojs export default { data() { return { timer: null, } }, mounted() { this.timer = setInterval(() => this.randomizedConfetti(), 500) }, methods: { randomizedConfetti() { let randomX = Math.floor(Math.random() * (document.body.clientWidth - 300) + 0) let randomY = Math.floor(Math.random() * (window.innerHeight - 300) + 0) // eslint-disable-next-line no-undef const burst = new mojs.Burst({ left: 0, top: 0, radius: { 0: 200 }, count: 20, degree: 360, children: { fill: { white: '#f67280' }, duration: 2000, }, }).tune({ x: randomX, y: randomY, }) burst.replay() }, }, beforeDestroy() { clearInterval(this.timer) this.timer = null }, } </script> <style lang="scss" scoped> @import url('https://fonts.googleapis.com/css2?family=Fredoka+One&display=swap'); $border-color: #2c3a49; $border: 4px solid $border-color; $border-radius: 5px; html, body { overflow-x: hidden; } .container { position: fixed; top: 50%; left: 50%; z-index: 1000; transform: translate(-50%, -50%); } .text { min-width: 100%; text-align: center; color: #fda639; // color: #ffe211; font-family: 'Fredoka One', cursive; text-shadow: 1px 1px $border-color; font-size: 3em; -webkit-clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 80%); clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 80%); transform: translateY(-50px); opacity: 0; animation-name: titleAnimation; animation-timing-function: ease; animation-duration: 3s; animation-delay: 0.6s; animation-fill-mode: forwards; } .presents { opacity: 0; animation-name: titleAnimation; animation-timing-function: ease; animation-duration: 3s; animation-delay: 1.1s; animation-fill-mode: forwards; display: flex; justify-content: center; align-items: flex-end; height: 200px; } @keyframes titleAnimation { 0% { transform: translateY(-50px); opacity: 0; -webkit-clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 80%); clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 80%); } 20% { transform: translateY(0); opacity: 1; -webkit-clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 15%); clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 15%); } 100% { transform: translateY(0); opacity: 1; -webkit-clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 15%); clip-path: polygon(100% 0, 100% 100%, 0 100%, 0 15%); } } .text .char { animation: slide-in 1s cubic-bezier(0.5, 0, 0.5, 1) both; animation-delay: calc(60ms * var(--char-index)); } @keyframes slide-in { from { transform: translateY(-1em) rotate(-0.5turn) scale(0.5); opacity: 0; } } @mixin present($name, $positionx, $box-color, $bow-color, $dot-color, $width, $height, $z-index) { position: relative; left: $positionx; width: $width; height: $height; z-index: $z-index; &:hover { animation: 0.5s #{$name}; } .lid { background: $box-color; } .box { background-image: radial-gradient($dot-color 20%, transparent 20%), radial-gradient($dot-color 20%, transparent 20%); background-color: $box-color; } .ribbon { background: $bow-color; &::before { top: 21%; } } .bow { background: $bow-color; &::before, &::after { background: $bow-color; } } @keyframes #{$name} { 0% { width: $width; height: $height; } 30% { width: calc(#{$width} + 10px); height: calc(#{$height} - 10px); } 60% { width: calc(#{$width} - 10px); height: calc(#{$height} + 10px); } 100% { width: $width; height: $height; } } } .green { @include present('green', -20px, #3ddc81, #f75d4c, #fff, 100px, 100px, 1); } .orange { @include present('orange', 20px, #ffa726, #f75d4c, $border-color, 130px, 120px, 10); } .blue { @include present('blue', 0, #1bb5fe, #3ddc81, transparent, 120px, 160px, 0); } .present { position: relative; display: flex; flex-direction: column; align-items: center; cursor: pointer; .lid { height: 20%; width: calc(100% + 10px); border: $border; border-radius: $border-radius; box-shadow: inset 2px 2px rgba(255, 255, 255, 0.5), 5px 0 rgba(0, 0, 0, 0.15); } .box { width: 100%; height: 100%; background-position: 0 0, 20px 20px; background-size: 40px 40px; border: $border; border-top: 0; border-bottom-left-radius: $border-radius; border-bottom-right-radius: $border-radius; box-shadow: inset -10px 5px rgba(0, 0, 0, 0.3), 5px 0 rgba(0, 0, 0, 0.15); } .ribbon { position: absolute; top: -3px; width: 30px; height: calc(100% - 5px); border: $border; border-radius: $border-radius; box-shadow: inset 2px 2px rgba(255, 255, 255, 0.5); &::before { display: block; content: ''; position: absolute; width: 100%; height: 5px; background: rgba(0, 0, 0, 0.3); } } .bow { position: absolute; top: -20px; width: 20px; height: 20px; border: $border; border-radius: 50%; box-shadow: inset 2px 2px rgba(255, 255, 255, 0.5), inset -2px -5px rgba(0, 0, 0, 0.3); &::before, &::after { display: block; content: ''; position: absolute; top: -10px; width: 30px; height: 30px; border: $border; border-radius: 50%; box-shadow: inset 2px 2px rgba(255, 255, 255, 0.5), inset -2px -5px rgba(0, 0, 0, 0.3); z-index: -1; } &::before { left: 15px; } &::after { right: 15px; } } } </style>
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    268 引用 • 666 回帖 • 1 关注
  • 圣诞
    1 引用
  • 组件
    10 引用 • 28 回帖
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    246 引用 • 1338 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 2 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖
  • PWA

    PWA(Progressive Web App)是 Google 在 2015 年提出、2016 年 6 月开始推广的项目。它结合了一系列现代 Web 技术,在网页应用中实现和原生应用相近的用户体验。

    14 引用 • 69 回帖 • 184 关注
  • Hprose

    Hprose 是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不仅简单易用,而且功能强大。你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。

    9 引用 • 17 回帖 • 641 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    96 引用 • 155 回帖 • 1 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 79 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    24 引用 • 242 回帖 • 2 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 540 关注
  • OpenCV
    15 引用 • 36 回帖 • 7 关注
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 655 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 51 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 7 关注
  • Flutter

    Flutter 是谷歌的移动 UI 框架,可以快速在 iOS 和 Android 上构建高质量的原生用户界面。 Flutter 可以与现有的代码一起工作,它正在被越来越多的开发者和组织使用,并且 Flutter 是完全免费、开源的。

    39 引用 • 92 回帖 • 5 关注
  • sts
    2 引用 • 2 回帖 • 241 关注
  • Gitea

    Gitea 是一个开源社区驱动的轻量级代码托管解决方案,后端采用 Go 编写,采用 MIT 许可证。

    5 引用 • 16 回帖 • 1 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 662 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 436 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    371 引用 • 1857 回帖 • 1 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 519 关注
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    23 引用 • 32 回帖
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖 • 1 关注
  • Bug

    Bug 本意是指臭虫、缺陷、损坏、犯贫、窃听器、小虫等。现在人们把在程序中一些缺陷或问题统称为 bug(漏洞)。

    76 引用 • 1742 回帖 • 3 关注
  • Eclipse

    Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

    76 引用 • 258 回帖 • 628 关注
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 645 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    496 引用 • 934 回帖 • 2 关注