반응형

Vuetify는 Material Design 가이드를 따르는 Vue.js UI 라이브러리로, 다양한 사전 제작된 컴포넌트와 유틸리티를 제공하여 반응형이고 미적으로 우수한 인터페이스를 빠르게 개발할 수 있도록 도와줍니다. 아래는 Vuetify를 효과적으로 사용하는 데 필요한 주요 개념과 문서에 대한 가이드입니다.

 

Vuetify 시작하기

 

설치

공식 설치 가이드: Vuetify 설치

vue add vuetify

 

npm install vuetify

 

설치 후 main.js 파일에서 Vuetify를 설정합니다:

import { createApp } from 'vue';
import App from './App.vue';
import vuetify from './plugins/vuetify';

createApp(App)
  .use(vuetify)
  .mount('#app');

 

스타일링 및 레이아웃

Vuetify는 Material Design의 레이아웃 시스템을 따릅니다. v-container, v-row, v-col을 사용하여 반응형 레이아웃을 쉽게 구성할 수 있습니다.

 

v-container: 레이아웃의 기본 컨테이너로, 내부에 v-rowv-col을 포함합니다.

v-row: 수평 행을 생성하며, 여러 v-col을 포함할 수 있습니다.

v-col: 열을 생성하며, 그리드 시스템에서 비율에 따라 폭을 차지합니다.

<v-container>
  <v-row>
    <v-col cols="12" md="8">Main content</v-col>
    <v-col cols="12" md="4">Sidebar</v-col>
  </v-row>
</v-container>

 

 

텍스트 크기 및 타이포그래피

 

Vuetify는 text-h1에서 text-h6까지 다양한 텍스트 스타일과 크기를 제공하며, 이러한 클래스들을 사용해 쉽게 텍스트 스타일을 적용할 수 있습니다.

문서: 텍스트 및 타이포그래피

<v-typography variant="h1">This is a headline</v-typography>
<v-typography variant="body-1">This is body text</v-typography>

 

컬러 팔레트

 

Vuetify는 Material Design을 기반으로 한 색상 팔레트를 포함하고 있어, 애플리케이션 전반에 걸쳐 일관된 색상 테마를 쉽게 적용할 수 있습니다.

문서: Material Colors

 

아이콘 폰트

 

Vuetify는 다양한 아이콘 폰트를 지원하며, Material Design Icons(MDI)와 쉽게 통합할 수 있습니다.

아이콘 검색 및 사용: Vuetify 아이콘 폰트

MDI 전체 라이브러리 보기: MDI 아이콘 라이브러리

 

테마 커스터마이징

 

Vuetify에서 애플리케이션의 테마를 커스터마이징할 수 있습니다. 테마 값은 myCustomLightTheme 객체를 수정하여 변경할 수 있습니다.

문서: 테마 설정

const vuetify = createVuetify({
  theme: {
    themes: {
      light: {
        primary: '#3f51b5',
        secondary: '#b0bec5',
        accent: '#8c9eff',
        error: '#b71c1c',
      },
    },
  },
});

 

 

컬러 속성

 

Vuetify의 컬러 속성을 사용하여 Material Design의 색상 시스템으로 컴포넌트를 스타일링할 수 있습니다.

문서: 컬러 속성

 

간격(Spacing) 유틸리티

 

Vuetify는 마진과 패딩을 쉽게 관리할 수 있는 간격 유틸리티를 제공합니다.

문서: 간격 유틸리티

 

그리드 시스템 (Col 속성)

 

Vuetify의 그리드 시스템은 Flexbox를 기반으로 하며, 강력한 레이아웃 시스템을 제공합니다.

문서: 그리드 및 Col 속성

 

컴포넌트

 

텍스트 필드

 

텍스트 필드는 사용자로부터 텍스트 입력을 받기 위한 주요 폼 요소입니다.

문서: 텍스트 필드

<v-form>
  <v-text-field label="Name" v-model="name"></v-text-field>
  <v-select :items="['Option 1', 'Option 2']" label="Select an option"></v-select>
  <v-checkbox label="Accept Terms" v-model="accepted"></v-checkbox>
</v-form>

 

 

라디오 버튼

 

라디오 버튼은 목록에서 하나의 옵션을 선택할 때 사용됩니다.

문서: 라디오 버튼

 

다이얼로그(Dialog)

 

다이얼로그는 중요한 정보나 사용자의 결정을 요청하는 모달 창입니다.

예시: 다이얼로그 사용법

<v-dialog v-model="dialog">
  <v-card>
    <v-card-title>Dialog Title</v-card-title>
    <v-card-text>
      This is a dialog content.
    </v-card-text>
    <v-card-actions>
      <v-btn @click="dialog = false">Close</v-btn>
    </v-card-actions>
  </v-card>
</v-dialog>

 

 

데이터 테이블

 

데이터 테이블은 구조화된 데이터를 표 형식으로 표시하는 데 사용되며, 정렬, 페이징, 검색 등의 기능을 제공합니다.

문서: 데이터 테이블

<v-data-table :headers="headers" :items="items" :search="search">
  <template v-slot:top>
    <v-text-field v-model="search" label="Search"></v-text-field>
  </template>
</v-data-table>

 

카드

 

카드는 다양한 유형의 콘텐츠를 표시하는 데 유용한 유연한 컨테이너입니다.

예시: 카드 사용법

<v-card>
  <v-card-title>Card Title</v-card-title>
  <v-card-subtitle>Card Subtitle</v-card-subtitle>
  <v-card-text>
    This is some text within a card.
  </v-card-text>
  <v-card-actions>
    <v-btn text>Action</v-btn>
  </v-card-actions>
</v-card>

 

 

셀렉트 입력

 

셀렉트 입력은 목록에서 옵션을 선택할 수 있도록 합니다.

문서: 셀렉트 입력

 

내비게이션 드로어

 

내비게이션 드로어는 사이드 메뉴를 제공하며, 토글로 표시하거나 숨길 수 있습니다.

문서: 내비게이션 드로어

 

리스트

 

리스트는 관련된 콘텐츠를 그룹화하여 표시하는 데 사용됩니다.

문서: 리스트

 

 

칩은 복잡한 엔티티를 컴팩트한 형태로 표현하는 작은 컴포넌트입니다.

예시: 칩 사용법

API 문서: v-chip API

 

반응형

'프론트엔드 > Vuejs' 카테고리의 다른 글

vue lifecycle 라이프사이클 정리  (0) 2024.08.18
vue to-do 리스트 구현 7 - composition api 비교  (0) 2024.08.18
vue vuex 란  (0) 2024.08.17
vue to-do 리스트 구현 6 - vuex 구현  (0) 2024.08.17
Vue Router란?  (0) 2024.08.17

+ Recent posts