【问题标题】:Vuetify: fit v-image within the screen sizeVuetify:使 v-image 适合屏幕大小
【发布时间】:2020-02-01 09:20:31
【问题描述】:

My vue page have a photo gallery, and when a photo is selected, the dialog will jump out by setting the selectedCard.
虽然图像不适合屏幕大小。
我尝试将 css 设置为 100% 的最大高度或宽度,但它们都不起作用。
如何修复我的 css 以便可以在屏幕上查看整个图像而无需滚动?
屏幕截图:只能显示一半的图像

//Dialog component    
<template>
  <v-dialog :value="selectedCard" scrollable fullscreen hide-overlay>
    <v-card v-if="selectedCard">
      <v-container grid-list-sm fluid>
        <v-layout align-space-around row fill-height>
          <v-flex id="mainCardPanel">
            <v-layout align-space-around column fill-height>
              <v-flex xs12>
                <MyCard class="mainCard" :card="selectedCard"></MyCard>
              </v-flex>
              <v-flex xs12>
                <v-btn> SomeButton </v-btn>
              </v-flex>
            </v-layout>
          </v-flex>
        </v-layout>
      </v-container>
    </v-card>
  </v-dialog>
</template>
// MyCard component
<template>
  <v-card flat tile class="d-flex justify-center" >
    <v-img :contain="true" :src=card.imageUrlHiRes
        :lazy-src=card.imageUrl class="grey lighten-2 Card">
      <template v-slot:placeholder>
        <v-layout fill-height align-center justify-center ma-0>
          <v-progress-circular indeterminate color="grey lighten-5"></v-progress-circular>
        </v-layout>
      </template>
    </v-img>
  </v-card>
</template>

【问题讨论】:

标签: css vue.js


【解决方案1】:

对我来说,使用纯 HTML 似乎更简单更好。 vuetify 有时只会使简单的事情复杂化。使用v-coldiv、任何块...

<v-row class="fill-height" 
    justify="center" 
    align="center" 
    style="background-image: url('card.imageUrlHiRes'); 
    background-size: cover;" >
          
  </v-row>

【讨论】:

    【解决方案2】:

    如果您想显示完整图像,请在&lt;v-img&gt; 中使用:cover="true"。 如果你想显示整个图像,你可以放下面的 CSS。

    .v-image__image{
     background-size:100% 100%;
    }
    

    不推荐这种方式。因为图片的比例会出错。

    【讨论】:

    • 添加了封面但效果不佳,图像仍然显示相同。我需要保持图像的比例
    • 您可以在 Codepen 中添加一些代码或有关此案例的内容吗?我必须检查 css 并找出这个问题。
    • :cover 不是v-img 上的有效 Vuetify 属性。它应该是 :contain 并且已经在 OP 的代码中。
    【解决方案3】:

    将 css 宽度和高度添加到 100%

    img { 
        width:100%; 
        height:100%; 
        } 
    

    【讨论】:

    • 已添加但对图像没有影响,看起来仍然和我的屏幕帽一样
    • 试试这个也可以在你的标签中添加 'contain' picsum.photos/510/300?random" aspect-ratio="1.7" contains>
    • 我的东西 vuetify 也没有 class prop 也在 vuetify js 网站上检查它。然后重要说明,我注意到 vuetify 不使用 ,它使用 div 来显示图像
    • 所以我认为这是你问题的主要原因。如果你注意到你可以轻松解决这个人
    【解决方案4】:

    尝试使用 vh 作为图像高度。 也许这可能有效:

    img {
      height:100vh;
    }
    

    【讨论】:

    • 已添加,它看起来更好,但图像仍然比屏幕大一点(大约 10% 的图像)。仍然需要滚动才能查看整个图像
    • 尝试将其调整为 80vh 而不是 100vh
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签