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

css之svg 制作圆及旋转

1.代码

<template><div class="loading-box"><div class="circle-container"><svg width="75" height="75" class="move-left-to-right"><circle cx="37.5" cy="37.5" r="26" stroke="white" stroke-width="2" fill="transparent" stroke-dasharray="130" /></svg><svg width="50" height="50" class="move-right-to-left"><circle cx="25" cy="25" r="16" stroke="white" stroke-width="2" fill="transparent" stroke-dasharray="80" /></svg></div><div v-if="text" class="text">{{ text }}</div></div>
</template><script setup lang="ts">defineProps({text: {type: String,default: '',},});
</script>
<style lang="scss" scoped>.loading-box {position: absolute;inset: 0;z-index: 999;display: flex;flex-direction: column;align-items: center;justify-content: center;background: rgb(0 0 0 / 45%);}.circle-container {position: relative;width: 80px;height: 80px;}.move-left-to-right {animation: rotate-clockwise 2s linear infinite;position: absolute;top: 0;left: 0;}.move-right-to-left {animation: rotate-counter-clockwise 2s linear infinite;position: absolute;top: 12px;left: 12px;}@keyframes rotate-clockwise {to {transform: rotate(360deg);}}@keyframes rotate-counter-clockwise {to {transform: rotate(-360deg);}}.text {margin-top: 10px;font-family: 'PingFang SC', 'PingFang SC';font-size: 16px;font-weight: bold;line-height: 18px;color: #fff;}
</style>

2.解释

这段代码是一个 Vue 组件,它展示了一个加载动画。让我一步步解释一下:

- 在模板中,有一个包含加载动画和可能显示文本的 `loading-box` 的 `div`。加载动画由两个 `svg` 组成,分别是 `move-left-to-right` 和 `move-right-to-left` 类的圆圈。
- `defineProps` 函数是 Vue 3 Composition API 中用于定义 props 的函数。在这个组件中,它定义了一个名为 `text` 的 prop,类型为字符串,默认为空字符串。
- 在样式部分,`.loading-box` 控制整个加载框的样式,设置其为全屏、居中、半透明黑色背景。`.circle-container` 确保两个圆圈的容器大小合适。
- `.move-left-to-right` 和 `.move-right-to-left` 控制两个圆圈的样式和动画。它们通过 `rotate-clockwise` 和 `rotate-counter-clockwise` 关键帧动画,以相反的方向旋转,使得两个圆圈呈现出交替的旋转效果。
- 最后,`.text` 控制可能显示的文本的样式,设置了字体、大小、粗细和颜色。

这个组件通过 Vue 的 props 功能来接受一个 `text` 参数,用以动态显示文本内容。加载动画部分则通过 CSS 的关键帧动画来实现旋转效果,展现出简单而美观的加载状态。

3.svg属性

SVG(可缩放矢量图形)是一种用于描述二维图形和图形应用程序的 XML 标记语言。在你提供的代码中,有两个 `<svg>` 元素,每个元素都包含一个圆圈。

让我解释一下 `<circle>` 元素中的属性:

1. **`cx`**: 这是圆的中心在 x 轴上的坐标值。
2. **`cy`**: 这是圆的中心在 y 轴上的坐标值。
3. **`r`**: 这是圆的半径。
4. **`stroke`**: 这定义了圆的轮廓颜色。
5. **`stroke-width`**: 这定义了圆的轮廓宽度。
6. **`fill`**: 这定义了圆的填充颜色。
7. **`stroke-dasharray`**: 这定义了轮廓的虚线样式,其中值是一个以逗号分隔的数字列表,代表实线和空白部分的长度。

这些属性控制着圆的位置、大小、外观和轮廓样式,允许你创建不同形状和样式的圆圈。

4.使用方式一

  import Loading from './Loading.vue';<Loading v-model:visible="loading" text="Generating..." />

5.命令式使用

// showLoading.tsimport loading from '@/components/AiBackground/loading.vue';
import { createApp } from 'vue';export default function showLoading(text: string): void {const app = createApp(loading, {text});const div = document.createElement('div');document.body.appendChild(div);app.mount(div);
}

 使用

  import showLoading from '@/utils/showLoading';
  showLoading('loading');

6.使用方式三

createVNode
 

// showLoading.ts// import loading from '@/components/AiBackground/loading.vue';
import { createApp } from 'vue';
const loading = {props: {text: String,handler: Function,},render(ctx) {// 使用createVNodereturn createVNode('div', {class: 'loading',});},
};
export default function showLoading(text: string, handler: Function): void {const app = createApp(loading, {text,handler,});const div = document.createElement('div');document.body.appendChild(div);app.mount(div);
}

7.使用jsx

总结合理的封装方便使用

相关文章:

css之svg 制作圆及旋转

1.代码 <template><div class"loading-box"><div class"circle-container"><svg width"75" height"75" class"move-left-to-right"><circle cx"37.5" cy"37.5" r"26&…...

学习.NET验证模块FluentValidation的基本用法(续1:其它常见用法)

FluentValidation模块支持链式验证方法调用&#xff0c;也就是说&#xff0c;除了 RuleFor(r > r.UserName).NotEmpty()调用方式之外&#xff0c;还可以将对单个属性的多种验证函数以链式调用方式串接起来&#xff0c;比如UserName属性不能为空&#xff0c;长度在5~10之间&a…...

lv11 嵌入式开发 UART实验 11

目录 1 UART帧格式详解 1.1 UART简介 1.2 通信基础 - 并行和串行 1.3 通信基础 - 单工和双工 1.4 通信基础 - 波特率 1.5 UART帧格式 2 Exynos4412下的UART控制器 2.1 引脚功能设置 2.2 阅读芯片手册 3 UART寄存器详解 3.1 引脚寄存器 3.2 串口寄存器概览 3.3 ULC…...

Ubuntu22.04下打包发布Qt5.15应用程序的方法

Qt应用编译时选择release方式编译 目的&#xff1a;debug方式编译依赖的文件会多一些&#xff0c;同时文件大小还会很大。 Notice: 所有操作都是在当前用户下&#xff0c;如果是root账户&#xff0c;需要注意加上sudo&#xff0c;否则会因为权限问题提取依赖文件失败。 准备…...

初级JVM

1、对象在哪块内存分配&#xff1f; 数组和对象在堆内存分配&#xff1b;某些对象没有逃逸出方法&#xff0c;可能被优化为在栈上分配 2、谈谈 JVM 中的常量池 JDK 1.8 开始 字符串常量池&#xff1a;存放在堆中&#xff0c;包括 String 对象执行 intern() 方法后存的地方、…...

MySQL数据库 编程入门

目录 MySQL数据库数据类型 MySQL数据库命令执行 创建用户 创建删除库 创建删除表 MySQL数据库数据类型 MySQL数据库定义了多种数据类型&#xff0c;下面是一些常见的MySQL数据类型及其对应的C/C类型&#xff1a; 整数类型&#xff1a; TINYINT&#xff1a;有符号范围-1…...

6.golang函数

函数是执行特定任务的代码块。函数接受输入&#xff0c;对输入执行一些计算&#xff0c;然后生成输出。 函数声明 在 go 中声明函数的语法是&#xff1a; func name(parameter) (result-list){//body }函数声明以func关键字开头&#xff0c;后跟name(函数名)。在括号中指定参…...

软件可靠性测试常见的方法

“测试”一般是指“为了发现程序中的错误而执行程序的过程”&#xff0c;可靠的测试性是相对重要的&#xff0c;在部分产品开始的测试阶段&#xff0c;需要的就是可靠的测试性&#xff0c;机构&#xff0c;所以存在意义较大。但是在不同的开发阶段、对于不同的人员&#xff0c;…...

C/C++字节对齐

C/C字节对齐 C/C字节对齐1.G_PACKED2.1 pack(push)2.2 pack(1) 全部例子 C/C字节对齐 1.G_PACKED #ifdef __GNUC__#define G_PACKED( __Declaration__ ) __Declaration__ __attribute__((packed)) #else#define G_PACKED( __Declaration__ ) __pragma( pack(push,1)) __Decla…...

【Android知识笔记】性能优化专题(四)

App 线程优化 线程调度原理 任意时刻,只有一个线程占用CPU,处于运行状态多线程并发:轮流获取CPU使用权JVM负责线程调度:按照特定机制分配CPU使用权线程调度模型 分时调度模型:轮流获取、均分CPU时间抢占式调度模型:优先级高的获取,JVM采用Android线程调度 nice值:Proc…...

DC电源模块的散热措施

BOSHIDA DC电源模块的散热措施 DC电源模块的散热措施可以分为以下几种&#xff1a; 1. 增加散热器&#xff1a;在DC电源模块的电路板上增加散热片或散热器&#xff0c;通过增加散热面积和散热能力来提高散热效果。 2. 增加风扇&#xff1a;在散热器的基础上增加风扇&#xff…...

uniapp H5、小程序、APP端自定义不同运行环境(开发、测试、生产)、自定义条件编译平台、以及动态修改manifest.json值讲解

文章目录 前言一、自定义条件编译平台是什么&#xff1f;二、新增自定义条件编译平台三、动态设置服务器请求地址四、动态修改manifest.json1.根目录新增文件 modifyManifest.js2.vue.config.js引入modifyManifest.js 总结示例代码 前言 企业项目开发流程上一般都要配置多个运…...

centos 显卡驱动安装(chatglm2大模型安装步骤一)

1.服务器配置 服务器系统:Centos7.9 x64 显卡:RTX3090 (24G) 2.安装环境 2.1 检查显卡驱动是否安装 输入命令:nvidia-smi(显示显卡信息) 如果有以下显示说明,已经有显卡驱动。否则需要重装。 2.2 下载显卡驱动 第一步:浏览器输入https://www.nvidia.cn/Downloa…...

05_属性描述符

05_属性描述符 文章目录 05_属性描述符一、属性描述符是什么&#xff1f;二、属性描述符①&#xff1a;查看属性描述②&#xff1a;设置属性描述符③&#xff1a;案例01.代码实现02.代码实现&#xff08;优化&#xff09; 一、属性描述符是什么&#xff1f; 属性描述符的结构 在…...

vue day2

1、指令修饰符&#xff1a;.指明一些指令后缀&#xff0c;不同后缀封装不同处理操作 按键修饰符&#xff1a;keyup.enter v-model修饰符&#xff1a; v-model.trim&#xff1a;去首位空格 v-model.number&#xff1a;转数字 事件修饰符&#xff1a; 阻止事件冒泡&#xff1…...

四川劳动保障杂志社四川劳动保障编辑部四川劳动保障杂志2023年第10期目录

主题报道 四川抢抓“金九银十”招聘季多措并举稳就业促就业 举措频“上新” 金秋送岗忙 张玉芳; 2-5 法眼《四川劳动保障》投稿&#xff1a;cnqikantg126.com 筑牢长期护理保险基金安全防线 李科仲;赖晓薇; 6-7 调研 提升职业技能培训工作的举措 寇爵; 8-9 城乡…...

python数据类型

int 整型 i 1str 字符串 name1Emliy name2"你好" content""" Emily&#xff1a;你好&#xff01; """ test你最"帅" test2"你最帅"float 浮点类型 height182.5 weight45.3bool 布尔类型 f1True f2Falselist …...

大数据-之LibrA数据库系统告警处理(ALM-37004 Datanode主备不同步或者断连)

告警解释 当DN主实例与DN备实例连接异常时&#xff0c;产生该告警。 告警属性 告警ID 告警级别 可自动清除 37004 严重 是 告警参数 参数名称 参数含义 ServiceName 产生告警的服务名称 RoleName 产生告警的角色名称 HostName 产生告警的主机名 Instance 产生…...

带你用uniapp从零开发一个仿小米商场_2.创建空白项目及公共样式引入

创建空白项目 打开uniapp 点击新建->项目 如下, 是编辑你项目的名字的地方是你项目存放地址,可以点击浏览器去文件管理里面选地址是模板选择,这里选择默认模板就好是一些其他选择比如uvue能让你项目在编译成软件时运行更快,unicloud能让你用js写后端,且直接就是云开发,g…...

1144. 连接格点,Kruskal算法,二维矩阵压缩为一维

有一个 m 行 n 列的点阵&#xff0c;相邻两点可以相连。 一条纵向的连线花费一个单位&#xff0c;一条横向的连线花费两个单位。 某些点之间已经有连线了&#xff0c;试问至少还需要花费多少个单位才能使所有的点全部连通。 输入格式 第一行输入两个正整数 m 和 n。 以下若…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集&#xff0c;单周期执行&#xff1b;低功耗、CIP 独立外设&#xff1b;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel&#xff08;原始…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...

五子棋测试用例

一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏&#xff0c;有着深厚的文化底蕴。通过将五子棋制作成网页游戏&#xff0c;可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家&#xff0c;都可以通过网页五子棋感受到东方棋类…...

yaml读取写入常见错误 (‘cannot represent an object‘, 117)

错误一&#xff1a;yaml.representer.RepresenterError: (‘cannot represent an object’, 117) 出现这个问题一直没找到原因&#xff0c;后面把yaml.safe_dump直接替换成yaml.dump&#xff0c;确实能保存&#xff0c;但出现乱码&#xff1a; 放弃yaml.dump&#xff0c;又切…...