vue3+ts 分享海报

news2024/10/6 8:28:19

在这里插入图片描述

安装依赖
 1. npm install html2canvas --save
<div class="flex-box">
	<div>
		<div v-for="(item,index ) in  from.list" :key="index" @click="actvieFuntion(index)">
			<div>{{item}}</div>
			<div :class="from.activeIndex == index?'box':'box-1'"></div>
		</div>
	</div>
	<div class="left">
		<div class="">模板-{{from.activeIndex+1}}</div>
		<div class="border-mo" >
			<div id="CodeImgBase64">
				<div class="b-p-i">
					<div class="bg">
						<div class="tutle">
							<div class="text">iQOO 11S 16GB+1TB 传奇版超算独显芯片|2K 144Hz E6 全感屏|第二代骁龙8|200W 超快闪充|索尼定制 VCS IMX866</div>
						</div>
						<div class="to-moeny"><span class="c-o"></span><span>8999.00</span><span class="y-m">原价9999.00</span></div>
						<div class="img-w-h">
							<img src=".././../../static/code.png" alt="">
						</div>
					</div>
				</div>
			</div>
		</div>
		<div class="b-l">
			<el-button type="primary" @click="createPoster">下载海报</el-button>
		</div>
	</div>
</div>
<script lang="ts" setup>
	import html2canvas from "html2canvas"
	import {ref,reactive} from 'vue'
	const dialogVisible = ref(true)
	var from = reactive({
		list: ['模板1', '模板2', '模板3'],
		activeIndex: 0,
		posterImg: '',
		
	})
	const actvieFuntion = (num: any) => {
		from.activeIndex = num
	}
	const createPoster = ()=> {
	      // 生成海报
	      const domObj = document.getElementById("CodeImgBase64")
	      //显示海报
	      html2canvas(domObj, {
	        useCORS: true,
	        allowTaint: false,
	        logging: false,
	        letterRendering: true,
	        onclone(doc:any) {
				let e = doc.querySelector("#CodeImgBase64");
				e.style.display = "block";
				console.log(doc)
	        }
	      }).then((canvas:any)=> {
	        // 在微信里,可长按保存或转发
	        var a = canvas.toDataURL("image/png");
			console.log(a)
	      });
	    }
</script>
<style scoped lang="scss">
	
	.dialog-footer button:first-child {
		margin-right: 10px;
	}

	.flex-box {
		display: flex;

		.box {
			width: 200px;
			height: 300px;
			border-radius: 10px;
			border: 3px solid #00aa00;
		}

		.box-1 {
			width: 200px;
			height: 300px;
			border-radius: 10px;
			border: 3px solid #aaaaaa;
		}

		.left {
			margin-left: 100px;

			.border-mo {
				width: 400px;
				height: 600px;
				border: 3px solid #aaaaaa;
				border-radius: 10px;
			}

			.b-l {
				width: 400px;
				text-align: center;
				margin-top: 30px;
			}
		}
		#CodeImgBase64{
		 width: 400px;
		 height: 600px;
		 background-color: #ffffff;
		 border-radius: 10px;
		 
		}
		.b-p-i{
			width: 350px;
			height: 550px;
			background-color: #dcdcdc;
			margin: auto;
			border-radius: 10px;
			position: relative;
			top: 10px;
		}
		.bg{
			background-image: url('../../../static/phone.png');
			background-repeat: no-repeat;
			width: 350px;
			height: 400px;
			background-size: cover;
			margin: auto;
			border-radius: 10px;
			.tutle{
				position: relative;
				top: 328px;
				background: rgba(#000, 0.4);
				margin: auto;
				color: #fff;
				border-radius: 0px 0px 10px 10px;
				.text{
					width: 340px;
					margin: auto;
					font-size: 13px;
				}
			}
			.to-moeny{
				position: relative;
				top: 338px;
				left: 20px;
				font-size: 20px;
				font-weight: bold;
				color:red;
				.c-o{
					font-size: 12px;
					color:red;
					margin-right: 2px;
				}
			}
			.y-m{
				font-size: 10px;
				margin-left: 5px;
				color: #aaaaaa;
				text-decoration: line-through;
				font-weight: 400;
			}
			.img-w-h{
				position: relative;
				top: 358px;
				width: 70px;
				margin: auto;
				img{
					width: 70px;
					height: 70px;
				}
			}
		}
	}
</style>

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

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

相关文章

算法训练营day46|动态规划 part08:完全背包 (LeetCode 139. 单词拆分)

139. 单词拆分 (求排列方法) 题目链接&#x1f525;&#x1f525; 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict&#xff0c;判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明&#xff1a; 拆分时可以重复使用字典中的单词。 你可以假设字典中没…

AIGC之文本内容生成概述(下)—— GPT

GPT&#xff08;GenerativePre-TrainedTransformer&#xff09; 提到GPT模型&#xff0c;就不得不说众所周知的ChatGPT模型&#xff0c;ChatGPT的发展可以追溯到2018年&#xff0c;当时OpenAI发布了第一代GPT模型&#xff0c;即GPT-1&#xff0c;该模型采用Transformer结构和自…

Tableau自学四部曲_Part2:数据连接可视化原理

文章目录 一、数据连接1. 连接类型2. 连接方式3. 提取方式4. 连接筛选5. 保存类型6. 数据处理7. 理解本文的数据 二、可视化原理1. 做个小实验2. 数据是如何变成图表的&#xff1f;&#xff08;1&#xff09;数据变成图表的过程&#xff0c;就是用数据映射到视觉图形的过程&…

180B参数的Falcon登顶Hugging Face,最好开源大模型使用体验

文章目录 使用地址使用体验 使用地址 https://huggingface.co/spaces/tiiuae/falcon-180b-demo 使用体验 相比Falcon-7b&#xff0c;Falcon-180b拥有1800亿的参数量&#xff0c;在智能问答领域做到了Top 1。在回答问题的深度和广度上都明显优于只有70亿参数量的Falcon-7b&…

容器编排学习(二)镜像制作和私有仓库介绍

一 Dockerfile 1 概述 commit的局限 很容易制作简单的镜像&#xff0c;但碰到复杂的情况就十分不方便例如碰到下面的情况需要设置默认的启动命令需要设置环境变量需要指定镜像开放某些特定的端口 Dockerfile就是解决这些问题的方法 Dockerfile是一种更强大的镜像制作方式…

蓝牙方案|伦茨科技最新ESL蓝牙电子价签方案

随着电子货架标签市场无线标准的发布&#xff0c;蓝牙技术将协助零售业进行下一阶段的数字化转型&#xff0c;为商店和购物者提供更好的消费体验。电子货架标签提供了精准的自动定价&#xff0c;并增加了对实时促销和产品信息的访问&#xff0c;提供更令人满意且整合的全渠道体…

如何用Java编写代码来等待一个线程join()??

笔者在前面几篇文章中详细的讲解了&#xff1a;线程and进程的区别及其各种对比&#xff0c;如何中断一个线程等文章&#xff0c;接下来本篇文章主要讲解&#xff1a;用Java编写代码来等待一个线程join()&#xff1f;&#xff1f; 线程之间是并发执行的&#xff0c;操作系统对于…

清华开源LLM中英双语对话语言模型ChatGLM2,效果能赶超ChatGPT?

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数.ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,其第二代继承了第一代的优秀特点,并在第一代的基础上,更新了更多的新特性。 更强大的性能: C…

C语言——程序环境和预处理(再也不用担心会忘记预处理的知识)

了解程序环境和预处理 前言&#xff1a;一、程序环境二、编译链接2.1 翻译环境2.2 编译的几个阶段2.3 运行环境 三、预处理3.1 预定义符号3.2. #define的使用3.2.1 #define 定义标识符3.2.2 #define 定义宏3.2.3 #define 替换规则3.2.4 #和##的用途3.2.5 带副作用的宏参数3.2.6…

数据结构大作业 成绩分析c语言程序设计

界面加载 界面展示 成绩输入 求平均成绩 升序排列 降序排列 名字排序 按名字搜索 按ID搜索 每门课成绩分析 成绩单展示 -

1.6 二次曲面

二次曲面 文章目录 二次曲面知识点1 二次曲面的概念知识点2 常见的二次曲面知识点3 空间曲面小结 知识点1 二次曲面的概念 定义1 三元二次方程&#xff08;二次项系数不全为0&#xff09; A x 2 B y 2 C z 2 D x y E y z F z x G x H y I z J 0 Ax^2By^2Cz^2DxyEyzF…

Windows 12 网页版,开源了!

公众号关注 “GitHubDaily” 设为 “星标”&#xff0c;每天带你逛 GitHub&#xff01; 自 1985 年微软发布第一代 Windows 系统后&#xff0c;其市场占比一直逐步攀升。经过数十年的迭代发展&#xff0c;目前 Windows 已成为全球桌面操作系统的主导者。 今年整个科技行业开始拥…

Canal使用

什么是Canal Canal 主要用途是基于 MySQL 数据库增量日志解析&#xff0c;提供增量数据订阅和消费。 早期阿里巴巴因为杭州和美国双机房部署&#xff0c;存在跨机房同步的业务需求&#xff0c;实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始&#xff0c;业务逐…

杭州快递物流展-2024长三角快递物流供应链与技术装备展览会(杭州)

2024快递物流创新高质量发展论坛暨 2024长三角快递物流供应链与技术装备展览会(杭州) 时间&#xff1a;2024年4月12-14 日 地点&#xff1a;杭州国际博览中心 ESYE长三角快递物流展是亚洲范围内超大规模的快递物流业展示平台&#xff0c;由于展会的需求 及扩大市场的影响力…

【Tools】如何在VSCode上使用C++ 保姆教程

VSCode&#xff08;Visual Studio Code&#xff09;是一款轻量级的代码编辑器&#xff0c;拥有丰富的插件生态系统&#xff0c;支持多种语言开发。在本文中&#xff0c;将介绍如何在 VSCode 中配置 C 环境&#xff0c;以便于开发和调试 C 代码。 VSCode 具有以下优势&#xff1…

山寨能走多远?盗版还是盗火?KCC@深圳活动圆满举办

2023.8.19 &#xff0c;我们组织了一场大家期待已久的线下活动&#xff1a; KCC深圳&#xff1a;Kickoff & 读书会Meetup 来了深圳都是深圳人&#xff0c;没有哪座城市能够像深圳代表中国改革开放的发展历程&#xff0c;年轻、上进、有活力、拥抱新事物&#xff0c;同样&am…

Java版本企业工程行业管理系统源码

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示1…

直接接入电商API接口实现调用封装好的商品详情SKU数据参数及返回

什么是API&#xff1f; API全称为Application Programming Interface&#xff0c;中文是应用程序编程接口。它其实是一些预先定义的函数&#xff0c;目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问源码&#xff0c;或理解内部工…

02_瑞萨GUI(LVGL)移植实战教程之创建第一个工程并适配串口打印功能

本系列教程配套出有视频教程&#xff0c;观看地址&#xff1a;https://www.bilibili.com/video/BV1gV4y1e7Sg # 2. 创建第一个工程适配串口打印功能 本次实验我们通过创建一个简单的工程&#xff0c;在其基础上完成串口打印功能&#xff0c;从而熟悉 e2stduio&#xff08;Rene…

linux系统中固化和更新uboot、zImage和dtb方法(经典)

​ 大家好&#xff0c;今天给大家介绍一下imx6ull固化和更新uboot、zImage和dtb方法总结&#xff0c;希望这篇文章对大家有所帮助。 进行固化和更新的前提&#xff0c;uboot.imx、zImage、imx6ull.dtb和rootfs已经编译好&#xff0c;并且能成功启动和挂载。 在讲解imx6ull固…