老师问个问题,canvas里什么都不显示
来源:3-1 canvas画直线(1)
小屁鹤
2019-11-08 15:59:19
画的线不显示
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <!-- 引入样式 --> <link rel="stylesheet" type="text/css" href="../css/element-ui.css"> <link rel="stylesheet" type="text/css" href="../css/login.css"> <!-- <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"> --> <!-- 引入组件库 --> <script type="text/javascript" src="../js/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="../js/vue.min.js"></script> <script src="../js/element-ui.js"></script> <style> #myCanvas{ border: 1px solid red; } </style> </head> <body> <div id="app"> <div class="logincanvas"> <canvas id="myCanvas" width="654" height="600">当前浏览器不支持canvas</canvas> </div> <div class="form-outer"> <div class="form-space"> <span class="login-text">登录</span> <span class="register-text">注册</span> <el-form class="form-insert" ref="form" :model="form" label-width="60px" :rules="rules"> <el-form-item label="用户名" prop="username"> <el-input v-model="form.username"></el-input> </el-form-item> <el-form-item label="密码" prop="password"> <el-input v-model="form.password" type="password"></el-input> </el-form-item> <el-form-item class="form-last"> <el-button type="primary" @click="onSubmit">登录</el-button> <el-button @click="resetForm">重置</el-button> </el-form-item> </el-form> </div> </div> </div> <script type="text/javascript" src="../js/login.js"></script> <script> new Vue({ el: '#app', data: function() { return { form: { username: '', password: '' }, rules: { username: [{ required: true, message: '请输入用户名', trigger: 'blur' }, { min: 1, max: 32, message: '长度在1-32个字符', trigger: 'blur' } ], password: [{ required: true, message: '请输入密码', trigger: 'blur' }, { min: 6, max: 32, message: '长度在1-32个字符', trigger: 'blur' } ] } } }, methods: { onSubmit: function() { var _this = this; _this.$refs['form'].validate(function(valid) { if(valid) { $.ajax({ url: 'http://127.0.0.1/user/login', type: 'post', data: _this.form, dataType: 'json', success: function(data) { if(data.success) { if(data.code == 2) { window.location.href='index.html'; } else { _this.$message(data.message); } } else { _this.$message(data.message); } } }); } }); }, resetForm: function() { this.form.username = ''; this.form.password = ''; } } }); </script> </body> </html> 下面是js
var canvas = document.getElementById("myCanvas"); var ctx = canvas.getContext("2d"); ctx.moveTo(50,400); ctx.lineTo(150,500); ctx.lineTo(250,400); ctx.lineTo(150,300); ctx.lineTo(50,400); ctx.stroke();
1回答
同学你好, 老师测试你粘贴的这部分代码, 因为canvas是在id名为app的div下, 你后面创建Vue实例对象的时候重新渲染了页面,所以canvas中什么都不显示。
因为同学粘贴的这段代码不是课程的, 不知道同学具体想要实现什么样的效果, 这里提供两种参考方式给同学参考
修改html结构, 将canvas放在#app外面
调整与canvas画线有关的js代码, 让其在Vue示例渲染完成之后在执行
测试的结果
如果帮助到了你, 欢迎采纳,祝学习愉快~~~
相似问题