The CSS:
.sp-message-container {
position: fixed;
top: -100px;
left: 50%;
transform: translateX(-50%);
min-width: 300px;
max-width: 500px;
padding: 15px 20px;
border-radius: 5px;
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
z-index: 9999;
opacity: 0;
transition: all 0.3s ease-in-out;
}
.sp-message-show {
top: 20px;
opacity: 1;
}
.sp-message-success {
background-color: #dff0d8;
border: 1px solid #d6e9c6;
color: #3c763d;
}
.sp-message-error {
background-color: #f2dede;
border: 1px solid #ebccd1;
color: #a94442;
}
.sp-message-title {
font-weight: bold;
margin-bottom: 5px;
font-size: 16px;
}
.sp-message-text {
font-size: 14px;
}
Here’s the Javascript to display a message box dynamically anywhere:
function ShowMessage(title, message, isSuccess) {
// Remove existing message if any
const existingMessage = document.querySelector('.sp-message-container');
if (existingMessage) {
existingMessage.remove();
}
// Create message container
const container = document.createElement('div');
container.className = 'sp-message-container';
container.classList.add(isSuccess ? 'sp-message-success' : 'sp-message-error');
// Create title
const titleEl = document.createElement('div');
titleEl.className = 'sp-message-title';
titleEl.textContent = title;
// Create message
const messageEl = document.createElement('div');
messageEl.className = 'sp-message-text';
messageEl.textContent = message;
// Append elements
container.appendChild(titleEl);
container.appendChild(messageEl);
document.body.appendChild(container);
// Slide down animation
setTimeout(() => {
container.classList.add('sp-message-show');
}, 10);
// Slide up and remove after 1800ms (unless clicked)
const autoRemoveTimeout = setTimeout(() => {
container.classList.remove('sp-message-show');
setTimeout(() => {
container.remove();
}, 300); // Wait for slide up animation to complete
}, 1800);
// Add click event listener to manually remove
container.addEventListener('click', () => {
clearTimeout(autoRemoveTimeout); // Prevent automatic removal
container.classList.remove('sp-message-show');
setTimeout(() => {
container.remove();
}, 300); // Wait for slide up animation to complete
});
}

Quick Demo:
<button type="button" onclick="ShowMessage('Ok', 'Good message', true);">
Test Show Good Message
</button>
<button type="button" onclick="ShowMessage('Error', 'Bad Message', false);">
Test Show Bad Message
</button>
Box Title: | |
Box Message: | |
Is Good Message: | Tick = Green theme, Untick = Red theme |
Example of practical use cases:
Form Submission Feedback
// After successful form submission
document.getElementById('contactForm').addEventListener('submit', function(e) {
e.preventDefault();
// Form processing logic here...
// Show success message
ShowMessage("Form Submitted", "Your message has been sent successfully!", true);
});
Error Notifications
// When an API request fails
fetch('/api/data')
.then(response => {
if (!response.ok) throw new Error('Network response was not ok');
return response.json();
})
.catch(error => {
ShowMessage("Error", "Failed to load data. Please try again later.", false);
});
Auto-Save Confirmation
// When a document auto-saves
function autoSaveDocument() {
// Save logic here...
ShowMessage("Auto-Saved", "Your document has been saved automatically.", true);
}
// Call this function periodically
setInterval(autoSaveDocument, 60000);
User Action Confirmation
// After a user deletes an item
document.querySelector('.delete-btn').addEventListener('click', function() {
// Delete logic here...
ShowMessage("Item Deleted", "The selected item has been removed.", true);
});
Adding to Cart Confirmation
<button id="addToCartBtn" class="btn btn-primary">
Add to Cart
</button>
<script>
document.getElementById('addToCartBtn').addEventListener('click', function() {
// Add to cart logic here
const productName = "Wireless Headphones";
const qty = document.getElementById('quantity').value || 1;
// Show success message
ShowMessage("Added to Cart", `${qty} × ${productName} has been added to your cart!`, true);
});
</script>
Copy to Clipboard Confirmation
<div class="code-block">
<pre id="codeSnippet">
const greeting = "Hello, world!";
console.log(greeting);
</pre>
<button id="copyCodeBtn" class="btn btn-sm">
<i class="fa fa-copy"></i> Copy Code
</button>
</div>
<script>
document.getElementById('copyCodeBtn').addEventListener('click', function() {
// Get the text content
const code = document.getElementById('codeSnippet').textContent;
// Copy to clipboard
navigator.clipboard.writeText(code)
.then(() => {
// Show success message
ShowMessage("Copied!", "Code snippet copied to clipboard", true);
})
.catch(() => {
// Show error message if clipboard access fails
ShowMessage("Error", "Unable to copy to clipboard", false);
});
});
</script>
Thumbnail / Cover image background source credit: Image by rawpixel.com on Freepik