麻烦老师看下是否正确,谢谢老师
来源:6-7 完成案例文字图片显示和变换
秋荏苒
2019-09-17 20:08:30
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
* {
margin: 0;
padding: 0;
}
input::-webkit-input-placeholder, textarea::-webkit-input-placeholder {
color: #acacac;
}
input:-moz-placeholder, textarea:-moz-placeholder {
color: #acacac;
}
input::-moz-placeholder, textarea::-moz-placeholder {
color: #acacac;
}
input:-ms-input-placeholder, textarea:-ms-input-placeholder {
color: #acacac;
}
.wrap {
margin: 100px auto;
width: 1500px;
}
.form-wrap {
width: 500px;
height: 400px;
background: rgb(172, 171, 163);
float: left;
}
.input {
display: block;
width: 400px;
height: 30px;
margin-bottom: 40px;
margin-left: 50px;
border: none;
outline: none;
border-radius: 20px;
text-indent: 20px;
}
.input:first-child {
margin-top: 50px;
}
.btn {
display: block;
width: 100px;
height: 30px;
background: black;
color: #bcbcbc;
border: none;
outline: none;
border-radius: 20px;
margin: 0 auto;
cursor: pointer;
box-shadow: 0 0 3px rgba(0, 0, 0, .7);
}
.btn:hover {
color: white;
}
.btn:active {
box-shadow: none;
}
.canvas-wrap {
width: 1000px;
height: 400px;
background: rgb(240, 237, 220);
float: left;
}
.canvas {
display: block;
/*background: black;*/
margin: 100px auto;
}
</style>
</head>
<body>
<div class="wrap">
<div class="form-wrap">
<input type="text" class="input" id="name" placeholder="姓名" autocomplete="off">
<input type="text" class="input" id="addr" placeholder="地址" autocomplete="off">
<input type="text" class="input" id="job" placeholder="职业" autocomplete="off">
<input type="text" class="input" id="slogan" placeholder="口号" autocomplete="off">
<button class="btn" id="btn">生成名片</button>
</div>
<div class="canvas-wrap">
<canvas class="canvas" id="canvas" width="600" height="100"></canvas>
</div>
</div>
<script>
const canvas = document.querySelector("#canvas"),
name = document.querySelector("#name"),
addr = document.querySelector("#addr"),
job = document.querySelector("#job"),
slogan = document.querySelector("#slogan"),
btn = document.querySelector("#btn"),
ctx = canvas.getContext("2d");
// 绘制画布
function draw(name, addr, job, slogan) {
const lineGradient = ctx.createLinearGradient(450, 0, 600, 100);
lineGradient.addColorStop(0, 'black');
lineGradient.addColorStop(1, 'rgba(181,181,181,0.3)');
ctx.save();
ctx.fillStyle = lineGradient;
ctx.fillRect(0, 0, 600, 100);
const img = new Image();
img.src = 'https://pic.superbed.cn/item/5d80bbc8451253d178487448.png';
img.onload = function () {
ctx.restore();
ctx.drawImage(img, 180, 100, 275, 211, 0, 0, 150, 100)
};
let nameStr = name || "请输入姓名",
addrStr = addr || "请输入地址",
jobStr = job || "请输入职业",
sloganStr = slogan || "请输入口号",
sloganDistance = 350;
ctx.fillStyle = 'white';
ctx.font = "30px sans-serif";
ctx.fillText(nameStr, 160, 35);
ctx.font = "20px sans-serif";
ctx.fillText(addrStr, 160, 60);
ctx.fillText(jobStr, 160, 85);
let nameStrWidth = ctx.measureText(nameStr).width,
sloganX = sloganDistance + nameStrWidth;
ctx.textAlign = "center";
ctx.rotate(-7 * Math.PI / 180);
ctx.fillText(sloganStr, sloganX, 110);
}
draw();
// 点击事件
btn.onclick = function () {
ctx.clearRect(0, 0, 600, 100);
let nameVal = name.value,
addrVal = addr.value,
jobVal = job.value,
sloganVal = slogan.value;
draw(nameVal, addrVal, jobVal, sloganVal);
};
</script>
</body>
</html>1回答
好帮手慕慕子
2019-09-18
同学你好, 老师测试同学的代码, 实现与视频中的效果一样, 很棒哦, 继续加油
欢迎采纳,祝学习愉快~~~
相似问题