vue-material
Vue.js Framework - ready-to-use Vue components with Material Design, free forever.
Top Related Projects
🐉 Vue Component Framework
A Vue.js 2.0 UI Toolkit for Web
Lightweight UI components for Vue.js based on Bulma
BootstrapVue provides one of the most comprehensive implementations of Bootstrap v4 for Vue.js. With extensive and automated WAI-ARIA accessibility markup.
Quasar Framework - Build high-performance VueJS user interfaces in record time
Quick Overview
Vue Material is a lightweight framework for building user interfaces with Vue.js, following Google's Material Design specifications. It provides a set of reusable and customizable components that help developers create consistent and attractive web applications with ease.
Pros
- Comprehensive set of Material Design components
- Easy integration with Vue.js projects
- Customizable themes and styles
- Active community and regular updates
Cons
- Learning curve for developers new to Material Design
- Some components may have limited customization options
- Documentation can be improved in certain areas
- Occasional breaking changes between major versions
Code Examples
- Creating a simple button:
<template>
<md-button class="md-primary md-raised">Click me</md-button>
</template>
- Using a dialog component:
<template>
<div>
<md-button @click="showDialog = true">Open Dialog</md-button>
<md-dialog :md-active.sync="showDialog">
<md-dialog-title>Dialog Title</md-dialog-title>
<md-dialog-content>Dialog content goes here.</md-dialog-content>
<md-dialog-actions>
<md-button class="md-primary" @click="showDialog = false">Close</md-button>
</md-dialog-actions>
</md-dialog>
</div>
</template>
<script>
export default {
data: () => ({
showDialog: false
})
}
</script>
- Creating a data table:
<template>
<md-table v-model="users" md-sort="name" md-sort-order="asc" md-card md-fixed-header>
<md-table-toolbar>
<h1 class="md-title">Users</h1>
</md-table-toolbar>
<md-table-row slot="md-table-row" slot-scope="{ item }">
<md-table-cell md-label="ID" md-sort-by="id">{{ item.id }}</md-table-cell>
<md-table-cell md-label="Name" md-sort-by="name">{{ item.name }}</md-table-cell>
<md-table-cell md-label="Email" md-sort-by="email">{{ item.email }}</md-table-cell>
</md-table-row>
</md-table>
</template>
<script>
export default {
data: () => ({
users: [
{ id: 1, name: 'John Doe', email: 'john@example.com' },
{ id: 2, name: 'Jane Smith', email: 'jane@example.com' }
]
})
}
</script>
Getting Started
- Install Vue Material in your Vue.js project:
npm install vue-material --save
- Import and use Vue Material in your main.js file:
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)
- Start using Vue Material components in your Vue templates:
<template>
<div>
<md-button class="md-primary">Hello, Vue Material!</md-button>
</div>
</template>
Competitor Comparisons
🐉 Vue Component Framework
Pros of Vuetify
- Larger community and more frequent updates
- Extensive documentation and better learning resources
- Wider range of pre-built components and layouts
Cons of Vuetify
- Larger bundle size, which may impact initial load times
- More opinionated design system, potentially limiting customization
- Steeper learning curve for beginners due to its extensive feature set
Code Comparison
Vue Material:
<md-button class="md-primary md-raised">Primary Button</md-button>
Vuetify:
<v-btn color="primary" elevation="2">Primary Button</v-btn>
Both Vue Material and Vuetify are popular UI component libraries for Vue.js applications, implementing Material Design principles. Vuetify generally offers a more comprehensive set of components and features, making it suitable for larger projects. However, this comes at the cost of a larger bundle size and potentially more complex usage.
Vue Material, on the other hand, provides a lighter-weight alternative with a focus on simplicity and ease of use. It may be more appropriate for smaller projects or developers who prefer a minimalist approach.
The choice between the two libraries ultimately depends on the specific requirements of your project, team expertise, and performance considerations.
A Vue.js 2.0 UI Toolkit for Web
Pros of Element
- Larger community and more frequent updates
- More comprehensive component library
- Better documentation and examples
Cons of Element
- Heavier bundle size
- Less customizable default theme
- Steeper learning curve for beginners
Code Comparison
Element:
<el-button type="primary" @click="handleClick">
Click me
</el-button>
Vue Material:
<md-button class="md-primary" @click="handleClick">
Click me
</md-button>
Summary
Element and Vue Material are both popular UI component libraries for Vue.js applications. Element offers a more extensive set of components and better documentation, making it suitable for large-scale projects. However, it comes with a larger bundle size and may be overwhelming for beginners.
Vue Material, on the other hand, provides a lighter-weight solution with a focus on Material Design principles. It's easier to get started with and offers more flexibility in terms of customization. However, it has a smaller community and fewer components compared to Element.
The choice between these libraries depends on project requirements, team expertise, and design preferences. Element is better suited for complex applications with diverse UI needs, while Vue Material is ideal for projects aiming for a Material Design aesthetic with a smaller footprint.
Lightweight UI components for Vue.js based on Bulma
Pros of Buefy
- Lightweight and modular, allowing for smaller bundle sizes
- Based on Bulma CSS framework, providing a clean and modern design
- Extensive documentation and active community support
Cons of Buefy
- Less comprehensive component set compared to Vue Material
- May require additional customization for complex UI requirements
- Limited theming options out of the box
Code Comparison
Buefy:
<template>
<b-button @click="showModal">Open Modal</b-button>
<b-modal v-model="isModalActive">
<p>Modal content</p>
</b-modal>
</template>
Vue Material:
<template>
<md-button @click="showDialog">Open Dialog</md-button>
<md-dialog :md-active.sync="isDialogActive">
<md-dialog-content>Dialog content</md-dialog-content>
</md-dialog>
</template>
Both libraries offer similar component structures, but Vue Material tends to use more specific component names (e.g., md-dialog
instead of b-modal
). Buefy's syntax is often more concise, while Vue Material provides more granular control over component parts.
BootstrapVue provides one of the most comprehensive implementations of Bootstrap v4 for Vue.js. With extensive and automated WAI-ARIA accessibility markup.
Pros of Bootstrap Vue
- Larger community and more extensive documentation
- Seamless integration with Bootstrap's CSS framework
- Wider range of components and utilities
Cons of Bootstrap Vue
- Heavier bundle size due to Bootstrap dependency
- Less customizable design, tied to Bootstrap's aesthetic
- Steeper learning curve for those unfamiliar with Bootstrap
Code Comparison
Bootstrap Vue:
<template>
<b-button variant="primary" @click="handleClick">
Click me
</b-button>
</template>
Vue Material:
<template>
<md-button class="md-primary" @click="handleClick">
Click me
</md-button>
</template>
Both libraries offer similar component structures, but Bootstrap Vue uses the b-
prefix for its components, while Vue Material uses the md-
prefix. The main difference lies in the styling and customization options available for each library.
Bootstrap Vue provides a more comprehensive set of components and utilities, making it suitable for rapid development of complex applications. However, Vue Material offers a more modern and customizable design language, adhering closely to Material Design principles.
Ultimately, the choice between these libraries depends on project requirements, design preferences, and team familiarity with Bootstrap or Material Design concepts.
Quasar Framework - Build high-performance VueJS user interfaces in record time
Pros of Quasar
- More comprehensive framework with built-in components for mobile, desktop, and web development
- Offers SSR (Server-Side Rendering) and PWA (Progressive Web App) support out of the box
- Larger and more active community, resulting in frequent updates and better documentation
Cons of Quasar
- Steeper learning curve due to its extensive feature set
- Larger bundle size, which may impact initial load times for smaller projects
- More opinionated structure, potentially limiting flexibility for custom designs
Code Comparison
Vue Material:
<template>
<md-button class="md-raised md-primary">Click me</md-button>
</template>
<script>
import { MdButton } from 'vue-material/dist/components'
</script>
Quasar:
<template>
<q-btn color="primary" label="Click me" />
</template>
<script>
import { QBtn } from 'quasar'
</script>
Both frameworks offer Material Design-inspired components, but Quasar's syntax is generally more concise. Quasar also provides a wider range of pre-built components and utilities, making it easier to create complex layouts and functionality with less custom code.
While Vue Material focuses primarily on Material Design components for web applications, Quasar extends its capabilities to mobile and desktop development, offering a more versatile solution for cross-platform projects.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Material Design for Vue.js
Vue Material is Simple, lightweight and built exactly according to the Google Material Design specs
Build well-designed apps that can fit on every screen with support to all modern Web Browsers with dynamic themes, components on demand and all with an ease-to-use API
Demo and Documentation
Installation and Usage
Install Vue Material through npm or yarn
npm install vue-material --save
yarn add vue-material
* Others package managers like JSPM and Bower are not supported yet.
Import or require Vue and Vue Material in your code:
import Vue from 'vue'
import VueMaterial from 'vue-material'
import 'vue-material/dist/vue-material.min.css'
Vue.use(VueMaterial)
Or use individual components:
import Vue from 'vue'
import { MdButton, MdContent, MdTabs } from 'vue-material/dist/components'
import 'vue-material/dist/vue-material.min.css'
Vue.use(MdButton)
Vue.use(MdContent)
Vue.use(MdTabs)
Alternatively you can download and reference the script and the stylesheet in your HTML:
<link rel="stylesheet" href="path/to/vue-material.css">
<script src="path/to/vue-material.js"></script>
Optionally import Roboto font & Material Icons from Google CDN:
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic|Material+Icons">
Changelog
Questions
If you have any questions, ideas or you want to discuss with Vue Material community, use Discord to join us.
Contributing
Please make sure to read the Contributing Guide before making a pull request.
Browser Support
Vue Material supports all modern browsers.
May work in other browsers but it's untested.
Become a part of the Vue Material community
This project exists thanks to all the people who contribute
Sponsors & Backers
Thank you to all our backers! ð [Become a backer]
Credits and Thanks
Vue Material does not run under the umbrella of any company or anything like that. It is an independent project created by Marcos Moura in his spare time, which has become one of the most used UI Libraries for Vue.js. The development is active and we are working hard to release great things for you.
- elviskang for donating the npm package name!
- Bruno Castro for the awesome Vue Material Logo.
- Supported by Creative Tim
License
MIT
Top Related Projects
🐉 Vue Component Framework
A Vue.js 2.0 UI Toolkit for Web
Lightweight UI components for Vue.js based on Bulma
BootstrapVue provides one of the most comprehensive implementations of Bootstrap v4 for Vue.js. With extensive and automated WAI-ARIA accessibility markup.
Quasar Framework - Build high-performance VueJS user interfaces in record time
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot