当前位置: 首页 > news >正文

北京市基础建设质量监督局网站海淀网站建设龙岩

北京市基础建设质量监督局网站,海淀网站建设龙岩,打开网站自动弹出qq,网站推广效果如何目录#x1f31f;前言#x1f31f;粉丝先看#x1f31f;创建Vue3项目#x1f31f;引入Element Plus#x1f31f;实现代码#xff08;详细注释#xff09;#x1f31f;写在最后#x1f31f;JSON包里写函数#xff0c;关注博主不迷路#x1f31f;前言 哈喽小伙伴们前言粉丝先看创建Vue3项目引入Element Plus实现代码详细注释写在最后JSON包里写函数关注博主不迷路前言 哈喽小伙伴们上一期给大家总结了一些常见的Vue实战中的经常用到的Vue小魔法私下也收到了好多小伙伴的补充小伙伴们实在是太强啦和大家一起共同学习进步真的很开心。今天博主使用Vue3结合ElementPlus和Canvas实现一个建议的画板支持将绘画作品导出为图片哦一起来看下吧。 粉丝先看 博主实在没有绘画细胞大家别笑创建Vue3项目 1.使用vite构建一个vue3项目 npm create vitelatestProject name你的项目名 Select a framework:框架选择Vue Select a variant:语言选择TypeSceript cd vite-project npm install npm run dev 这样你的项目就创建好了 引入Element Plus Element-Plus官网国内站点 使用包管理器 我们建议您使用包管理器如 NPM、Yarn 或 pnpm安装 Element Plus然后您就可以使用打包工具例如 Vite 或 webpack。 # 选择一个你喜欢的包管理器# NPM $ npm install element-plus --save# Yarn $ yarn add element-plus# pnpm $ pnpm install element-plus如果您的网络环境不好建议使用相关镜像服务 cnpm 或 中国 NPM 镜像。 浏览器直接引入 直接通过浏览器的 HTML 标签导入 Element Plus然后就可以使用全局变量 ElementPlus 了。 根据不同的 CDN 提供商有不同的引入方式 我们在这里以 unpkg 和 jsDelivr 举例。 你也可以使用其它的 CDN 供应商。 unpkg head!-- Import style --link relstylesheet href//unpkg.com/element-plus/dist/index.css /!-- Import Vue 3 --script src//unpkg.com/vue3/script!-- Import component library --script src//unpkg.com/element-plus/script /headjsDelivr head!-- Import style --linkrelstylesheethref//cdn.jsdelivr.net/npm/element-plus/dist/index.css/!-- Import Vue 3 --script src//cdn.jsdelivr.net/npm/vue3/script!-- Import component library --script src//cdn.jsdelivr.net/npm/element-plus/script /head完整引入 // main.ts import { createApp } from vue import ElementPlus from element-plus import element-plus/dist/index.css import App from ./App.vueconst app createApp(App)app.use(ElementPlus) app.mount(#app)按需导入 首先你需要安装unplugin-vue-components 和 unplugin-auto-import这两款插件 npm install -D unplugin-vue-components unplugin-auto-import然后把下列代码插入到你的 Vite 的配置文件中 // vite.config.ts import { defineConfig } from vite import AutoImport from unplugin-auto-import/vite import Components from unplugin-vue-components/vite import { ElementPlusResolver } from unplugin-vue-components/resolversexport default defineConfig({// ...plugins: [// ...AutoImport({resolvers: [ElementPlusResolver()],}),Components({resolvers: [ElementPlusResolver()],}),], })实现代码详细注释 templatediv idcontentdiv classtoolBarel-button clickclear清空/el-buttonel-button clickexprot导出/el-buttonel-button clickeraser{{ text }}/el-buttondiv stylemargin-left: 12px!-- Element-Plus 颜色选择器 --el-color-picker v-modelcolor1 changecolorChange//divdiv stylemargin-left: 12px;width: 100px!-- Element-Plus 滑块 --el-slider stylemargin-left: 12px;width: 100px v-modelvalue1 changenumberChange//div!-- 右上方关闭按钮 --div classlight clickbackIndexdiv/divdiv/divdiv/divdiv/divX/div/divcanvas idmyCanvas/canvas/div /templatescript setup langtsimport {reactive, ref, toRefs, onBeforeMount, onMounted, nextTick} from vueimport {useRouter} from vue-router;import icon from ../../assets/pen2.png// 初始文字const text ref(橡皮擦)// 该变量用来记录按钮文本const textFlag ref(true)// 初始颜色const color1 ref(#409EFF)// 初始线条粗细const value1 ref(6)// 光标自定义const cursorIcon ref(url(${icon}),default);let myCanvas: HTMLElement | nulllet ctx: { scale: (arg0: number, arg1: number) void; moveTo: (arg0: number, arg1: number) void; beginPath: () void; lineWidth: any; strokeStyle: any; lineTo: (arg0: number, arg1: number) void; stroke: () void; }let isMouseDown: booleanlet strokeStyle: stringlet lineWidth: numberonMounted(() {nextTick(() {initCanvas()})})//返回首页const router useRouter();function backIndex() {router.push(/)}// 初始化canvasfunction initCanvas() {// 线条细节处理分辨率let dpr window.devicePixelRatio || 1;myCanvas document.getElementById(myCanvas)// 设置canvas实际尺寸myCanvas.width window.innerWidth - 20myCanvas.height window.innerHeight - 50// 让canvas坐标系统使用css像素ctx myCanvas.getContext(2d);ctx.scale(dpr, dpr);// 监听canvas的鼠标按下时间myCanvas.addEventListener(mousedown, function (e) {// console.log(e);isMouseDown true // 变量记录是否按下鼠标ctx.moveTo(e.pageX, e.pageY) // 将绘制起始点设置为鼠标按下的点// 设置绘制图形的样式线条宽度和颜色;开始画线ctx.beginPath();ctx.lineWidth lineWidth || value1.value;ctx.strokeStyle strokeStyle || color1.value;})// 监听鼠标松开事件myCanvas.addEventListener(mousemove, function (e) {if (isMouseDown) { // 如果鼠标按下ctx.lineTo(e.pageX, e.pageY) // 设置终点ctx.stroke() // 连接起点和终点并用设置好的样式描边}})// 监听鼠标松开事件停止绘制myCanvas.addEventListener(mouseup, function () {// ctx.closePath();isMouseDown false})}// 清空function clear() {// 1. 简单填充 使用一个新的背景色简单地填充整个画布这样就可以清除当前内容// ctx.fillStyle #fff;// let rect this.canvas.getBoundingClientRect();// ctx.fillRect(rect.x, rect.y, rect.width, rect.height)// 2.重置画布高度 当画布的宽或高被重置时当前画布内容就会被移除。let rect myCanvas.getBoundingClientRect();myCanvas.width rect.width;myCanvas.height rect.height;//3. 使用clearRect函数 clearRect() 函数可以指定起始点的x, y 位置以及宽度和高度来清除画布// let rect this.canvas.getBoundingClientRect();// this.ctx.clearRect(rect.x, rect.y, rect.width, rect.height);}// 导出function exprot() {let link document.createElement(a)link.href myCanvas.toDataURL(image/png)link.download draw.pnglink.click()}// 改变颜色function colorChange(e: string | undefined) {console.log(e)strokeStyle stringe}// 改变线条粗细function numberChange(e: number) {lineWidth e}// 橡皮擦更换文本以及光标样式function eraser(e: string | undefined) {textFlag.value !textFlag.valueconsole.log(textFlag.value)if (!textFlag.value){cursorIcon.value url(/src/assets/rubber.png),defaulttext.value 画笔strokeStyle #ffffff}else{cursorIcon.value url(/src/assets/pen2.png),defaulttext.value 橡皮擦colorChange(e)}}/scriptstyle scoped langscsshtml,body {width: 100%;height: 100%;margin: 0;box-sizing: border-box;overflow-y: hidden;overflow-x: hidden;}#content {width: 100%;height: 100%;position: relative;}.toolBar {width: 100vw;height: 50px;background-color: azure;box-shadow: 0 5px 2px #e8e8e8;position: absolute;top: 0;left: 0;display: flex;align-items: center;padding: 20px;box-sizing: border-box;}// 关闭按钮样式以及动画霓虹灯效果.light {width: 40px;height: 30px;position: absolute;top: 30px;right: 30px;transform: translate(-50%, -50%);text-align: center;line-height: 30px;color: #03e9f4;font-size: 20px;text-transform: uppercase;transition: 0.5s;letter-spacing: 4px;cursor: pointer;overflow: hidden;}.light:hover {background-color: #03e9f4;color: #050801;box-shadow: 0 0 5px #03e9f4,0 0 25px #03e9f4,0 0 50px #03e9f4,0 0 200px #03e9f4;}.light div {position: absolute;}.light div:nth-child(1) {width: 100%;height: 2px;top: 0;left: -100%;background: linear-gradient(to right, transparent, #03e9f4);animation: animate1 1s linear infinite;}.light div:nth-child(2) {width: 2px;height: 100%;top: -100%;right: 0;background: linear-gradient(to bottom, transparent, #03e9f4);animation: animate2 1s linear infinite;animation-delay: 0.25s;}.light div:nth-child(3) {width: 100%;height: 2px;bottom: 0;right: -100%;background: linear-gradient(to left, transparent, #03e9f4);animation: animate3 1s linear infinite;animation-delay: 0.5s;}.light div:nth-child(4) {width: 2px;height: 100%;bottom: -100%;left: 0;background: linear-gradient(to top, transparent, #03e9f4);animation: animate4 1s linear infinite;animation-delay: 0.75s;}keyframes animate1 {0% {left: -100%;}50%,100% {left: 100%;}}keyframes animate2 {0% {top: -100%;}50%,100% {top: 100%;}}keyframes animate3 {0% {right: -100%;}50%,100% {right: 100%;}}keyframes animate4 {0% {bottom: -100%;}50%,100% {bottom: 100%;}}#myCanvas {cursor: v-bind(cursorIcon) ;overflow-y: hidden;overflow-x: hidden;} /style 写在最后 以上就是实现简易画板的全部代码了画出来的作品实在有点丑小伙伴们不要介意哈哈哈大家也可以去试试后续我会把一些图形加入进去实现拖拽等效果。喜欢的小伙伴们可以支持一下博主你们的支持就是我创作的动力。各位小伙伴让我们 let’s be prepared at all times JSON包里写函数关注博主不迷路 ✨原创不易还希望各位大佬支持一下 点赞你的认可是我创作的动力 ⭐️ 收藏你的青睐是我努力的方向 ✏️ 评论你的意见是我进步的财富
http://www.hkea.cn/news/14373507/

相关文章:

  • 湖南省住房城乡建设网站网站建设方案书 腾讯
  • html5 中文网站模板做有趣的网站
  • 怎样自己搭建一个做影视的网站行业软件定制开发
  • 视频网站开发研究背景公司官网首页设计
  • 深圳找网站建设深圳抖音seo
  • 徐州手机网站建设公司哪家好南宁世尊商贸网站建设
  • 宜昌商城网站建设wordpress wp酷
  • 闵行建设网站免费分类信息网站大全
  • 四川网站建设设计公司微信公众号做视频网站吗
  • 赣州网站建设如何兰州app外包
  • 深圳住建设局网站高端公司小程序建设
  • 怎么cms做网站网页制作流程及详细步骤
  • 公司建设网站流程图wordpress 打开评论
  • 山东建设局网站 王局做网站功能
  • 义乌专业做网站的公司摄影网站建设的论文
  • 长沙口碑好的做网站公司哪家好网站建设7个基本流程分析
  • 网站用wordpress还是wpphotoshop平面设计教学视频
  • 怎么做html网站手袋 技术支持 东莞网站建设
  • 做cpa一定要有网站吗网络营销专业是学什么的
  • 深圳做网站哪个平台好贵港市城乡住房建设厅网站
  • 怎么创办自己的网站平凉市建设局门户网站
  • 徐州网站营销印度人通过什么网站做国际贸易
  • 免费的网站模板活动推广方案
  • 银川 网站制作wordpress media调用
  • 公司网站建设需要哪些设备图片交易网站源码
  • 做网站和做app的区别织梦网站迁移
  • 汉中建设网站营销软文范例
  • 织梦 网站标题unity制作app教程
  • 百度网站上做推广受骗wordpress 分表存储
  • 北大青鸟网站建设长沙免费模板建站