vue3+ts 分享海报

javascript 复制代码
安装依赖
 1. npm install html2canvas --save
html 复制代码
<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>
javascript 复制代码
<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>
css 复制代码
<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>
相关推荐
前端的日常26 分钟前
一个人+AI做情侣食谱小程序,0 费用的服务器
前端·后端
计算机魔术师1 小时前
谷歌搜索广告踩刹车,AI广告成为救命稻草
前端
总要学点什么1 小时前
第81篇:数据可视化-PM2.5分布——让圆点的胖瘦替每座城市报出浓度
前端·信息可视化·echarts·cesium·空间分析
IT_陈寒1 小时前
Vue的v-for里用了个临时变量,页面直接挂了
前端·人工智能·后端
hunter_0761 小时前
一次 iOS 真机签名 409 的完整排查:证书、设备、描述文件为什么总是"对不上"
前端
枣把儿1 小时前
开源!公众号排版+一键发布工具懒人版
前端
2501_916007471 小时前
抓包工具功能对比,TraceEagle、Charles、Fiddler、Wireshark、mitmproxy 差别
前端·网络协议·ios·adb·https·fiddler·wireshark
Flynt1 小时前
AI 写的页面一眼假?有人把"假指纹"写成 62 条规则,不用大模型就能跑
前端·ai编程·claude
kyriewen2 小时前
我把 10 道面试题答案真跑了一遍:6 道是错的
前端·javascript·面试
WebInfra2 小时前
Rspack 2.3 发布:联手 SWC 团队带来全新编译器
前端·javascript·github