美文网首页
Material Design风格神框架vuetify 学习笔记

Material Design风格神框架vuetify 学习笔记

作者: 熊爸天下_56c7 | 来源:发表于2021-09-03 09:51 被阅读0次

    一. 窗口 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>
    

    相关文章

      网友评论

          本文标题:Material Design风格神框架vuetify 学习笔记

          本文链接:https://www.haomeiwen.com/subject/tpsoiltx.html