HTML, CSS 및 Javascript만 사용하여 토스트 알림 만들기
10093 단어 incodercsshtmljavascript
토스트 알림이란 무엇입니까?
알림은 메시지, 이메일, 아이콘 또는 응용 프로그램에서 사용자의 주의를 요할 때 표시되는 다른 기호입니다. 알림은 새로운 일이 발생했음을 알려주는 방법입니다. 알림은 새로운 일이 발생했음을 알려주는 방법이므로 주의를 기울여야 할 사항을 놓치지 않고 응용 프로그램을 사용 중인지 여부에 관계없이 나타납니다. 그리고 응용 프로그램이 무언가에 대해 경고하려고 할 때 경고 알림이 나타납니다.
다음을 좋아할 수 있습니다.
이 프로그램 [Toast Alert Notification]은 처음에는 웹 페이지에 버튼만 있는데 그 버튼을 클릭하면 오른쪽 상단에 알림 알림이 뜹니다. 이 알림은 5초 후에 자동으로 숨겨지며 해당 알림을 숨기는 교차 서명 버튼도 있습니다.
선택할 수 있는 몇 가지 옵션, 경고 토스트 알림을 선택한 것처럼 표시하려는 알림 유형, 토스트 메시지에 표시될 항목을 입력할 때 토스트 메시지를 추가하는 옵션이 있지만 텍스트 영역을 떠나는 경우 비어 있으면 오류 경고가 표시됩니다.
이 블로그가 마음에 들고 소스 코드를 얻고 싶다면 아래에 이 프로그램의 모든 코드를 제공했으며 이 프로그램의 소스 파일을 쉽게 다운로드할 수 있는 이 프로그램의 다운로드 링크도 제공했습니다.
미리보기를 사용할 수 있습니다here.
HTML 코드
<!-- --------------------- Created By InCoder ----------------------->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Toast Alert - InCoder</title>
<link rel="stylesheet" href="main.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
</head>
<body>
<div class="optionsWrapper">
<div class="selectOption">
<p>Select Type</p>
<select id="toastType">
<option value="success">Success</option>
<option value="error">Error</option>
<option value="warning">Warning</option>
<option value="info">Information</option>
</select>
</div>
<p>Enter Toast Message</p>
<textarea placeholder="Toast message" id="toastMessage" cols="30" rows="5"></textarea>
<button class="btn">Show Alert</button>
</div>
<script src="toast.js"></script>
<script src="script.js"></script>
</body>
</html>
CSS 코드
/* --------------------- Created By InCoder --------------------- */
@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
*{
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Poppins', sans-serif;
}
body{
display: flex;
height: 100vh;
align-items: center;
flex-direction: column;
justify-content: center;
background-color: #4a43be;
}
.btn {
width: 8rem;
display: grid;
height: 2.5rem;
font-size: 1rem;
cursor: pointer;
color: #4a43be;
place-items: center;
border-radius: .4rem;
transition: all 300ms;
border: 2px solid #4a43be;
background-color: transparent;
}
.btn:hover {
color: #fff;
background-color: #4a43be;
}
.toast-container {
position: fixed;
top: 0;
right: 0;
display: flex;
flex-direction: column;
margin: 1rem;
}
.toast-container .inAlert{
display: flex;
min-height: 3rem;
min-width: 18rem;
max-width: 24rem;
align-items: center;
padding: .5rem .5rem;
border-radius: .4rem;
transform: translateX(25rem);
justify-content: space-between;
color: rgb(255 255 255 / 80%);
transition: transform .5s cubic-bezier(0.24, 0.91, 0.62, 1.24);
}
.toast-container .inAlert.slide-in {
transform: translateX(0rem);
}
.toast-container .inAlert.error .icon i {
content: '\f058';
}
.toast-container .inAlert.error {
background-color: rgb(226 45 59 / 80%)
}
.toast-container .inAlert.success {
background-color: rgb(43 198 111 / 80%)
}
.toast-container .inAlert.info {
background-color: rgb(25 140 146 / 80%)
}
.toast-container .inAlert.warning {
background-color: rgb(214 175 12 / 80%)
}
.toast-container i {
font-size: 1.5rem;
margin: 0 .5rem;
color: rgb(255 255 255 / 80%)
}
.toast-container .inAlert .wrapper{
display: flex;
align-items: center;
}
.toast-container .inAlert .wrapper .title {
text-transform: capitalize;
}
.toast-container .inAlert .closeAlert {
cursor: pointer;
}
.toast-container .inAlert .wrapper .message {
font-size: .8rem;
}
.optionsWrapper{
width: 20rem;
padding: .5rem .5rem;
border-radius: .4rem;
background-color: #fff;
}
.optionsWrapper .selectOption {
margin-bottom: .6rem;
}
.optionsWrapper p {
font-size: .9rem;
font-weight: 500;
}
.optionsWrapper select,
.optionsWrapper textarea {
width: 100%;
}
.optionsWrapper select{
height: 2rem;
padding: 0 .2rem;
border-radius: .3rem;
}
.optionsWrapper textarea {
outline: none;
padding: .2rem;
border-radius: .3rem
}
.optionsWrapper textarea:focus{
border: 2px solid #4a43be;
}
자바스크립트 코드
const showAlert = (data) => {
let { type, message } = data
let autoClose
data.autoClose == undefined ? autoClose = 3000 : autoClose = data.autoClose
let toastContainer = document.createElement('div')
toastContainer.classList.add('toast-container')
var container = document.querySelector('.toast-container')
if (typeof (container) != 'undefined' && container != null) return
document.body.appendChild(toastContainer)
let icon
if(type == 'error') {
icon = 'fa-circle-exclamation'
} else if(type == 'success'){
icon = 'fa-circle-check'
} else if(type == 'warning'){
icon = 'fa-triangle-exclamation'
} else if(type == 'info'){
icon = 'fa-circle-info'
}
let alert = `<div class="inAlert ${type}">
<div class="wrapper">
<div class="icon">
<i class="fa-solid ${icon}"></i>
</div>
<div class="details">
<div class="title">${type}</div>
<div class="message">${message}</div>
</div>
</div>
<i class="fa-solid fa-xmark closeAlert"></i>
</div>`
toastContainer.insertAdjacentHTML('afterbegin', alert)
setTimeout(() => {
var isAlert = document.querySelector('.inAlert')
if (typeof (isAlert) != 'undefined' && isAlert != null) isAlert.classList.add('slide-in')
}, 100)
setTimeout(() => {
var isAlert = document.querySelector('.inAlert')
if (typeof (isAlert) != 'undefined' && isAlert != null) isAlert.classList.remove('slide-in')
setTimeout(() => {
document.querySelector('.inAlert').remove()
removeToast()
}, 100)
}, autoClose)
let closeBtn = document.querySelector('.closeAlert')
closeBtn.addEventListener('click', () => {
document.querySelector('.inAlert').classList.remove('slide-in')
setTimeout(() => {
document.querySelector('.inAlert').remove()
removeToast()
}, 100)
})
}
const removeToast = () => {
var container = document.querySelector('.toast-container')
if (!container.hasChildNodes()) container.remove()
}
let btn = document.querySelector('.btn')
btn.addEventListener('click', () => {
let toastType = document.querySelector('#toastType').value
let toastMessage = document.querySelector('#toastMessage').value.trim()
if(toastMessage == '') showAlert({
type: 'error',
message: 'Toast Message cannot be empty',
})
showAlert({
type: toastType,
message: toastMessage,
})
})
Reference
이 문제에 관하여(HTML, CSS 및 Javascript만 사용하여 토스트 알림 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/incoderweb/create-a-toast-alert-using-only-html-css-and-javascript-1add텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)