Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Chart.js
- 개발콘텐츠
- 누구나 자료구조와 알고리즘
- const 단언문
- 성능최적화
- React Native
- 제네릭
- returnType
- 커스텀
- TSDoc
- click and drag
- JS console
- typescript
- CSS
- NonNullable
- 리액트
- React.js
- react
- vue.js
- 반복줄이기
- 타입스크립트
- reactjs
- javascript
- 폰트적용하기
- utilty type
- 공통컴포넌트
- 티스토리꾸미기
- 2022
- 타입좁히기
- 레이아웃쪼개기
Archives
- Today
- Total
몽땅뚝딱 개발자
[Vue.js] plugin으로 toast 만들기 본문
토스트를 띄우려고 컴포넌트를 만들던 중, 메세지 하나 띄우는데 많은 작업이 필요없다고 판단하여 플러그인으로 만들었다.
실행되면 <body>에 토스트용 <div>가 추가되고 2초뒤에 사라지는 로직이다.
📄 plugins/toast.js
import Vue from 'vue'
const customToast = {
install(Vue) {
Vue.prototype.$_toast = function (msg) {
removeToast()
// 1. id가 'toast'인 div 생성
let toastDiv = document.createElement('div')
toastDiv.setAttribute('id', 'toast')
// 2. <p> 태그안에 매개변수 msg를 append
let textEl = document.createElement('p')
textEl.appendChild(document.createTextNode(msg))
toastDiv.appendChild(textEl)
// 3. 만들어진 div를 최상단인 <body> 안에 append
document.body.appendChild(toastDiv)
// 4. 2초 뒤에 사라지게 만들기
let targetToast = document.getElementById('toast')
setTimeout(function () {
if (targetToast !== null) {
targetToast.remove()
}
}, 2000)
}
},
}
// 기존 토스트가 남아있다면 삭제
function removeToast() {
let toast = document.getElementById('toast')
if (toast !== null) {
toast.remove()
}
}
Vue.use(customToast)
📄 호출방법
showToast() {
let msg = '토스트입니다.'
this.$_toast(msg)
}
📄 CSS
#toast {
z-index: 1000;
height: 52px;
width: calc(100% - 40px);
padding: 0 16px;
background-color: black;
border-radius: 8px;
position: fixed;
bottom: 52px;
left: 50%;
display: flex;
align-items: center;
transform: translate(-50%, -50%);
p {
color: #fff;
font-size: 15px;
letter-spacing: -0.5px;
}
}
개인적으로 공부한 내용을 정리하는 블로그로
잘못된 개념을 게시하지않도록 주의하고 있으나 오류가 있을 수 있습니다.
'Development > Vue.js' 카테고리의 다른 글
[Vue.js] mac에서 node 버전 변경 / nvm (0) | 2022.02.25 |
---|---|
[Vue.js] filter 사용하기 (0) | 2022.02.20 |
[Vue.js/라이브러리] Vue2Editor (0) | 2022.02.15 |
[Vue.js] push, replace, go (0) | 2022.02.14 |
[Vue.js] 버튼으로 복사 및 붙여넣기 (0) | 2022.02.05 |
Comments