Vue3实战笔记(36)—粒子特效完成炫酷的404

文章目录

  • 前言
  • 404特效
  • 总结


前言

昨天介绍了一个粒子特效小例子,不够直观,下面直接实战在自己的项目中实现一个好玩滴。


404特效

更改之前创建好的404.vue:


<template>

    <div class="container">

        <vue-particles id="tsparticles" @particles-loaded="particlesLoaded"  :options="options"  />

            <div class="content">
                <div class="message">
                    <p class="message-heading">Error 404</p>
                    <p class="message-description">
                        The page you are looking for was moved, removed, renamed or might never have existed.
                    </p>
                </div>
                <div class="links">
                    <a href="http://localhost:3000/"></a>
                </div>
            </div>

    </div>
</template>

<script setup lang="ts" name="">
//路由器
import {RouterLink, useRouter} from 'vue-router'



//tsParticles library - https://github.com/matteobruni/tsparticles

const particlesLoaded = async (container: any) => {
    console.log("Particles container loaded", container);
};
const options = 
{
    fpsLimit: 80,
    fullScreen: { enable: true },
    particles: {
      number: {
        value: 33
      },
      shape: {
        type: "circle"
      },
      opacity: {
        value: 0.6
      },
      size: {
        value: 400,
        random: {
          enable: true,
          minimumValue: 200
        }
      },
      move: {
        enable: true,
        speed: 10,
        direction: "top",
        outModes: {
          default: "out",
          top: "destroy",
          bottom: "none"
        }
      }
    },
    interactivity: {
      detectsOn: "canvas",
      events: {
        resize: true
      }
    },
    detectRetina: true,
    themes: [
      {
        name: "light",
        default: {
          value: true,
          mode: "light"
        },
        options: {
          background: {
            color: "#f7f8ef"
          },
          particles: {
            color: {
              value: ["#3998D0", "#2EB6AF", "#A9BD33", "#FEC73B", "#F89930", "#F45623", "#D62E32", "#EB586E", "#9952CF"]
            }
          }
        }
      },
      {
        name: "dark",
        default: {
          value: true,
          mode: "dark"
        },
        options: {
          background: {
            color: "#080710"
          },
          particles: {
            color: {
              value: ["#3998D0", "#2EB6AF", "#A9BD33", "#FEC73B", "#F89930", "#F45623", "#D62E32", "#EB586E", "#9952CF"]
            }
          }
        }
      }
    ],
    emitters: {
      direction: "top",
      position: {
        x: 50,
        y: 150
      },
      rate: {
        delay: 0.2,
        quantity: 2
      },
      size: {
        width: 100,
        height: 0
      }
    }
  }
</script>




<style lang="scss" scoped>
    .return-home {
      display: block;
      float: left;
      width: 110px;
      height: 36px;
      background: #fff;
      border-radius: 100px;
      text-align: center;
      color: #ffffff;
      opacity: 0;
      font-size: 14px;
      line-height: 36px;
      cursor: pointer;
    }

    article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section {
    display: block
}

body {
    line-height: 1
}

ol,ul {
    list-style: none
}

blockquote,q {
    quotes: none
}

blockquote:after,blockquote:before,q:after,q:before {
    content: "";
    content: none
}

table {
    border-collapse: collapse;
    border-spacing: 0
}

body {
    padding: 0;
    margin: 0;
    font-size: 18px
}

.container {
    min-height: 100vh;
    position: relative;
    padding: 240px 0;
    box-sizing: border-box
}

.overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden
}

.content {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 100%;
    transform: translate(-50%,-50%)
}

.message {
    text-align: center;
    color: #fff
}

.message-heading {
    font-family: "Share Tech Mono";
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: .7em;
    font-size: 2rem;
    padding: 0 0 0 1.4em
}

.message-description {
    font-family: "Space Mono";
    line-height: 42px;
    font-size: 15px;
    letter-spacing: .15rem;
    padding: 0 20px;
    max-width: 600px;
    margin: auto
}

.links {
    max-width: 600px;
    margin: 40px auto 0;
    text-align: center
}

.links a {
    width: 170px;
    display: inline-block;
    padding: 15px 0;
    margin: 0 15px;
    border: 1px solid #000;
    color: #000;
    text-decoration: none;
    font-family: "Space Mono";
    text-transform: uppercase;
    font-size: 11px;
    letter-spacing: .1rem;
    position: relative
}

.links a:before {
    content: "";
    height: 42px;
    background: #000;
    position: absolute;
    top: 0;
    right: 0;
    width: 0;
    transition: all .3s
}

.links a:after {
    transition: all .3s;
    z-index: 999;
    position: relative;
    content: "back to hompage"
}

.links a:hover:before {
    width: 170px
}

.links a:hover:after {
    color: #fff
}

.links a:nth-child(2) {
    background: #fff;
    color: #000
}

.links a:nth-child(2):before {
    background: #212121;
    left: 0
}

.links a:nth-child(2):after {
    content: "report error"
}

.links a:nth-child(2):hover:after {
    color: #fff
}

.social {
    position: absolute;
    bottom: 15px;
    left: 15px
}

.social-list {
    margin: 0;
    padding: 0;
    list-style-type: none
}

.social-list li {
    display: inline-block;
    margin: 5px 10px
}

.social-list li a {
    color: #000
}

@media (max-width: 480px) {
    .message-heading {
        font-size:1rem;
        margin-bottom: 30px
    }

    .message-description {
        font-size: .7rem;
        line-height: 2rem
    }

    .links a {
        margin: 10px;
        width: 280px
    }

    .social {
        left: 50%;
        margin-left: -55px
    }
}
</style>

完事儿了!就这么简单。看看效果:
在这里插入图片描述
动图还是很酷的,复制过去试试吧。


总结

一切福田,不离方寸;从心而觅,感无不通。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/656172.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EXCEL如何自动根据上行内容填充到空格

接上篇文章&#xff0c;经过宏命令后会有空格出现&#xff0c;那么如何自动根据上行内容填充到空格呢&#xff1f; 请看步骤~ ctrl G 选择空值–》定位 -》 按 -》然后等于上一行 -》ctrl enter 一。全选表格&#xff0c; ctrl G 调出界面&#xff0c;选择空值按下定位 …

二分答案思想下的二进制问题

序列合并 题目描述 给定一个长度为 n n n 的非负整数序列 { a n } \{a_n\} {an​}&#xff0c;你可以进行 k k k 次操作&#xff0c;每次操作你选择两个相邻的数&#xff0c;把它们合并成它们的按位或。 形式化地&#xff0c;一次操作中&#xff0c;你选择一个下标 i i …

Transformer模型架构笔记

0. 简介 Transformer是一种用于自然语言处理&#xff08;NLP&#xff09;和其他序列到序列&#xff08;sequence-to-sequence&#xff09;任务的深度学习模型架构&#xff0c;它在2017年由Vaswani等人首次提出。Transformer架构引入了自注意力机制&#xff08;self-attention …

windows中每日定时执行python脚本,解决问题

由于需要一个每天定时执行的任务&#xff0c;所以需要定时启动&#xff0c;网上看了很多方法&#xff0c;感觉不能在python脚本种写个while true 定时执行&#xff0c;占资源不说还不可靠。 最后考虑通过系统工具定时启动&#xff0c;发现linux中有crontab&#xff0c;windows…

JMH304-剑侠情缘2网络版+2017纹饰端+翅膀+单机+外网整理+各种副本

资源介绍&#xff1a; 藏剑-太虚-梁山-杀手堂种树地宫师门纹饰装备长流云阳套等等———– 做登录器联系站长 资源截图&#xff1a; 下载地址

2023、2024国赛web复现wp

2023 Unzip 类型&#xff1a;任意文件上传漏洞 主要知识点&#xff1a;软链接 随便上传一个一句话木马文件&#xff0c;得到一串php代码 根据代码上传zip文件发现进入后还是此页面 代码审计&#xff1a; <?php error_reporting(0); highlight_file(__FILE__);$finfo fin…

Mac免费软件推荐

1. iTerm2 - 功能强大的终端 iTerm2 是一个功能强大且灵活的终端仿真器&#xff08;可替代系统默认终端&#xff09;&#xff0c;适合需要在 macOS 上进行大量终端操作的用户。其丰富的功能和高可定制性使得 iTerm2 成为许多开发者和系统管理员的首选工具。无论是处理多个会话…

基于MyBatisPlus表结构维护工具

SuperTable表结构维护工具 一、简述 用于同步表实体与数据库表结构&#xff0c;同步建表、删改字段、索引&#xff0c;种子数据的工具… 一、开发环境 JDK&#xff1a;JDK8SpringBoot&#xff1a;2.7.2MyBatisPlus: 3.5.6MySQL: 5.7其他依赖&#xff1a;略 二、特性 表结…

5G工业数采网关的功能及工业应用-天拓四方

随着5G技术的不断发展&#xff0c;其在工业领域的应用日益广泛。5G工业数采网关作为连接工业设备与网络的重要枢纽&#xff0c;具备多种功能&#xff0c;为工业自动化、智能制造和智慧工厂提供了强大的支持。本文将详细解析5G工业数采网关的功能&#xff0c;并探讨其在工业领域…

【调试笔记-20240528-Linux-用 OpenWrt-23.05 SDK 编译 frp 软件包】

调试笔记-系列文章目录 调试笔记-20240528-Linux-用 OpenWrt-23.05 SDK 编译 frp 软件包 文章目录 调试笔记-系列文章目录调试笔记-20240528-Linux-用 OpenWrt-23.05 SDK 编译 frp 软件包 前言一、调试环境操作系统&#xff1a;Ubuntu 22.04.4 LTS编译环境调试目标 二、调试步…

剖析【C++】——类与对象(中)——小白篇—超详解

目录 1.类的6个默认成员函数&#xff1a; 1. 默认构造函数&#xff08;Default Constructor&#xff09; 2. 析构函数&#xff08;Destructor&#xff09; 3. 拷贝构造函数&#xff08;Copy Constructor&#xff09; 4. 拷贝赋值运算符&#xff08;Copy Assignment Operato…

【RK3288 Android10 T8pro usb hid-multitouch idc配置】

【RK3288 Android10 T8pro usb hid-multitouch idc配置】 文章目录 【RK3288 Android10 T8pro usb hid-multitouch idc配置】背景代码分析1. 读取配置文件2. 标志内外置屏幕3. 设置输入设备4. findviewport()5. 根据对应的viewport来计算相应的mapping的参数 结论 背景 T8pro …

C++网络编程——socket

在服务器中&#xff0c;需要建立一个socket套接字才能对外提供一个网络通信接口&#xff0c;在Linux系统中套接字仅是一个文件描述符&#xff0c;也就是一个int类型的值 socket概念 socket 的原意是“插座”&#xff0c;在计算机通信领域&#xff0c;socket 被翻译为“套接字…

骆驼大赛

目录 一&#xff0c;主版图 二&#xff0c;骰子 三&#xff0c;初始设置 四&#xff0c;核心规则 五&#xff0c;结算 这是适合5-8人玩的一个概率推理类的回合制桌游。 一&#xff0c;主版图 赛道由16个格子组成&#xff0c;编号为1-16。 一共7个骆驼&#xff0c;其中正…

python如何巧妙地利用内置函数与列表切片组织舞会派对

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言 二、问题分析 三、解决方案 1. 利用内置函数创建参会人员名单 2. 利用列表切片…

【教学类-58-06】黑白三角拼图06(1页3张彩色黑点卡片,一种宫格36张,适合一个班级一次操作)

作品展示 背景需求 【教学类-58-05】黑白三角拼图05&#xff08;2-10宫格&#xff0c;每个宫格随机1张-6张&#xff0c;带空格纸&#xff0c;1页3张黑白3张白卡&#xff09;-CSDN博客文章浏览阅读343次&#xff0c;点赞10次&#xff0c;收藏6次。【教学类-58-05】黑白三角拼图…

基于深度强化学习的无人车自适应速度规划

论文&#xff1a;Adaptive speed planning for Unmanned Vehicle Based on Deep Reinforcement Learning 编辑&#xff1a;东岸因为一点人工一点智能 基于深度强化学习的无人车自适应速度规划本文对无人车辆的速度规划部分进行了一些改进。首先&#xff0c;将车辆速度与车辆与…

Excel中怎样将第一行建立好的规则套用到每一行?

考虑使用条件格式来完成&#xff0c;有两种方式可以尝试&#xff1a; 一、一次性创建条件格式 1.选中需要设置条件格式的区域&#xff0c;如果是不连续的区域&#xff0c;可以按住Ctrl键&#xff0c;然后用鼠标依次选中需要的数据区域 2.点击 开始选项卡&#xff0c;条件格式…

探索python循环逻辑的魅力:从无限到有限

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;循环逻辑的初步认识 二、无限循环&#xff1a;持续运转的引擎 三、有…

OpenHarmony Camera源码分析

一、简介 当前&#xff0c;开源在科技进步和产业发展中发挥着越来越重要的作用&#xff0c;OpenAtom OpenHarmony&#xff08;简称“OpenHarmony”&#xff09;赋予了开发者孕育创新的种子&#xff0c;也为数字化产业发展开辟了一片土壤。深开鸿是开源的坚定践行者&#xff0c…