前天看到掘金酱发的这个活动,便想着参加一下. 毕竟有奖品哈哈哈.
然后呢,我打算实现了一个春节祝福卡片的效果.
这是下面的效果:
同时也支持保存当前卡片,保存本地
布局:
布局和样式倒没有什么可以说的,唯一就是那个卡片3d翻转效果, 主要用到了backface-visibility
属性
祝福文案我让chatGpt 给我生成了一份json格式的数据, 别说,真的蛮方便的. 而且质量也很可以.
const btn = document.querySelector('.btn');
const card = document.querySelector('.card');
// 获取到龙图元素
const long = document.getElementById('logo');
// 获取到祝福文本元素
const greetings = document.querySelector('.greetings');
// 获取新年文案的方法
const getGreet = async () => {
const res = await fetch('./assets/data.json');
const data = await res.json();
// 随机取出data的某一项
const randomIndex = Math.floor(Math.random() * data.length);
const randomtext = data[randomIndex].text;
return randomtext
}
// 插入新年文案
const insertText = async () => {
greetings.innerHTML = await getGreet();
}
// 点击龙切换祝福语
long.addEventListener('click', function () {
// 随机文本插入
insertText()
// 发出音效
var audio = new Audio();
audio.src = './assets/long.mp3';
audio.autoplay = true;
})
contenteditable
是一个 HTML 属性,用于使元素可编辑。当将 contenteditable
属性设置为 "true"
时,元素的内容可以被用户编辑。
<div class="title" contenteditable="true">亲爱的掘友们</div>
<br>
<div class="greetings" contenteditable="true">春节到了,
愿您携一份开朗的心情,过好每一天, 做一个积极乐观的人,
展望一个金灿灿的未来. 身体健康, 万事如意, 心想事成,早日暴富
</div>
contenteditable
属性在大多数现代浏览器中得到支持,但在某些旧版本的浏览器中可能存在不一致的行为。因此,在使用时要进行兼容性测试,并确保所需的功能在目标浏览器中正常工作。
这里我们使用到了两个第三方库
html2canvas
:它是一个流行的 JavaScript 库,用于在浏览器中将 DOM 元素转换为 canvas
。它的主要功能是将网页中的可见内容(包括 HTML 元素、CSS 样式、图像等)绘制到一个 canvas
元素中,从而实现截图、快照或生成图像等功能。FileSaver.js
:它是一个用于在浏览器中保存文件的 JavaScript 库。它提供了一种简单的方法来生成 Blob
对象,并将其保存为本地文件。FileSaver.js
支持在浏览器中保存各种类型的文件,例如文本文件、图像文件、PDF 文件等。下面展示一下基本的用法:
const targetElement = document.getElementById('target');
html2canvas(targetElement).then(function(canvas) {
document.body.appendChild(canvas); // 在页面中插入生成的 canvas 元素
});
const blob = new Blob(['Hello, World!'], { type: 'text/plain;charset=utf-8' });
saveAs(blob, 'hello.txt');
创建一个包含字符串 'Hello, World!'
的 Blob
对象,并使用 saveAs
函数将其保存为名为 'hello.txt'
的文本文件。
介绍完基本用法之后, 看看我们的demo 里面如何写的
canvas
对象,然后使用 FileSaver.js
库将 canvas
转换为 Blob
对象并保存为本地文件。 function captureAndSave() {
const targetElement = document.getElementById('target');
html2canvas(targetElement).then(function (canvas) {
canvas.toBlob(function (blob) {
// 使用 FileSaver.js 保存 Blob 对象到本地文件
saveAs(blob, 'screenshot.png');
});
});
}
祝大家在新的一年里面, 工作顺利, 身体健康🥰🥰🥰. 向着自己向往的样子而努力奋斗!!!✊✊✊