当前位置: 首页 > article >正文

vue特效,一片动态星空

vue实现漂亮星空,超级简单

1.创建vue项目: vue create demo

2.注册vuecli    :   npm i element-ui -S

3.加载依赖      :npm i

4.运行项目      :npm run serve

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>web</title>
    <style>
        body {
            background: radial-gradient(200% 100% at bottom center,#f7f7b6,#e96f92,#1b2947);
            background: radial-gradient(220% 105% at top center #1b2947 10%,#75517d 40%,#e96f92 65%,#f7f7b6);
            background-attachment: fixed;
            overflow: hidden;
        }
    </style>
</head>
<body>
    <div id="app"></div>
</body>
</html>
<template>
    <div class="body">
      <div class="stars" ref="starsRef">
        <div class="star" v-for="(item, index) in starsCount" :key="index"></div>
      </div>
    </div>
  </template>
  
  <script>
  import { onMounted, ref } from "vue";
  
  export default {
    setup() {
      let starsRef = ref(null);
  
      const starsCount = 800; //星星数量
      const distance = 900; //间距
  
      onMounted(() => {
        let starNodes = Array.from(starsRef.value.children);
        starNodes.forEach((item) => {
          let speed = 0.2 + Math.random() * 1;
          let thisDistance = 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})`;
        });
      });
  
      return {
        starsRef,
        starsCount,
      };
    },
  };
  </script>
  
  <style lang="css" scoped>
  .body {
    position: absolute;
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    background: radial-gradient(
      200% 100% at bottom center,
      #f7f7b6,
      #e96f92,
      #1b2947
    );
    background: radial-gradient(
      200% 105% at top center,
      #1b2947 10%,
      #75517d 40%,
      #e96f92 65%,
      #f7f7b6
    );
    background-attachment: fixed;
    overflow: hidden;
  }
  
  @keyframes rotate {
    0% {
      transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(0);
    }
    100% {
      transform: perspective(400px) rotateZ(20deg) rotateX(-40deg)
        rotateY(-360deg);
    }
  }
  .stars {
    transform: perspective(500px);
    transform-style: preserve-3d;
    position: absolute;
    perspective-origin: 50% 100%;
    left: 45%;
    animation: rotate 90s infinite linear;
    bottom: 0;
  }
  .star {
    width: 2px;
    height: 2px;
    background: #f7f7b6;
    position: absolute;
    left: 0;
    top: 0;
    backface-visibility: hidden;
  }
  </style>
<template>
  <div id="app">
    <MyStar></MyStar>
  </div>
</template>

<script>
import MyStar from './components/MyStar.vue';



export default {
  name: 'App',
  components: {
    MyStar
  }
}
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>


http://www.kler.cn/a/350339.html

相关文章:

  • ElasticSearch DSL查询之排序和分页
  • C语言内存之旅:从静态到动态的跨越
  • STM32补充——FLASH
  • 【正则表达式】从0开始学习正则表达式
  • 一次理清楚Java中的日期和时间
  • VSCode最新离线插件拓展下载方式
  • 开源的介绍
  • Linux之HugePage的原理与使用
  • 国家基本药物目录数据库查询3种方法(2018、2012、2009年版)
  • 无人机之定高算法篇
  • ThinkPHP5bootstrapMySQL开发学习平台(包括后台管理功能、PC端网页、移动端网页)手把手运行源码
  • 树莓派5 spi控制
  • 如何用好 CloudFlare 的速率限制防御攻击
  • 藏式建筑彩绘知识图谱展示及问答
  • 【Next.js 项目实战系列】02-创建 Issue
  • 010集——关于图层( 新建图层、获取图层名)(CAD—C#二次开发入门)
  • 中国是全球最大的硫酸锰生产和消费地区
  • 实现vlan间的通信
  • C/C++复习(三)
  • Web自动化Demo-PHP+Selenium
  • 一个Idea:爆改 T480
  • 51单片机的土壤湿度检测控制系统【proteus仿真+程序+报告+原理图+演示视频】
  • Java 日志打印
  • 【网络安全】注册流程:电子邮件验证绕过
  • 2024/10/12 力扣 15.三数之和
  • PHP系统中502 的原因及解决方法