vuetify中如何防止canvas溢出卡并使其响应?

2024-03-19

Context:

您好,我正在尝试在 vuetify 中使用 Fabricjs Canvas,并使其在所有屏幕中看起来响应灵敏。 但目前,我面临一个问题,画布没有根据卡片重新调整大小,而是溢出了卡片。 我尝试过使用 v-responsive,但它没有将宽高比应用于画布,可能是我使用它的方式不是正确的方式。

任何建议都会有帮助。

这就是现在正在发生的事情

这就是我想要实现的目标

结构

Mock:

Code

这是我到目前为止所尝试过的。

<v-layout>
  <v-flex xs12>
    <v-container class="red" fluid>
      <v-layout row wrap align-center justify-center>
        <v-flex xs3 sm3 md3 class="ma-2" class="purple">
          <v-card flat tile class="yellow">
            <v-card-title
              id="fabric-canvas-wrapper"
              class="green pb-0 justify-center"
            >
              <v-responsive aspect-ratio="4/3" class="mx-auto px-3">
                <canvas id="c"> </canvas>
              </v-responsive>
            </v-card-title>

            <v-card-text class="blue text-xs-center py-0">
              <p class=".body-2 pa-2 text-truncate">Kangaroo Valley Safari</p>
            </v-card-text>
          </v-card>
        </v-flex>
      </v-layout>
    </v-container>
  </v-flex>
</v-layout>

https://codepen.io/adatdeltax/pen/OJWOPBo https://codepen.io/adatdeltax/pen/OJWOPBo


画布元素可以通过样式表任意调整大小,然后其位图受“object-fit”CSS 属性的约束。

Source https://html.spec.whatwg.org/multipage/canvas.html#attr-canvas-width

canvas 元素的宽度/高度与canvas 元素位图的宽度/高度不同。这意味着您只能使用 CSS 样式来解决此问题。

canvas {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

Example https://jsfiddle.net/dq0mfkbt/6/

如果你想保持纵横比,你可以使用填充技巧。

.canvas-container {
  width: 100%;
  padding-top: 100%; // for 1:1 ratio
}

Example https://jsfiddle.net/dq0mfkbt/10/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vuetify中如何防止canvas溢出卡并使其响应? 的相关文章

随机推荐