vuetify.js - 将卡片容器放在其他容器上 Vuetify VueJs
问题描述
我有这个 codePen:https ://codepen.io/anon/pen/KBzERJ
如果向下滚动,您可以看到卡片。我需要这张卡片出现在红色容器上方。所以红色容器填满了屏幕,浮动卡片位于红色容器上方的屏幕中间。
new Vue({
el: '#app',
data: () => ({
drawer: null
}),
props: {
source: String
}
})
<link rel="stylesheet prefetch" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons">
<link rel="stylesheet prefetch" href="https://unpkg.com/vuetify/dist/vuetify.min.css">
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify/dist/vuetify.min.js"></script>
<div id="app">
<v-app id="inspire">
<v-content>
<v-container style="background:red" fill-height> </v-container>
<v-container fluid fill-height>
<v-layout align-center justify-center>
<v-flex xs12 sm8 md4>
<v-card class="elevation-12">
<v-toolbar dark color="primary">
<v-toolbar-title>Login form</v-toolbar-title>
<v-spacer></v-spacer>
<v-tooltip bottom>
<v-btn icon large :href="source" target="_blank" slot="activator">
<v-icon large>code</v-icon>
</v-btn>
<span>Source</span>
</v-tooltip>
</v-toolbar>
<v-card-text>
<v-form>
<v-text-field prepend-icon="person" name="login" label="Login" type="text"></v-text-field>
<v-text-field prepend-icon="lock" name="password" label="Password" id="password" type="password"></v-text-field>
</v-form>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="primary">Login</v-btn>
</v-card-actions>
</v-card>
</v-flex>
</v-layout>
</v-container>
</v-content>
</v-app>
</div>
解决方案
查看更新的代码笔
保持这种结构。基本保持<v-container fluid fill-height>
在里面<v-container style="background:red" fill-height>
<div id="app">
<v-app id="inspire">
<v-content>
<v-container style="background:red" fill-height>
<v-container fluid fill-height>
<v-layout align-center justify-center>
<v-flex xs12 sm8 md4>
<v-card class="elevation-12">
<v-toolbar dark color="primary">
<v-toolbar-title>Login form</v-toolbar-title>
<v-spacer></v-spacer>
<v-tooltip bottom>
<v-btn
icon
large
:href="source"
target="_blank"
slot="activator"
>
<v-icon large>code</v-icon>
</v-btn>
<span>Source</span>
</v-tooltip>
</v-toolbar>
<v-card-text>
<v-form>
<v-text-field prepend-icon="person" name="login" label="Login" type="text"></v-text-field>
<v-text-field prepend-icon="lock" name="password" label="Password" id="password" type="password"></v-text-field>
</v-form>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="primary">Login</v-btn>
</v-card-actions>
</v-card>
</v-flex>
</v-layout>
</v-container>
</v-container>
</v-content>
</v-app>
</div>
new Vue({
el: '#app',
data: () => ({
drawer: null
}),
props: {
source: String
}
})
<link rel="stylesheet prefetch" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons">
<link rel="stylesheet prefetch" href="https://unpkg.com/vuetify/dist/vuetify.min.css">
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify/dist/vuetify.min.js"></script>
<div id="app">
<v-app id="inspire">
<v-content>
<v-container style="background:red" fill-height>
<v-container fluid fill-height>
<v-layout align-center justify-center>
<v-flex xs12 sm8 md4>
<v-card class="elevation-12">
<v-toolbar dark color="primary">
<v-toolbar-title>Login form</v-toolbar-title>
<v-spacer></v-spacer>
<v-tooltip bottom>
<v-btn icon large :href="source" target="_blank" slot="activator">
<v-icon large>code</v-icon>
</v-btn>
<span>Source</span>
</v-tooltip>
</v-toolbar>
<v-card-text>
<v-form>
<v-text-field prepend-icon="person" name="login" label="Login" type="text"></v-text-field>
<v-text-field prepend-icon="lock" name="password" label="Password" id="password" type="password"></v-text-field>
</v-form>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="primary">Login</v-btn>
</v-card-actions>
</v-card>
</v-flex>
</v-layout>
</v-container>
</v-container>
</v-content>
</v-app>
</div>
另一种方式
在包含登录表单的容器上添加一个类并添加以下 CSS
new Vue({
el: '#app',
data: () => ({
drawer: null
}),
props: {
source: String
}
})
.v-content__wrap {
position: relative;
}
.login-container {
position: absolute;
padding: 20px;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
<link rel="stylesheet prefetch" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons">
<link rel="stylesheet prefetch" href="https://unpkg.com/vuetify/dist/vuetify.min.css">
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify/dist/vuetify.min.js"></script>
<div id="app">
<v-app id="inspire">
<v-content>
<v-container style="background:red" fill-height> </v-container>
<v-container fluid fill-height login-container>
<v-layout align-center justify-center>
<v-flex xs12 sm8 md4>
<v-card class="elevation-12">
<v-toolbar dark color="primary">
<v-toolbar-title>Login form</v-toolbar-title>
<v-spacer></v-spacer>
<v-tooltip bottom>
<v-btn icon large :href="source" target="_blank" slot="activator">
<v-icon large>code</v-icon>
</v-btn>
<span>Source</span>
</v-tooltip>
</v-toolbar>
<v-card-text>
<v-form>
<v-text-field prepend-icon="person" name="login" label="Login" type="text"></v-text-field>
<v-text-field prepend-icon="lock" name="password" label="Password" id="password" type="password"></v-text-field>
</v-form>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="primary">Login</v-btn>
</v-card-actions>
</v-card>
</v-flex>
</v-layout>
</v-container>
</v-content>
</v-app>
</div>
评论中建议的另一种方式
只需保留一个填充高度容器
new Vue({
el: '#app',
data: () => ({
drawer: null
}),
props: {
source: String
}
})
<link rel="stylesheet prefetch" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons">
<link rel="stylesheet prefetch" href="https://unpkg.com/vuetify/dist/vuetify.min.css">
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vuetify/dist/vuetify.min.js"></script>
<div id="app">
<v-app id="inspire">
<v-content>
<v-container style="background:red" fluid fill-height login-container>
<v-layout align-center justify-center>
<v-flex xs12 sm8 md4>
<v-card class="elevation-12">
<v-toolbar dark color="primary">
<v-toolbar-title>Login form</v-toolbar-title>
<v-spacer></v-spacer>
<v-tooltip bottom>
<v-btn icon large :href="source" target="_blank" slot="activator">
<v-icon large>code</v-icon>
</v-btn>
<span>Source</span>
</v-tooltip>
</v-toolbar>
<v-card-text>
<v-form>
<v-text-field prepend-icon="person" name="login" label="Login" type="text"></v-text-field>
<v-text-field prepend-icon="lock" name="password" label="Password" id="password" type="password"></v-text-field>
</v-form>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="primary">Login</v-btn>
</v-card-actions>
</v-card>
</v-flex>
</v-layout>
</v-container>
</v-content>
</v-app>
</div>
推荐阅读
- regex - 正则表达式属性(理论)
- c++ - 为什么我不能在 ncurses 中向 printw 提供字符串参数?
- regex - 提取国名的表达式?
- algorithm - 是否有一种有效的算法来查找所有相交的多边形?
- c++ - 是否投射 shared_ptr
到 shared_ptr 改变它指向的对象? - java - 为什么这个 String HashMap 不能通过 *char* 键获得正确的值
- c# - 使某物同时在 X 轴和 Y 轴上移动
- python - 如何在 django.contrib.auth.forms UserCreationForm 中放置一个复选框
- javascript - 老虎机随机发生器
- c# - 如何在 C# 中设置列表的所有值