Material Design风格神框架vuetify 学习笔记(十) 基础组件6 对话框 响应式长宽比 徽标 横幅

一. 对话框

v-dialog 组件通知用户特定的任务,可能包含关键信息、需要决策或涉及多个任务。 请尽量少用对话框,因为它们会中断(流程)。

1. 对话框

对话框包含两个插槽,一个用于它的激活器,另一个用于它的内容(默认)。

<template>
  <v-container grid-list-xs>
    <v-dialog
      v-model="dialog_show"
      max-width="500px"
      transition="dialog-transition"
    >
      <template v-slot:activator="{ on, attrs }">
        <v-btn color="red lighten-2" dark v-bind="attrs" v-on="on">
          Click Me
        </v-btn>
      </template>
      <v-card>
        <v-card-title class="text-h5 grey lighten-2"> 欢迎您 </v-card-title>
        <v-card-text class="mt-4">
          The literal Latin meaning of the Illuminati means "people who have
          received special revelation." Naturally, there are many unrelated
          groups in history who call themselves Illuminati. Usually, they claim
          to possess Gnostic texts or other similar mysterious information.
        </v-card-text>
        <v-divider></v-divider>
        <v-card-actions>
          <v-spacer></v-spacer>
          <v-btn color="primary" text @click="dialog_show = false">
            好的
          </v-btn>
        </v-card-actions>
      </v-card>
    </v-dialog>
  </v-container>
</template>

<script>
export default {
  data() {
    return {
      dialog_show: false,
    };
  },
};
</script>

2. 全屏对话框 fullscreen

  <v-container grid-list-xs>
    <v-dialog
      v-model="dialog_show"
      fullscreen
      transition="dialog-transition"
    >
      <template v-slot:activator="{ on, attrs }">
        <v-btn color="red lighten-2" dark v-bind="attrs" v-on="on">
          Click Me
        </v-btn>
      </template>
      <v-card>
        <v-toolbar dark color="primary">
          <v-app-bar-nav-icon></v-app-bar-nav-icon>
          <v-spacer></v-spacer>
          <v-btn text @click="dialog_show = false">OK</v-btn>
        </v-toolbar>
        <v-card-title> 欢迎您 </v-card-title>
        <v-card-text class="mt-4">
          The literal Latin meaning of the Illuminati means "people who have
          received special revelation." Naturally, there are many unrelated
          groups in history who call themselves Illuminati. Usually, they claim
          to possess Gnostic texts or other similar mysterious information.
        </v-card-text>
        <v-img class="mx-4" src="~assets/gmh.jpg"></v-img>
      </v-card>
    </v-dialog>
  </v-container>

3. 弹出方向 transition

(1). 顶部弹出
    <v-dialog
      v-model="dialog_show"
      fullscreen
      transition="dialog-top-transition"
    >
(2). 底部弹出
<v-dialog
      v-model="dialog_show"
      fullscreen
      transition="dialog-bottom-transition"
    >

4. 禁用空白处点击关闭 persistent

    <v-dialog
      v-model="dialog_show"
      persistent
      transition="dialog-bottom-transition"
    >

5. 可滚动内容 scrollable

    <v-dialog
      v-model="dialog_show"
      scrollable
      transition="dialog-bottom-transition"
    >

6. 隐藏对话框蒙版 hide-overlay

    <v-dialog
      v-model="dialog_show"
      hide-overlay
      transition="dialog-bottom-transition"
    >

7. 另类应用: 弹出加载条

<template>
  <div class="text-center">
    <v-btn
      :disabled="dialog"
      :loading="dialog"
      class="white--text mt-10"
      color="purple darken-2"
      @click="dialog = true"
    >
      Start loading
    </v-btn>
    <v-dialog v-model="dialog" hide-overlay persistent width="300">
      <v-card color="primary" dark>
        <v-card-text>
          Please stand by
          <v-progress-linear
            indeterminate
            color="white"
            class="mb-0"
          ></v-progress-linear>
        </v-card-text>
      </v-card>
    </v-dialog>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dialog: false,
    };
  },

  watch: {
    dialog(val) {
      if (!val) return;

      setTimeout(() => (this.dialog = false), 4000);
    },
  },
};
</script>

二. 长宽比 v-responsive

1. 长宽比 aspect-ratio

v-responsive 组件可用于将任何部分固定到特定的宽高比。

    <v-card dark>
      <v-responsive class="indigo" :aspect-ratio="16 / 9" max-width="10000">
        <v-card-text class="text-h1 font-weight-medium">
          这个卡片永远是16:9, 除非内容放不下了
        </v-card-text>
      </v-responsive>
    </v-card>

2. 最大宽度 max-width

<template>
  <v-card dark>
    <v-responsive class="indigo" :aspect-ratio="16 / 9" max-width="1000">
      <v-card-text class="text-h1 font-weight-medium">
        这个卡片永远是16:9, 除非内容放不下了
      </v-card-text>
    </v-responsive>
  </v-card>
</template>

3. 最大高度 max-height

最大高度的行为, 风格和最大宽度不统一
其行为如下:

三. 徽章/角标 v-badge

1. 简单徽章

    <v-badge>
      <v-icon>新消息</v-icon>
    </v-badge>

2. 头像徽章

    <v-badge color="red">
      <v-avatar>
        <img src="~assets/head.jpg" />
      </v-avatar>
    </v-badge>

3. 内容叠性 overlap

    <v-badge color="red" overlap>
      <v-avatar>
        <img src="~assets/head.jpg" />
      </v-avatar>
    </v-badge>

4. 徽章的图标 icon

    <v-badge dark color="red" overlap icon="mdi-lock">
      <v-avatar>
        <img src="~assets/head.jpg" />
      </v-avatar>
    </v-badge>

5. 徽章的文本 content

    <v-badge dark color="red" overlap content="这是内容">
      <v-avatar>
        <img src="~assets/head.jpg" />
      </v-avatar>
    </v-badge>

6. 徽标的样式

(1). 徽标的边框 bordered
    <v-badge color="red" overlap bordered content="6">
      <v-btn color="success">未读消息</v-btn>
    </v-badge>
(2). 瓦片徽标 tile
    <v-badge color="red" overlap bordered content="6" tile>
      <v-btn color="success">未读消息</v-btn>
    </v-badge>
(3). 小点型徽标(不显示内容) dot
    <v-badge color="red"  dot>
      <v-btn color="success">未读消息</v-btn>
    </v-badge>

7. 徽标的位置

  • left : 左置
  • bottom : 置底
  • offset-x : 水平偏移
  • offset-y : 垂直偏移

8. 徽标插槽 v-slot:badge

我们可以使用v-slot:badge 插槽来自定义徽标的组件细节
v-slot:badge 插槽可以插入任何类型的插件

9. 插槽头像徽标

如果我们在v-slot:badge 插槽中插入头像, 同时在徽标中添加 avatar属性

    <v-badge bordered overlap avatar>
      <template v-slot:badge>
        <v-avatar>
          <v-img src="~assets/logo.png"></v-img>
        </v-avatar>
      </template>
      <v-btn color="success">text</v-btn>
    </v-badge>

10. 插槽图标徽标

    <v-badge bordered overlap label color="success">
      <template v-slot:badge>
        <v-icon dark size="16">mdi-wechat</v-icon>
      </template>
      <v-btn color="info">联系我们</v-btn>
    </v-badge>

四. 横幅 v-banner

1. 最简单的横幅

<v-banner>这是一个简单的banner</v-banner>

2. 横幅的阴影 elevation

<v-banner elevation="6">这是一个简单的banner</v-banner>

3. 带图标的横幅 icon

<v-banner elevation="6" icon="mdi-qqchat">这是一个简单的banner</v-banner>
图标也可以设置颜色
<v-banner elevation="6" icon="mdi-qqchat" icon-color="primary">这是一个简单的banner</v-banner>
图标点击事件
<template>
  <div class="ma-4">
    <br />
    <v-banner
      elevation="6"
      icon="mdi-qqchat"
      icon-color="primary"
      @click:icon="alert"
      >这是一个简单的banner</v-banner
    >
  </div>
</template>

<script>
export default {
  data() {
    return {};
  },
  methods: {
    alert() {
      alert("Hello, World!");
    },
  },
};

</script>

4. 横幅的样式

(1). 线型边框 outlined
<v-banner outlined>这是一个简单的banner</v-banner>
(2). 圆角 rounded
<v-banner rounded elevation="6">这是一个简单的banner</v-banner>
(3). shaped样式
    <v-banner shaped elevation="6">这是一个简单的banner</v-banner>

5. 单行横幅 single-line

横幅可以有 1-2 行文本, 也可以设置single-line使其只有单行. 单行 VBanner 用于少量信息,建议仅用于桌面实现。

    <v-banner
      elevation="6"
      single-line
      color="indigo"
      icon="mdi-qqchat"
      dark
      >这是一个简单的banner, 他只有单行, 如果文本长度超出组件宽度, 就会缩略</v-banner>

6. 横幅贴在浏览器窗口上

您可以选择启用粘性道具以确保内容固定在屏幕上(注意:在 IE11 中不起作用)

    <v-banner
      elevation="6"
      sticky
      color="indigo"
      icon="mdi-qqchat"
      dark
      >这是一个简单的banner</v-banner>

7. 横幅的动作插槽 v-slot:actions

    <v-banner elevation="6"
      >这是一个简单的banner
      <template v-slot:actions>
        <v-btn text color="info">OK</v-btn>
        <v-btn text color="error">cancel</v-btn>
      </template>
    </v-banner>

8. 横幅的图标插槽 v-slot:icon

    <v-banner elevation="6"
      >这是一个简单的banner
      <template v-slot:icon>
        <v-icon color="red"> mdi-lock </v-icon>
      </template>
    </v-banner>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,454评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,553评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,921评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,648评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,770评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,950评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,090评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,817评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,275评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,592评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,724评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,409评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,052评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,815评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,043评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,503评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,627评论 2 350

推荐阅读更多精彩内容