Material Design风格神框架vuetify 学习笔记(十二) 组件的基础

一. 窗口 v-window

v-window 被设计成可以轻松地循环浏览内容,它提供了一个简单的接口来创建真正的自定义实现。

v-window组件提供了将内容从一个窗格过渡到另一个窗格的基础功能。 其他组件如v-tabs、v-carousel和v-stepper使用此组件作为其核心。

1. 基本窗口😂😂😂

<template>
  <div class="pa-6">
    <v-window v-model="show_flag">
      <v-window-item v-for="n in 4" :key="n">
        <v-card color="grey" height="200">
          <v-row class="fill-height" align="center" justify="center">
            <h1 style="font-size: 5rem" class="white--text">Slide{{ n }}</h1>
          </v-row>
        </v-card>
      </v-window-item>
    </v-window>
    <v-container grid-list-xs>
      <v-row>
        <v-btn dark @click="show_flag--">←</v-btn>
        <v-spacer></v-spacer>
        <v-btn dark @click="show_flag++">→</v-btn>
      </v-row>
    </v-container>
  </div>
</template>

<script>
export default {
  data() {
    return { show_flag: 0 };
  },
};
</script>

2. 反转划入 reverse

<v-window reverse v-model="show_flag">

3. 垂直 vertical

<v-window vertical v-model="show_flag">

综合: 一个简单案例


<template>
  <div class="pa-6">
    <v-container grid-list-xs>
      <v-row>
        <v-btn
          dark
          color="#830c07"
          @click="show_flag--"
          :disabled="show_flag == 0 ? true : false"
          >上一幕</v-btn
        >
        <v-spacer></v-spacer>
        <v-btn
          dark
          color="#830c07"
          @click="show_flag++"
          :disabled="show_flag == 4 ? true : false"
          >下一幕</v-btn
        >
      </v-row>
    </v-container>
    <v-window class="elevation-1" v-model="show_flag">
      <v-window-item>
        <v-card class="cardcontent">
          <v-card-title primary-title> 第一幕 </v-card-title>
          <v-card-text>
            <p>
              帕琉斯打算要毁灭地球,但是受到了老泰的阻止,双方展开战斗,帕琉斯失败了,老泰为了表示自己公正,和天使决裂,自己亲自摘下了自己的翅膀要和凡人一起,在摘下翅膀的那一刻,地板就裂开了,他瞬间变成了流星落了下来,自己变成一个黑光头,把他从地下救了出来。
            </p>
          </v-card-text>
        </v-card>
      </v-window-item>
      <v-window-item>
        <v-card class="cardcontent">
          <v-card-title primary-title> 第二幕 </v-card-title>
          <v-card-text>
            <p>
              谎言之王霸占了贝利尔的国家,从前赫拉迪林有一个叛逆法师在封印巴尔的时候,把灵魂之石弄碎了,迫害塔尔拉夏要献身,这个叛逆法师就抢走了灵魂石碎片之后,自己弄出了黑色灵魂石,之后主角通过战斗消灭了他,之后通过战斗又赢了贝利尔,黑色灵魂石就吸取了贝利尔的灵魂,莉亚她的妈妈就加入了队伍与大家一起上路。
            </p>
          </v-card-text>
        </v-card>
      </v-window-item>
      <v-window-item>
        <v-card class="cardcontent">
          <v-card-title primary-title> 第三幕 </v-card-title>
          <v-card-text>
            <p>
              阿兹莫丹在发现有人制造出黑色灵魂石时,自己就想集齐七恶首的力量。因为利亚和他有血肉关系。阿兹莫丹于是直接托梦给莉亚告诉他,他对于这些做法非常的不满意,要挥动大军去夺回黑色灵魂石,希望自己可以为王,老泰和玩家一起加入战斗,阿兹莫丹重伤不治,黑色灵魂石吸收了阿兹莫丹之后就集齐了七恶首的力量,巴尔,孟菲斯托,督瑞尔,安德瑞尔,贝利尔和阿兹莫丹7恶首的灵魂,最后莉亚的母亲自己私自拿走了灵魂石把这些力量全部给了莉亚。
            </p>
          </v-card-text>
        </v-card>
      </v-window-item>
      <v-window-item>
        <v-card class="cardcontent">
          <v-card-title primary-title> 第四幕 </v-card-title>
          <v-card-text>
            <p>
              利亚就跑去了天堂,看守在在钻石之门前的怪物召唤了索拉力昂要与他挑战,烧尽了莉亚的肉身,在火中莉亚完成了变身,集合了7恶首力量的他战胜了索拉力昂,并砍断了他的长矛捅穿了他的身体,一口狮吼功把看守者因派留斯吹到钻石之门上,钻石之门就此倒塌压住因派留斯,英勇天使生死不明,莉亚自己进入了天堂,就在这个时候老泰带领玩家赶到,勇士!去战斗吧!打败他,你就是这个世界的英雄,战胜他,完成任务。
            </p>
          </v-card-text>
        </v-card>
      </v-window-item>
      <v-window-item>
        <v-card class="cardcontent">
          <v-card-title primary-title> 第五幕 </v-card-title>
          <v-card-text>
            <p>敬请期待</p>
          </v-card-text>
        </v-card>
      </v-window-item>
    </v-window>
  </div>
</template>

<script>
export default {
  data() {
    return { show_flag: 0 };
  },
};
</script>
<style>
.cardcontent {
  background-image: url("~assets/bg3.jpg");
  background-size: 100% 100%;
  background-attachment: fixed;
}
</style>

其实v-window有插槽: v-slot:prev="{ on, attrs }"v-slot:next="{ on, attrs }", 可以控制

二. 纸 v-sheet

v-sheet 组件是一块可改变的一张纸,为Vuetify 的功能提供了基础。
v-sheet 组件是许多组件的基础,如 v-card, v-toolbar等等。 可用属性是Material Design的基础 - 纸和立面(阴影)的概念。

1. 基本应用

基本的属性包括 宽 高 阴影 颜色等

<v-sheet elevation="5" height="100" width="100"></v-sheet>

2. 纸的样式

(1). 圆角纸 rounded
<v-sheet elevation="5" height="100" width="100" rounded></v-sheet>
(2). shaped样式 shaped
<v-sheet elevation="5" height="100" width="100" shaped></v-sheet>

三. 幻灯片组 v-slide-group

v-slide-group 组件用于显示伪分页信息 它以 v-item-group 为核心,为 v-tabs 和 v-chip-group 等组件提供基础。

类似于 v-window组件,v-slide-group允许项目根据需要占用尽可能多的空间,允许用户在提供的信息中水平移动。

1. 基本的幻灯片组

    <v-slide-group show-arrows>
      <v-slide-item v-for="n in 25" :key="n" >
        <v-btn
          class="blue white--text"
          depressed
          rounded
        >
          选项 {{ n }}
        </v-btn>
      </v-slide-item>
    </v-slide-group>

2. 激活其中某个项目

<v-slide-group show-arrows>
      <v-slide-item v-for="n in 25" :key="n" v-slot="{ active, toggle }">
        <v-btn
          :input-value="active"
          active-class="purple white--text"
          depressed
          rounded
          @click="toggle"
        >
          选项 {{ n }}
        </v-btn>
      </v-slide-item>
    </v-slide-group>

3. 激活项居中 center-active

<v-slide-group show-arrows center-active>

4. 自定义分隔符 prev-icon/next-icon

<v-slide-group
      center-active
      show-arrows
      prev-icon="mdi-minus"
      next-icon="mdi-plus"
    >

5. 必选 mandatory

mandatory 项目将使幻灯片组需要至少选择一个项目。

6. 多选 multiple

可以通过设置 multiple 属性来选择多个项目。

7. 综合案例

<template>
  <v-container grid-list-xs>
    <p></p>
    <v-slide-group
      center-active
      class="pa-4"
      active-class="indigo"
      show-arrows
      multiple
      prev-icon="mdi-minus"
      next-icon="mdi-plus"
    >
      <v-slide-item
        v-for="player in players"
        :key="player.name"
        v-slot="{ active, toggle }"
      >
        <v-card
          :color="active ? 'white--text' : 'grey darken-2 grey--text'"
          class="ma-4 text-center"
          height="400"
          width="150"
          @click="setoverlay(toggle, player)"
        >
          <v-img :src="player.img" class="grey lighten-2" height="350">
            <v-overlay
              opacity="0.4"
              color="yellow"
              :absolute="true"
              :value="player.overlay"
            >
              <v-icon size="100" color="indigo">mdi-check-bold</v-icon>
            </v-overlay>
          </v-img>
          <h1 v-show="active">{{ player.name }}</h1>
          <h3 v-show="!active">{{ player.name }}</h3>
        </v-card>
      </v-slide-item>
    </v-slide-group>
  </v-container>
</template>

<script>
export default {
  data() {
    return {
      overlay: false,
      players: [
        {
          name: "字母哥",
          overlay: false,
          img: require("../assets/player1.jpeg"),
        },
        {
          name: "老詹",
          overlay: false,
          img: require("../assets/player2.jpeg"),
        },
        {
          name: "老炮",
          overlay: false,
          img: require("../assets/player3.jpeg"),
        },
        {
          name: "我科",
          overlay: false,
          img: require("../assets/player4.jpeg"),
        },
        {
          name: "小学生",
          overlay: false,
          img: require("../assets/player5.jpeg"),
        },
        {
          name: "哈登",
          overlay: false,
          img: require("../assets/player6.jpeg"),
        },
      ],
    };
  },
  methods: {
    setoverlay(toggle, player) {
      toggle();
      player.overlay = !player.overlay;
    },
  },
};
</script>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342