麻烦老师看下是否正确,谢谢老师
来源: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
同学你好, 老师测试同学的代码, 实现与视频中的效果一样, 很棒哦, 继续加油
欢迎采纳,祝学习愉快~~~
相似问题