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

news2024/10/6 6:43:25

文章目录

  • 前言
  • 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>

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


总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么做图片海报二维码?扫码查看图片内容

现在很多的宣传推广海报会放入二维码中&#xff0c;然后将二维码分享给用户后&#xff0c;通过扫码的方式来查看图片内容&#xff0c;从而获取自己需要的信息&#xff0c;经常在活动宣传、商品推广、旅游攻略等场景下使用。二维码可以提供更加便捷的内容获取方式&#xff0c;让…

Go源码--sync库(1)

简介 这篇主要介绍 sync.Once、sync.WaitGroup和sync.Mutex sync.Once once 顾名思义 只执行一次 废话不说 我们看源码 英文介绍直接略过了 感兴趣的建议读一读 获益匪浅 其结构体如下 Once 是一个严格只执行一次的object type Once struct {// 建议看下源码的注解&#xf…

llama_factory的使用

1.git clone llama_factory到本地 2.记得安环境&#xff0c;在clone后 3.多显卡要设置一下 4.数据文件放在data里面&#xff0c;仿照模板里的格式 5.进入llama_factory微调页面 python src/webui.py 6.llama_factory介绍&#xff1a;10分钟打造你个人专属的语言大模型&am…

「Element-UI表头添加带Icon的提示信息」

一、封装全局组件 &#x1f353; 注意&#xff1a;可以直接复制该文件 <!-- // 写一个PromptMessage的组件&#xff0c;并全局注册 --> <template><div class"tooltip"><el-tooltip effect"dark" placement"right">&l…

vue实现附件下载 获取到接口的图片,设置宽度100%样式

一、vue实现附件下载&#xff0c;使用a链接 <a class"btn flex_center" target"_blank" :href"localImgSrc(goodsDetail.attachment)" :download"localImgSrc(goodsDetail.attachment)" >立即下载 </a>二、 获取到接口…

js检验一个字符串是否是正确时间格式的工具方法

js检验一个字符串是否是正确时间格式的工具方法 (()> {/*** 检验字符串是否为时间格式* param {String} date 需要检验的时间格式* returns true 为时间格式&#xff0c;false 为非时间格式*/const isTimaFormat (date) > {if(!date) return false;try{const tempTime …

js之图片上传

话不多说&#xff0c;直接上干货&#xff0c;注释在代码里面 下面是效果图和代码 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…

Llama模型家族训练奖励模型Reward Model技术及代码实战(三) 使用 TRL 训练奖励模型

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

监控员工电脑的软件有哪些,不得不说这几款电脑监控软件太好用了

监控员工电脑的软件在市场上种类繁多&#xff0c;以下是几款备受好评的电脑监控软件&#xff0c;它们各自具有独特的功能和优势&#xff0c;选择前必须了解一下才能做成正确决定。 1.安企神&#xff1a; 这款软件支持7天试用测试&#xff0c;获取测试版请移驾 ↓↓↓ 安企神…

28-ESP32-S3 lwIP 轻量级 TCP/IP 协议栈

ESP32-S3 lwIP 介绍 ESP32-S3 是一款集成了Wi-Fi 和蓝牙功能的微控制器。它的设计初衷是为了方便嵌入式系统的开发。不过你可能会好奇&#xff0c;ESP32-S3 怎么实现与外部网络的通信呢&#xff1f;这里就要提到一个开源的 TCP/IP 协议栈&#xff0c;它叫做lwIP&#xff08;轻…

前端AI 工具对开发效率提升的探索

1、AI会100% 取代前端工程师吗&#xff1f; AI技术在未来可能会改变程序员的工作方式&#xff0c;将显著减少开发者的数量&#xff0c;但不太可能完全替代程序员。 AI 对技术的影响&#xff1a;可以大幅度提效。 提问AI模型&#xff1a; AI能取代开发者吗&#xff1f; AI 目前…

第十二节:带你梳理Vue2: computed计算属性

1 计算属性的基本了解 1.1 认识Mustache语法的不足 在模板中写表达式非常便利&#xff0c;但设计的初衷是为了简单的运算&#xff0c;如果是复杂的逻辑运算&#xff0c;会难以维护&#xff0c;不容易理解其中的意思. 示例: <div id"app"><!-- 正常绑定数…

冬奥会|基于SprinBoot+vue的冬奥会科普平台(源码+数据库+文档)

目录 基于SprinBootvue的冬奥会科普平台 一、前言 二、系统设计 三、系统功能设计 1登录注册 2系统功能模块 3管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|…

①单细胞学习-数据读取、降维和分群

目录 ①数据读取 ②计算线粒体基因比例 ③分开进行质控 ④两组单细胞数据合并 ⑤细胞周期评分 ⑥降维标准流程 降维 UMAP可视化 选择分群 ⑦marker基因 分析marker基因 marker基因可视化 ⑧细胞定群命名 单细胞的数据格式学习&#xff1a;单细胞 10X 和seurat对象…

从0到100,渠道码如何成为SaaS企业增长的加速器

在当今数字化时代&#xff0c;企业的增长策略已不再是单一和线性的。渠道码的出现&#xff0c;为SaaS&#xff08;软件即服务&#xff09;企业提供了一种全新的、多维度的增长途径&#xff0c;真正实现了从0到100的快速增长。 一、渠道码的高可定制性和灵活性&#xff0c;为Sa…

人脸识别——Webface-OCC遮挡人脸识别算法解析

1. 概述 自2019年被誉为人脸识别技术的元年&#xff0c;各地纷纷引入这项技术。然而&#xff0c;自2020年起&#xff0c;为了抵御冠状病毒&#xff08;COVID-19&#xff09;的全球传播&#xff0c;人们普遍开始佩戴口罩。众所周知&#xff0c;现有人脸识别模型在面对遮挡物&am…

生成式AI模型大PK——GPT-4、Claude 2.1和Claude 3.0 Opus

RAG(检索增强生成)系统的新评估似乎每天都在发布&#xff0c;其中许多都集中在有关框架的检索阶段。然而&#xff0c;生成方面——模型如何合成和表达这些检索到的信息&#xff0c;在实践中可能具有同等甚至更大的意义。许多实际应用中的案例证明&#xff0c;系统不仅仅要求从上…

Docker安装Redis的详细教程

以下是一个使用Docker安装Redis的详细教程 1. 拉取Redis镜像 运行以下命令来从Docker Hub上拉取最新的Redis镜像&#xff1a; docker pull redis:latest如果您需要特定版本的Redis&#xff0c;可以指定版本号&#xff1a; docker pull redis:6.2.72. 运行Redis容器 以下命…

基于AT89C52单片机的智能窗帘系统

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/89276984?spm1001.2014.3001.5503 C 源码仿真图毕业设计实物制作步骤07 智能窗户控制系统学院&#xff08;部&#xff09;&#xff1a; 专 业&#xff1a; 班 级&…

前端响应式期末作品

网页设计成品_前端响应式 主题&#xff1a;租房网站&#xff0c;共6个html页面&#xff0c;包含首页&#xff0c;登录注册&#xff0c;租房新闻&#xff0c;租房精选&#xff0c;租房详情&#xff0c;数据可视化页面&#xff08;可以修改内容&#xff09; 采用技术&#xff1a;…