如何在 Vuetify 中对齐组件内的内容?

Posted

技术标签:

【中文标题】如何在 Vuetify 中对齐组件内的内容?【英文标题】:How to align content inside of a component in Vuetify? 【发布时间】:2020-03-11 00:09:08 【问题描述】:

我有这张图片:

如你所见,里面有四个透明按钮,Home、Offers、About和Contact。

如何将它们对齐到图像的底部而不是顶部?

这是我的代码:

<v-img src="@/assets/banner/webbanner.png">
  <v-container>
    <v-row align="center" justify="center">
      <v-btn
        color="transparent"
        class="mx-2 white--text"
        depressed
        
        v-for="(button, index) in viewButtons"
        :key="index"
      >
         button.name 
      </v-btn>
    </v-row>
  </v-container>
</v-img>

【问题讨论】:

将此添加到您的组件样式中:.container position: absolute; bottom: 0px 谢谢!您可以将其发布为答案,我会勾选它,以便有相同问题的人更容易看到。 【参考方案1】:

您可以通过访问其staticClass: 'container' 来修改 v-container 样式

所以只需添加

<v-container class="container-scoped">...</...>
.container-scoped position: absolute; bottom: 0px 

到您的组件样式。

new Vue(
  el: '#app',
  vuetify: new Vuetify(),
)
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
  <link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>

<script src="https://cdn.jsdelivr.net/npm/vuetify@2.1.10/dist/vuetify.min.js"></script>

<div id="app">
  <v-app id="inspire">
    <v-row align="center" justify="center">
      <v-img
        src="https://picsum.photos/id/11/500/300"
        lazy-src="https://picsum.photos/id/11/10/6"
        aspect-ratio="1"
        class="grey lighten-2"
        max-
        max-
      >
        <v-container
          style="position:absolute;bottom:0px"
          
        >
          <v-row align="center" justify="space-around">
            <div class="white--text mx-2">btn</div>
            <div class="white--text mx-2">btn</div>
          </v-row>
        </v-container>
      </v-img>
    </v-row>
  </v-app>
</div>

【讨论】:

我不会使用这个建议。您最好使用框架,并远离硬编码的 0px,并且在这种情况下,绝对位置在调整大小和不同的显示器尺寸时也没有任何灵活性。覆盖默认容器也不是好的做法。 @SweetChillyPhilly 我同意覆盖默认容器类是不好的做法 - 但我不明白你的硬编码问题?这是在.v_responsive -> 相对的,因此被困在v-img 默认槽内。 您建议的编辑非常好。谢谢 :) 并同意。我本可以更好地使用该框架,但我想尽快帮助这个人。 在 vuetify 上覆盖样式不是一个好主意,请改用 helpers @FernandoTorres 我最喜欢的是html overflow-y:hidden ;) 但是是的 - 同意是个坏主意【参考方案2】:

我会将容器从 v-imge 中拉出。然后给它一个 flex 类

<div class="container d-flex flex-column">
  <v-img src="@/assets/banner/webbanner.png" class="imageContent" />
  <v-container>
    <v-row" justify="space-between">
      <v-btn
        color="transparent"
        class="mx-2 white--text"
        depressed
        
        v-for="(button, index) in viewButtons"
        :key="index"
      >
         button.name 
      </v-btn>
    </v-row>
  </v-container>
</div>

我还没有测试过这个,但是 flexbox 会很有帮助 https://yoksel.github.io/flex-cheatsheet/

它应该让你开始并指出正确的方向。

【讨论】:

以上是关于如何在 Vuetify 中对齐组件内的内容?的主要内容,如果未能解决你的问题,请参考以下文章

无论vuetify中的文本如何,如何在卡片中底部对齐按钮?

Vuetify相等的高度v-tab-items

Vuetify - 无法在 v-card-title 内将 v-image 和 video-text 完全居中对齐

对齐 panelGrid 列内的内容

如何在 Vuetify v-data-table 上对齐标题

如何根据 Vuetify 中的屏幕大小更改对齐方式?