### 介绍

Vue Material 是 Vue.js 和 Material Design 规范之间最好的集成!您可以通过简单的 API 轻松配置它,以满足您的所有需求。

文档分为主题、组件和 UI 元素三个部分。主题部分是关于如何为您的应用程序设置主题(或编写自己的主题)的最终指南。组件和 UI 元素部分展示了实时示例,以及每个组件/资源的 API 表格。

Vue Material 文档假定您已经熟悉 Vue.js 2.5+。如果您是 Vue.js 新手,从这里开始学习可能不是最好的主意 - 先掌握基础知识,然后再回来。Vue.js 网站是您开始的最佳文档来源。

安装

您可以通过 NPM 或 Yarn 安装 Vue Material:

$ npm install vue-material --save
$ yarn add vue-material

可选项

为了获得最佳体验,请使用来自 Google CDN 的 Roboto 字体和 Google 图标:

<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700|Material+Icons">

用法

要在您的应用程序中使用 Vue Material,您可以仅导入您实际使用的组件。这将使您的构建比安装完整包要更加紧凑。

单独组件 Individual components

import Vue from 'vue'
import { MdButton, MdContent, MdTabs } from 'vue-material/dist/components'
import 'vue-material/dist/vue-material.min.css'
import 'vue-material/dist/theme/default.css'

Vue.use(MdButton)
Vue.use(MdContent)
Vue.use(MdTabs)

虽然不推荐,但您可以使用 Vue Material 的完整包。这将导入所有组件和 UI 元素,会影响性能:

完整包 Full Bundle

import Vue from 'vue'
import VueMaterial from 'vue-material'
import 'vue-material/dist/vue-material.min.css'
import 'vue-material/dist/theme/default.css'

Vue.use(VueMaterial)

虽然不是推荐的做法,但您始终可以使用 CDNs 进行快速原型设计:

<!doctype html>
<html>
  <head>
    <meta charset="utf-8">
    <meta content="width=device-width,initial-scale=1,minimal-ui" name="viewport">
    <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic|Material+Icons">
    <link rel="stylesheet" href="https://unpkg.com/vue-material/dist/vue-material.min.css">
    <link rel="stylesheet" href="https://unpkg.com/vue-material/dist/theme/default.css">
  </head>

  <body>
    <div id="app">
      <!-- Your code here -->
    </div>

    <script src="https://unpkg.com/vue"></script>
    <script src="https://unpkg.com/vue-material"></script>
    <script>
      Vue.use(VueMaterial.default)

      new Vue({
        el: '#app'
      })
    </script>
  </body>
</html>

全局配置

Vue Material 提供了一些全局选项用于自定义。这些选项是响应式的,您可以随时在任何地方更改它:

通过 Vue 全局对象

import Vue from 'vue'

// change single option
Vue.material.locale.dateFormat = 'dd/MM/yyyy'

// change multiple options
Vue.material = {
  ...Vue.material,
  locale: {
    ...Vue.material.locale,
    dateFormat: 'dd/MM/yyyy',
    firstDayOfAWeek: 1
  }
}

或者您可以在 Vue 组件中通过 this.$material 来更改它:

export default {
  name: 'ChangeDateFormat',
  computed: {
    dateFormat: {
      get () {
        return this.$material.locale.dateFormat
      },
      set (val) {
        this.$material.locale.dateFormat = val
      }
    }
  }
}

Vue Material 提供了以下选项用于自定义:

{
  // activeness of ripple effect
  ripple: true,

  theming: {},
  locale: {
    // range for datepicker
    startYear: 1900,
    endYear: 2099,

    // date format for date picker
    dateFormat: 'yyyy-MM-dd',

    // i18n strings
    days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
    shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
    shorterDays: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
    months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
    shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'],
    shorterMonths: ['J', 'F', 'M', 'A', 'M', 'Ju', 'Ju', 'A', 'Se', 'O', 'N', 'D'],

    // `0` stand for Sunday, `1` stand for Monday
    firstDayOfAWeek: 0,

    cancel: 'Cancel',
    confirm: 'Ok'
  }
}

参考资料

https://www.creative-tim.com/vuematerial/