堆叠 V-Card 子级重叠和错位
Stacking V-Card children overlaps and misaligns
我正在尝试将 v-card-title 叠加在 v-card-subtitle 之上,然后 v-card-text 和文字重叠。默认情况下这些元素不是垂直堆叠的吗?:
<v-main>
<v-container fluid style="padding:0px">
<v-row no-gutters>
<v-col :cols="12" :md="6">
<v-card
height='100%'
style="position: relative"
elevation="0">
<v-card-title
class="header">
lorem ipsum dolor
</v-card-title>
<v-card-subtitle class="subHeader">
lorem ipsum dolorlorem ipsum dolorlorem ipsum dolorlorem ipsum dolor
</v-card-subtitle>
<v-card-text class="subText">
lorem ipsum dolorlorem ipsum dolorlorem ipsum dolorlorem ipsum
dolor lorem ipsum dolor dolor lorem ipsum dolor dolor lorem ipsum
dolor
</v-card-text>
</v-card>
</v-col>
<v-col :cols="12" :md="6">
<v-img :src="{myImage}"></v-img>
</v-col>
</v-row>
{...about 4 more rows identical to above...}
</v-container>
</v-main>
这是我的风格:
.header{
font-family: 'Cormorant Garamond', serif;
font-size: 85px;
}
.subHeader{
font-family: 'Montserrat', sans-serif;
font-size: 28px;
}
.subText{
font-family: 'Montserrat', sans-serif;
font-size: 15px;
letter-spacing: 1.5px;
color:#333;
}
然后如果我尝试在 v-card 上使用它来垂直 + 水平居中所有内容,那么所有内容都会水平排列:
class="d-flex align-center justify-center"
我只是没有得到什么?
使用 d-flex
将您的卡片变成一个 flexbox 容器,转换直接 children 元素。您看到的是 flex
children 的默认行为。它们显示在一行中,因为默认情况下 flex-direction
属性 设置为 row
。在 MDN Web Docs.
阅读更多内容
无论如何,在这种情况下您不需要使用d-flex
。 Vuetify 提供了一个助手 class fill-height
,它将 v-container
的内容居中。来自 docs:
fill-height
applies height: 100%
to an element. When applied to v-container
it will also align-items: center
.
例如:
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@6.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<div id="app">
<v-app>
<v-main>
<v-container fluid fill-height style="padding:0px">
<v-row no-gutters justify=center>
<v-col cols="6">
<v-card class="" elevation="2" >
<v-card-title class="header">
lorem ipsum dolor
</v-card-title>
<v-card-subtitle class="subHeader">
lorem ipsum dolorlorem ipsum dolorlorem ipsum dolorlorem ipsum dolor
</v-card-subtitle>
<v-card-text class="subText">
lorem ipsum dolorlorem ipsum dolorlorem ipsum dolorlorem ipsum dolor lorem ipsum dolor dolor lorem ipsum dolor dolor lorem ipsum dolor
</v-card-text>
</v-card>
</v-col>
</v-row>
</v-container>
</v-main>
</v-app>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
我正在尝试将 v-card-title 叠加在 v-card-subtitle 之上,然后 v-card-text 和文字重叠。默认情况下这些元素不是垂直堆叠的吗?:
<v-main>
<v-container fluid style="padding:0px">
<v-row no-gutters>
<v-col :cols="12" :md="6">
<v-card
height='100%'
style="position: relative"
elevation="0">
<v-card-title
class="header">
lorem ipsum dolor
</v-card-title>
<v-card-subtitle class="subHeader">
lorem ipsum dolorlorem ipsum dolorlorem ipsum dolorlorem ipsum dolor
</v-card-subtitle>
<v-card-text class="subText">
lorem ipsum dolorlorem ipsum dolorlorem ipsum dolorlorem ipsum
dolor lorem ipsum dolor dolor lorem ipsum dolor dolor lorem ipsum
dolor
</v-card-text>
</v-card>
</v-col>
<v-col :cols="12" :md="6">
<v-img :src="{myImage}"></v-img>
</v-col>
</v-row>
{...about 4 more rows identical to above...}
</v-container>
</v-main>
这是我的风格:
.header{
font-family: 'Cormorant Garamond', serif;
font-size: 85px;
}
.subHeader{
font-family: 'Montserrat', sans-serif;
font-size: 28px;
}
.subText{
font-family: 'Montserrat', sans-serif;
font-size: 15px;
letter-spacing: 1.5px;
color:#333;
}
然后如果我尝试在 v-card 上使用它来垂直 + 水平居中所有内容,那么所有内容都会水平排列:
class="d-flex align-center justify-center"
我只是没有得到什么?
使用 d-flex
将您的卡片变成一个 flexbox 容器,转换直接 children 元素。您看到的是 flex
children 的默认行为。它们显示在一行中,因为默认情况下 flex-direction
属性 设置为 row
。在 MDN Web Docs.
无论如何,在这种情况下您不需要使用d-flex
。 Vuetify 提供了一个助手 class fill-height
,它将 v-container
的内容居中。来自 docs:
fill-height
appliesheight: 100%
to an element. When applied tov-container
it will alsoalign-items: center
.
例如:
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@6.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<div id="app">
<v-app>
<v-main>
<v-container fluid fill-height style="padding:0px">
<v-row no-gutters justify=center>
<v-col cols="6">
<v-card class="" elevation="2" >
<v-card-title class="header">
lorem ipsum dolor
</v-card-title>
<v-card-subtitle class="subHeader">
lorem ipsum dolorlorem ipsum dolorlorem ipsum dolorlorem ipsum dolor
</v-card-subtitle>
<v-card-text class="subText">
lorem ipsum dolorlorem ipsum dolorlorem ipsum dolorlorem ipsum dolor lorem ipsum dolor dolor lorem ipsum dolor dolor lorem ipsum dolor
</v-card-text>
</v-card>
</v-col>
</v-row>
</v-container>
</v-main>
</v-app>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>