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

Vue3渐变文字(GradientText)

效果如下图:在线预览

在这里插入图片描述

APIs

GradientText

参数说明类型默认值必传
gradient文字渐变色参数string | Gradientundefinedfalse
size文字大小,不指定单位时,默认单位 pxnumber | string14false
type渐变文字的类型‘primary’ | ‘info’ | ‘success’ | ‘warning’ | ‘error’‘primary’false

Gradient Type

名称说明类型必传
from起始颜色stringtrue
to终点颜色stringtrue
deg渐变角度,单位 degnumber | stringfalse

创建渐变文字组件GradientText.vue

<script setup lang="ts">
import { computed } from 'vue'
interface Gradient {from: stringto: stringdeg?: number | string // 渐变角度,默认 252deg
}
interface Props {gradient?: string | Gradient // 文字渐变色参数size?: number | string // 文字大小,不指定单位时,默认单位 pxtype?: 'primary' | 'info' | 'success' | 'warning' | 'error' // 渐变文字的类型
}
const props = withDefaults(defineProps<Props>(), {gradient: undefined,size: 14,type: 'primary'
})
enum TypeStartColor {primary = 'rgba(22, 199, 255, 0.6)',info = 'rgba(22, 199, 255, 0.6)',success = 'rgba(82, 196, 26, 0.6)',warning = 'rgba(250, 173, 20, 0.6)',error = 'rgba(255, 77, 79, 0.6)'
}
enum TypeEndColor {primary = '#1677FF',info = '#1677FF',success = '#52c41a',warning = '#faad14',error = '#ff4d4f'
}
const gradientText = computed(() => {if (typeof props.gradient === 'string') {return {backgroundImage: props.gradient}}return {}
})
const rotate = computed(() => {if (typeof props.gradient === 'object' && props.gradient.deg) {return isNumber(props.gradient.deg) ? props.gradient.deg + 'deg' : props.gradient.deg}return '252deg'
})
const colorStart = computed(() => {if (typeof props.gradient === 'object') {return props.gradient.from} else {return TypeStartColor[props.type]}
})
const colorEnd = computed(() => {if (typeof props.gradient === 'object') {return props.gradient.to} else {return TypeEndColor[props.type]}
})
const fontSize = computed(() => {if (typeof props.size === 'number') {return props.size + 'px'}if (typeof props.size === 'string') {return props.size}
})
function isNumber(value: string | number): boolean {return typeof value === 'number'
}
</script>
<template><spanclass="m-gradient-text":style="[`--rotate: ${rotate}; --color-start: ${colorStart}; --color-end: ${colorEnd}; --font-size: ${fontSize};`,gradientText]"><slot></slot></span>
</template>
<style lang="less" scoped>
.m-gradient-text {display: inline-block;font-size: var(--font-size);font-weight: 500;line-height: 1.5714285714285714;-webkit-background-clip: text;background-clip: text;color: #0000;white-space: nowrap;background-image: linear-gradient(var(--rotate), var(--color-start) 0%, var(--color-end) 100%);transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
</style>

在要使用的页面引入

<script setup lang="ts">
import GradientText from './GradientText.vue'
</script>
<template><div><h1>{{ $route.name }} {{ $route.meta.title }}</h1><h2 class="mt30 mb10">基本使用</h2><Space vertical><GradientText>basic</GradientText><GradientText type="info">info</GradientText><GradientText type="success">success</GradientText><GradientText type="warning">warning</GradientText><GradientText type="error">error</GradientText></Space><h2 class="mt30 mb10">文字大小</h2><Space vertical><GradientText :size="36" type="info">Live Forever</GradientText><GradientText :size="36" type="error">Live Forever</GradientText><GradientText :size="24" type="warning">Married with Children</GradientText><GradientText :size="24" type="success">Back in the USSR</GradientText></Space><h2 class="mt30 mb10">自定义颜色</h2><Space vertical><GradientText:size="24":gradient="{from: 'rgb(85, 85, 85)',to: 'rgb(170, 170, 170)'}">定制颜色</GradientText><GradientText:size="24":gradient="{deg: 180,from: 'rgb(85, 85, 85)',to: 'rgb(170, 170, 170)'}">定制颜色</GradientText><GradientText:size="28":gradient="{deg: '90deg',from: '#09c8ce',to: '#eb2f96'}">和标题一样的颜色</GradientText><GradientText :size="24" gradient="linear-gradient(90deg, red 0%, green 50%, blue 100%)">瞎写的颜色</GradientText></Space></div>
</template>

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 浅写:vs-select的传参方法,传递一整行参数,而不是单个
  • 《云原生安全攻防》-- 容器攻击案例:Docker容器逃逸
  • Git进阶(十四):Windows下 git 提示 Repository not found
  • 如何评估AI模型:评估指标的分类、方法及案例解析
  • JMeter进行HTTP接口测试的技术要点
  • C语言 | Leetcode C语言题解之第236题二叉树的最近公共祖先
  • Pycharm与Gitlab交互
  • 探索大模型能力--prompt工程
  • 【轻松拿捏】Java都有哪些特性?
  • 怎么做度假酒店神秘顾客调查?
  • RflySim工具链常见问题解答
  • Kafka接收消息
  • 《简历宝典》12 - 简历中“项目经历”,内功学习 - 下篇
  • 2024最新最全面的软件测试自动化面试题(含答案)
  • 网络爬虫Scrapy shell 的使用和介绍
  • __proto__ 和 prototype的关系
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 2018一半小结一波
  • angular2 简述
  • C++入门教程(10):for 语句
  • crontab执行失败的多种原因
  • HTTP--网络协议分层,http历史(二)
  • HTTP中GET与POST的区别 99%的错误认识
  • js继承的实现方法
  • Laravel Telescope:优雅的应用调试工具
  • mysql常用命令汇总
  • October CMS - 快速入门 9 Images And Galleries
  • python_bomb----数据类型总结
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Spark RDD学习: aggregate函数
  • 工程优化暨babel升级小记
  • 关于List、List?、ListObject的区别
  • 手写一个CommonJS打包工具(一)
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 阿里云API、SDK和CLI应用实践方案
  • 通过调用文摘列表API获取文摘
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # 数据结构
  • #Linux(Source Insight安装及工程建立)
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)(1.13) SiK无线电高级配置(五)
  • (1)STL算法之遍历容器
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (4.10~4.16)
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (多级缓存)缓存同步
  • (二)springcloud实战之config配置中心
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (论文阅读11/100)Fast R-CNN
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (面试必看!)锁策略
  • (转)全文检索技术学习(三)——Lucene支持中文分词