前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue 中 canvas 的自适应

Vue 中 canvas 的自适应

作者头像
云游君
发布2021-05-21 10:36:21
1.3K0
发布2021-05-21 10:36:21
举报
文章被收录于专栏:云游的小教程

最近又在写一些没什么用的小玩意儿。 ref: https://github.com/YunYouJun/star-timer/blob/master/docs/.vuepress/components/StarMap.vue

在过程中尝试使用 Vue 来实现 Html5 中 Canvas 标签的自适应。

代码语言:javascript
复制
<template>
  <canvas id="star-map" ref="starMap">
    Sorry, your browser doesn't support the &lt;canvas&gt; element.
  </canvas>
</template>

window.onresize 方法挂载在 mounted 方法上。(mounted 可参见 Vue 生命周期钩子

代码语言:javascript
复制
<script>
export default {
  name: 'StarMap',
  mounted () {
    this.resizeCanvas();
    this.drawStarMap();
    window.addEventListener("resize", () => {
      this.resizeCanvas();
      // 等待 canvas 变换好,再延时绘制,不然可能会没有内容
      setTimeout(function() {
        this.drawStarMap();
      }, 100);
    });
  },
  methods: {
    resizeCanvas() {
      this.canvas = document.getElementById("star-map");
      let parentStyle = window.getComputedStyle(this.canvas.parentNode);
      this.canvas.width = parseInt(parentStyle.width);
      this.canvas.height = document.body.clientHeight - 400;
    },
  }
}
</script>

Window.getComputedStyle() | MDN Window.getComputedStyle()方法返回一个对象,该对象在应用活动样式表并解析这些值可能包含的任何基本计算后报告元素的所有 CSS 属性的值。

这里使用 getComputedStyle 来获取父节点的样式,它会展现所有呈现出来的 CSS 属性的值。而 element.style.xxx 只能获取被设置过的数值。

根据不同需求也可以使用 document.body.clientHeight 之类的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档