uniapp——组件多颜色模块展示、气泡框

news2024/11/18 5:30:01

一、自定义颜色:

样式

在这里插入图片描述

代码

<template>
	<view class="content">
		<!-- 右上角 -->
		<view class="coverStatus" :class="[itemClass, positionClass,cornerClass,sanJiaoCss,sanJiaoCss2]"
			:style="dynamicStyle">
			{{title}}
		</view>
	</view>
</template>

<script>
	export default {
		name: "cardTypeCard",
		props: {
			title: {
				type: String,
				default: '进行中',
			},
			cardType: {
				type: String,
				default: 'progress',
			},
			position: {
				type: String,
				default: 'right', // 默认值为 'right'
			},
			cornerStyle: { // 新增的 prop 控制圆角
				type: String,
				default: 'rightTop', // 默认右上角元素的圆角
			},
			sanJiao: {
				type: Boolean,
				default: false, // 默认右上角元素的小三角
			},
			sanJiao2: {
				type: Boolean,
				default: false, // 默认右上角元素的小三角
			},
			width: { // 新增的 prop 控制宽度
				type: String,
				default: '48rpx',
			},
			height: { // 新增的 prop 控制高度
				type: String,
				default: '20rpx',
			},
			fontSize: { // 新增的 prop 控制字体大小
				type: String,
				default: '14rpx',
			},
		},
		computed: {
			//定位
			positionClass() {
				return this.position === 'left' ? 'leftPosition' : 'rightPosition';
			},
			sanJiaoCss() {
				return this.sanJiao == true ? 'sanJiaoAct' : '';
			},
			sanJiaoCss2() {
				return this.sanJiao2 == true ? 'sanJiaoAct2' : '';
			},
			// 圆角样式
			cornerClass() { // 根据 cornerStyle 返回相应的圆角样式类
				switch (this.cornerStyle) {
					case 'rightTop':
						return 'rightDemo';
					case 'leftTop':
						return 'leftDemo';
					default:
						return 'allDemo';
				}
			},
			// 背景颜色
			itemClass() {
				let className;
				switch (this.cardType) {
					case 'progress':
						className = 'blueBg'
						break;
					case 'finish':
						className = 'greyBg'
						break;
					case 'enroll':
						className = 'pinkBg'
						break;
					case 'wait_upload':
						className = 'pinkBg'
						break;
					case 'wait_examine':
						className = 'greyBg'
						break;
					case 'passed':
						className = 'greyBg'
						break;
					case 'fail':
						className = 'redBg'
						break;
				}
				return className;
			},
			// 动态样式对象
			dynamicStyle() {
				return {
					width: this.width,
					height: this.height,
					fontSize: this.fontSize,
				};
			},
		},
	}
</script>
<style lang="scss" scoped>
	// 卡片颜色
	.coverStatus {
		color: #FFFFFF;
		display: flex;
		justify-content: center;
		align-items: center;
		position: absolute;
		top: 0;
	}

	.sanJiaoAct {
	
	}

	.sanJiaoAct::after {
		content: '';
		position: absolute;
		left: 10rpx;
		bottom: -8rpx;
		width: 0;
		height: 0;
		border-top: 6rpx solid var(--triangle-color);
		border-right: 4rpx solid transparent;
		border-bottom: 4rpx solid transparent;
		border-left: 4rpx solid transparent;
	}

	.sanJiaoAct2 {
	}

	.sanJiaoAct2::after {
		content: '';
		position: absolute;
		right: 10rpx;
		bottom: -8rpx;
		width: 0;
		height: 0;
		border-top: 6rpx solid var(--triangle-color);
		border-right: 4rpx solid transparent;
		border-bottom: 4rpx solid transparent;
		border-left: 4rpx solid transparent;
	}

	// 左上角定位
	.leftPosition {
		left: 0;
	}

	// 右上角定位
	.rightPosition {
		right: 0;
	}

	// 右上角圆角
	.rightDemo {
		border-radius: 0rpx 10rpx 0rpx 10rpx;
	}

	// 左上角圆角
	.leftDemo {
		// border-radius: 8rpx 0rpx 8rpx 0rpx;
		border-radius: 15rpx;
	}

	// 全部圆角
	.allDemo {
		border-radius: 15rpx;
	}

	//已报名颜色 、待上传
	.pinkBg {
		background: #F364B3;
		--triangle-color: #F364B3;
	}

	//进行中颜色
	.blueBg {
		background: #A4CBE8;
		--triangle-color: #A4CBE8;
	}

	//已截止、待审核、已完成颜色
	.greyBg {
		background-color: #898989;
		--triangle-color: #898989;
	}

	//已驳回颜色
	.redBg {
		background-color: #ff0000;
		--triangle-color: #ff0000;
	}
</style>

使用

父页面:

<cardTypeColor :cardType="data.task_status" :title="data.task_status_text" cornerStyle="allDemo" :sanJiao="true">
</cardTypeColor>
import cardTypeColor from '@/components/cardTypeColor/cardTypeColor.vue'

二、使用图片作为背景

样式

在这里插入图片描述在这里插入图片描述

代码

<template>
	<view>
		<view class="content" :class="[positionClass]">
			<!-- 右上角 -->
			<block v-if="positionClass == 'rightPosition'">
				<image src="/static/images/index/pinkImg.png" mode="aspectFit" class="signImg"
					v-if="itemClass == 'pinkBg'"></image>
				<image src="/static/images/index/blueImg.png" mode="aspectFit" class="signImg"
					v-if="itemClass == 'blueBg'"></image>
				<image src="/static/images/index/greyImg.png" mode="aspectFit" class="signImg"
					v-if="itemClass == 'greyBg'"></image>
			</block>
			<!-- 左上角 -->
			<block v-if="positionClass == 'leftPosition'">
				<image src="/static/images/index/pinkImg2.png" mode="aspectFit" class="signImg"
					v-if="itemClass == 'pinkBg'"></image>
				<image src="/static/images/index/blueImg2.png" mode="aspectFit" class="signImg"
					v-if="itemClass == 'blueBg'"></image>
				<image src="/static/images/index/greyImg2.png" mode="aspectFit" class="signImg"
					v-if="itemClass == 'greyBg'"></image>
			</block>
			<view class="coverStatus">
				{{title}}
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		name: "cardTypeCard",
		props: {
			title: {
				type: String,
				default: '进行中',
			},
			cardType: {
				type: String,
				default: 'progress',
			},
			position: {
				type: String,
				default: 'right', // 默认值为 'right'
			},
		},
		computed: {
			//定位
			positionClass() {
				return this.position === 'left' ? 'leftPosition' : 'rightPosition';
			},
			// 背景颜色
			itemClass() {
				let className;
				switch (this.cardType) {
					case 'progress':
						className = 'blueBg'
						break;
					case 'finish':
						className = 'greyBg'
						break;
					case 'enroll':
						className = 'pinkBg'
						break;
					case 'wait_upload':
						className = 'pinkBg'
						break;
					case 'wait_examine':
						className = 'greyBg'
						break;
					case 'passed':
						className = 'greyBg'
						break;
					case 'fail':
						className = 'redBg'
						break;
				}
				return className;
			},
		},
	}
</script>
<style lang="scss" scoped>
	.content {
		position: absolute;
		top: 0;
		width: 50rpx;
		height: 32rpx;

		.signImg {
			position: absolute;
			left: 0;
			top: 0;
			width: 100%;
			height: 100%;
		}

		.coverStatus {
			position: absolute;
			left: 1rpx;
			top: 2rpx;
			z-index: 4;
			width: 100%;
			height: 100%;
			color: #FFFFFF;
		}
	}
	// 左上角定位
	.leftPosition {
		left: 0;
	}

	// 右上角定位
	.rightPosition {
		right: 0;
	}
</style>

使用

父页面:

<cardTypeColor :cardType="data.task_status" :title="data.task_status_text" position="left">
</cardTypeColor>
import cardTypeColor from '@/components/cardTypeColor/cardTypeColor.vue'

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

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

相关文章

python辅助QQ登入

python辅助QQ登入 import pyautogui import time import random from pyautogui import ImageNotFoundException# 生成随机等待时间&#xff0c;范围在1到3秒之间 random_time random.uniform(1, 3)def find_and_click(image_path, moveFalse, execute_nextTrue):try:image_l…

Linux防火墙相关命令以及ip白名单配置

Linux防火墙相关命令以及ip白名单配置 firewall防火墙基础命令查看防火墙的服务状态查看防火墙的状态服务的开启、关闭和重启查看防火墙规则端口的查询、开放和关闭重启防火墙 防火墙白名单配置部分参数介绍 firewall防火墙基础命令 查看防火墙的服务状态 systemctl status f…

网络工程师----第十二天

哈希、数字签名和数字证书&#xff1a; PKi体系架构&#xff1a; PKI&#xff08;Public Key Infrastructure&#xff0c;公钥基础设施&#xff09;是通过使用公钥技术和数字证书来提供系统信息安全服务&#xff0c;并负责验证数字证书持有者身份的一种体系。PKI基础设施采用证…

JAVA toString方法详解

hi&#xff0c;我是程序员王也&#xff0c;一个资深Java开发工程师&#xff0c;平时十分热衷于技术副业变现和各种搞钱项目的程序员~&#xff0c;如果你也是&#xff0c;可以一起交流交流。 今天我们来聊聊Java中toString方法~ toString方法的定义 在Java中&#xff0c;toStri…

2024年区块链链游即将迎来大爆发

随着区块链技术的不断发展和成熟&#xff0c;其应用领域也在不断扩展。其中&#xff0c;区块链链游&#xff08;Blockchain Games&#xff09;作为区块链技术在游戏行业中的应用&#xff0c;备受关注。2024年&#xff0c;区块链链游行业即将迎来爆发&#xff0c;这一趋势不容忽…

如何为Windows计算机选择最佳数据恢复工具?

学术或专业平台上的每个人都会遭受意外的数据丢失。数据丢失的原因有很多&#xff0c;包括意外删除、软件损坏或病毒攻击。人们需要一个可靠的数据恢复工具来解决这个问题&#xff0c;以恢复丢失的文件。由于有许多数据恢复软件&#xff0c;恢复已删除的文件不是问题。 您是否…

matlab回归学习

前言 所谓回归学习即预测&#xff0c;便是由已知的数据推测未知的数据&#xff0c;利用转速与转矩来推测电流。 1、数据准备 下面虚拟一组转速转矩以及电流数据。 speed [100 220 330 440 550 660]; torque [200 300 400 500 700 900]; I [400 500 603 739 821 912]; arr …

Appium一本通

Appium介绍 概念&#xff1a;Appium是一个移动App(手机应用)自动化工具。 用途&#xff1a;重复性任务、爬虫、自动化测试。 特点&#xff1a;开源免费、多平台支持(ios\android)、多类型支持(native\webview)、类selenium支持多语言(java\python\js\ruby) Appium原理 三个主…

数据分析学习资源(未完)

1、PDF 数据分析自学攻略 增长黑客&#xff08;AARRR&#xff09; 量化思维

齐护K210系列教程(二)_点亮板载灯

文章目录 1&#xff0c;程序的上传2&#xff0c;点亮板载R-G-B三色灯2-1 齐护编程块方式 2&#xff0c;红色呼吸灯&#xff08;渐亮渐灭&#xff09;4&#xff0c;RGB幻彩呼吸灯联系我们 1&#xff0c;程序的上传 接上节课&#xff0c;我们选择板卡【MicroPython[QDPK210_AIst…

生成式AI原理技术详解(一)——神经网络与深度学习

本文主要介绍了生成式AI的最新发展&#xff0c;提到了GPT-5和AI软件工程师在行业中的影响&#xff0c;指出AI技术进步对国家竞争和个人职业发展的潜在影响。 未来已来 最近有两则新闻&#xff1a; sam altman自曝GPT-5细节&#xff0c;公开宣称GPT-5提升将非常大&#xff0c;任…

有哪些实用的AI绘画软件?不要错过这7款AI画画神器

随着人工智能软件的不断推出&#xff0c;其中备受瞩目的AI绘画工具为创作者们带来了崭新的创作方式和激发灵感的机会&#xff0c;下面跟着小编一起探索AI技术在绘画领域的无限可能&#xff01;看看有哪些实用的AI绘画软件&#xff1f; 第一款&#xff1a;爱制作AI 爱制作AI是一…

计算机网络物理层思维导图+大纲笔记

大纲笔记&#xff1a; 物理层的基本概念 解决如何在连接各种计算机的传输媒体上传输数据比特流&#xff0c;而不是具体的传输媒体 主要任务 确定与传输媒体接口有关的一些特性 机械特性 电气特性 功能特性 规程特性信道上传送的信号 基带信号 来自信源的信号&#xff0c;直接表…

如何恢复已删除的微信联系人?

“您好&#xff0c;我删除了微信中的 5 个联系人。微信中已删除的联系人可以恢复吗&#xff1f;我使用的是 iPhone 15。” – 董奇 现在&#xff0c;越来越多的人使用微信应用程序与他人交流。微信中的联系人可能对我们来说非常重要。如果您误删了一些联系人&#xff0c;则必须…

云安全防御篇:如何识别并做好服务器DDoS防护?

伴随着全球互联网业务和云计算的快速发展&#xff0c;作为一种破坏力巨大的攻击方式&#xff0c;DDoS攻击正以超出服务器承受能力的流量淹没网站&#xff0c;导致服务器宕机、企业营业额下跌&#xff0c;甚至企业品牌形象受损。越是面对复杂的攻击&#xff0c;就需要性能更强的…

力荐!吃透这34张思维导图你的网络架构就赢了(附高清版下载)

计算机网络是进入到IT行业的第一道门槛。虽然是入门级别&#xff0c;但知识又多又杂&#xff0c;初学者很难记忆。 今天就分享34张思维导图&#xff0c;帮你梳理网络知识架构&#xff0c;加深印象快速掌握关键核心知识点&#xff0c;需要的便宜一定要收藏认真观看&#xff01;…

用户中心 -- 插件使用 插件使用思路

易错注意点 1 5.1启动类 & 入口类 需保持一致 网址&#xff1a; 第一节课&#xff0c;用户管理--后端初始化&#xff0c;项目调通。二次翻工2-CSDN博客 一、 用户管理 框架 网址&#xff1a; 用户管理 --汇总 -- 明细-CSDN博客 1.2 更改路径&#xff0c;并生效 网址…

SV-7041T IP网络有源音箱 教室广播多媒体音箱(带本地扩音功能)教学广播音箱 办公室背景音乐广播音箱 2.0声道壁挂式网络有源音箱

SV-7041T IP网络有源音箱 教室广播多媒体音箱&#xff08;带本地扩音功能&#xff09; 教学广播音箱 办公室背景音乐广播音箱 一、描述 SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带…

网络安全之SQL注入及防御(下篇)

目录 什么是SQL注入&#xff1f; 一&#xff0c;SQL注入会导致什么呢&#xff1f; 二&#xff0c;SQL注入思想与步骤 三&#xff0c;SQL注入的绕过 四&#xff0c;sqlmap工具的使用 五&#xff0c;sql注入的防御方法 总结 什么是SQL注入&#xff1f; SQL注入&#xff08;…

C#带引导窗体的窗体设计方法:创建特殊窗体

目录 1.设计操作流程 2.实例 &#xff08;1&#xff09;Resources.Designer.cs &#xff08;2&#xff09;Frm_Main.Designer.cs &#xff08;3&#xff09;Frm_Main.cs &#xff08;4&#xff09;Frm_Start.Designer.cs &#xff08;5&#xff09;Frm_Start.cs &#…