Vue实现星空效果

本文实例为大家分享了Vue实现星空效果的具体代码,供大家参考,具体内容如下

需要实现上图的星空效果

1.星空背景子组件

<template>
  <div class="stars">
    <div class="star" v-for="(item, index) in starsCount" :key="index" ref="star"></div>
  </div>
</template>

<script>

export default {
  name: 'StarBackground',
  props: {},
  data() {
    return {
      starsCount: 1200,
      distance: 800
    }
  },
  mounted() {
    this.initStars()
  },
  methods: {
    initStars() {
      let starArr = this.$refs.star
      starArr.forEach(item => {
        let speed = 0.2 + (Math.random() * 1)
        let thisDistance = this.distance + (Math.random() * 300)
        item.style.transformOrigin = `0 0 ${thisDistance}px`
        item.style.transform = `translate3d(0, 0, -${thisDistance}px) rotateY(${(Math.random() * 360)}deg) rotateX(${(Math.random() * -50)}deg) scale(${speed}, ${speed})`
      })
    }
  }
}
</script>

<style scoped lang="scss">
@keyframes rotate {
  0% {
    transform: perspective(600px) rotateZ(20deg) rotateX(-40deg) rotateY(0);
  }
  100% {
    transform: perspective(600px) rotateZ(20deg) rotateX(-40deg) rotateY(-360deg);
  }
}

.stars {
  transform: perspective(500px);
  transform-style: preserve-3d;
  position: absolute;
  perspective-origin: 50% 100%;
  left: 50%;
  animation: rotate 90s infinite linear;
  bottom: -200px;
}

.star {
  width: 2px;
  height: 2px;
  background: #f7f7b8;
  position: absolute;
  top: 0;
  left: 0;
  backface-visibility: hidden;
}
</style>

2.登录页引用子组件

<template>
  <div class="login-container">
    <star-background />
  </div>
</template>

<script>
import StarBackground from './components/StarBackground'

export default {
  beforeCreate: function() {
    document.getElementsByTagName('body')[0].className = 'body-bg'
  },
  components: { StarBackground }
}
</script>

<style lang="scss">
.body-bg {
  background-attachment: fixed;
  overflow: hidden;
}

.login-container {
  height: 100%;
  width: 100%;
  overflow: hidden;
  background-color: #050608;
}
</style>

background-attachment: fixed;很重要,需要把界面固定住,不然下拉会出现空白

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)

    为了提高页面展示效果,登录界面内容比较单一的,粒子效果作为背景经常使用到,vue工程中利用vue-particles可以很简单的实现页面的粒子背景效果. 解决问题: 以背景方式显示 无法获取按钮焦点,触发不了点击事件 实现过程 安装vue-particles npm install vue-particles --save-dev 全局配置vue-particles 在main.js里面: import VueParticles from 'vue-particles' Vue.use(VueP

  • vue3使用particles插件实现粒子背景的方法详解

    目录 总结 效果(可以修改多种不同的样式效果) 1.安装 npm install particles.vue3 2.main.js import { createApp } from 'vue' import App from './App.vue' import router from "./router"; import Particles from "particles.vue3"; // 引入 const app = createApp(App); app.

  • vue 粒子特效的示例代码

    本文介绍了vue 粒子特效的示例代码,分享给大家,具体如下: 实现效果: 没错,你看到的上图那些类似于星座图的点和线,是由vue-particles生成的,而且能与用户鼠标事件产生互动. 传送门:vue-particles 使用教程 npm install vue-particles --save-dev main.js文件: import Vue from 'vue' import VueParticles from 'vue-particles' Vue.use(VueParticles)

  • vue实现登录页背景粒子特效

    本文实例为大家分享了vue实现登录页背景粒子特效的具体代码,供大家参考,具体内容如下 上图中的点和线,是由Vue-Particles生成的,不仅自己动,还可以与用户的鼠标互动.例子的样式有点丑,大家凑合看一下吧. 1. 使用教程 1.1 安装 npm install vue-particles --save-dev 1.2 引入 main.js 文件 import Vue from 'vue' import VueParticles from 'vue-particles' Vue.use(Vu

  • Vue登录页面的动态粒子背景插件实现

    目录 动态粒子效果如下: 安装插件 动态粒子效果如下: 安装插件 npm install vue-particles --save-dev 在main.js文件中全局引入 import VueParticles from 'vue-particles' Vue.use(VueParticles) 在vue文件中使用 <vue-particles color="#409EFF" :particleOpacity="0.7" :particlesNumber=&q

  • Vue实现星空效果

    本文实例为大家分享了Vue实现星空效果的具体代码,供大家参考,具体内容如下 需要实现上图的星空效果 1.星空背景子组件 <template>   <div class="stars">     <div class="star" v-for="(item, index) in starsCount" :key="index" ref="star"></div>

  • 基于vue实现分页效果

    本文实例为大家分享了vue实现分页效果展示的具体代码,供大家参考,具体内容如下 <!doctype html> <html> <head> <meta charset="UTF-8"> <title>分页练习</title> <script src="js/vue.js"></script> </head> <style> .isList{ lis

  • js星空效果代码

    星空效果_www.jb51.net ABCD [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  • Vue 页面切换效果之 BubbleTransition(推荐)

    CodePen 地址 前端使用 SPA 之后,能获得更多的控制权,比如页面切换动画,使用后端页面我们可能做不了上面的效果,或者做出来会出现明显的闪屏.因为所有资源都需要重新加载. 今天使用 vue,vue-router,animejs 来讲解如何上面的效果是如何实现的. 步骤 点击菜单,生成 Bubble,开始执行入场动画 页面跳转 执行退场动画 函数式调用组件 我希望效果是通过一个对象去调用,而不是 v-show, v-if 之类的指令,并且为了保持统一,仍然使用 Vue 来写组件.我通常会用

  • JS+canvas画布实现炫酷的旋转星空效果示例

    本文实例讲述了JS+canvas画布实现炫酷的旋转星空效果.分享给大家供大家参考,具体如下: canvas是html5的新标签,其画布功能尤为强大.当然了canvas在IE10以下浏览器是不兼容的,所以呢为了特效肯定是牺牲一定的兼容性.这里呢,分享一个基于canvas开发的浩瀚星河插件,其实这个源代码是网上下载的,我把它整合了一下,重新封装一些参数提供更多的可改项. 首先引入两个javascript脚本,一个是jquery插件,另一个是封装好的cosmos_canvas.js <script s

  • js实现旋转的星空效果

    本文实例为大家分享了js实现旋转的星空效果的具体代码,供大家参考,具体内容如下 <!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta nam

  • jQuery实现炫丽的3d旋转星空效果

    本文实例讲述了jQuery实现炫丽的3d旋转星空效果.分享给大家供大家参考,具体如下: 该特效也是在Jquery插件库中找到的,感觉效果不错,说不定以后项目中要有绚丽的星空背景,拿来即用,收藏了下. 下载解压后的目录结构 index.html页面代码: <!doctype html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta http-equiv=&

  • vue实现放大镜效果

    本文实例为大家分享了vue实现放大镜效果的具体代码,供大家参考,具体内容如下 实现类淘宝放大镜效果 前端小白一枚,最近在进行 vue 方面的学习,逛淘宝闲来无事想试试做个放大镜,结果虽然做出来了,但其中有一些问题让我无法解决,四处搜索也没有找到满意的答案,很是心烦,希望能有大佬帮忙解答,谢谢 步骤思路 对原图的显示空间(left) 可以将显示原图的 img 换成 canvas,来对图片进行保护 跟随鼠标移动时显示放大的指示区(鼠标层罩top) 显示层罩区域选中放大的显示空间(right) HTM

  • vue实现选中效果

    前情提要 好久没有写Vue了,略有生疏,这个东西还是得多用. 下午看到一个需求,选择相册图片作为轮播图显示.接口返回相册列表,用户选一下再扔回去. 直到我看到e.target.className我就知道这个事情不简单.. Vue是数据驱动 数据驱动这个是我觉得和jQuery不一样的地方. jQuery是点一下,加个class,移个class. Vue是点一下,数据记录,然后自动通知视图. 一个是把选中状态保存在了DOM,一个是把选中状态保存在了js数据模型里. 所以在看到了使用Vue然后获取DO

  • 解决vue-cli输入命令vue ui没效果的问题

    最近用vue-cli脚手架很顺口,特别是UI控制台,在这里,创建项目和搭建本地环境,连接服务端变得很容易,页面ui也是一流 要怎么启动呢?在终端输入命令行vue ui,启动UI控制台,然后往浏览器输入终端报出的链接 输入命令行vue ui,终端会报启动信息,这本来很正常.可是呢,今天不知道啥回事,输入vue ui,终端没反应 我查看了vue的帮助信息,敢情是根本没有 'vue ui' 这一命令行!怎么回事?vue版本怎么倒退了! 于是重新安装vue-cli最新版(版本号必须3x以上)就行了,使用

随机推荐