0% found this document useful (0 votes)
35 views17 pages

Theme 15588302489723418

The document is a detailed review of MailEmpire AI, a professional email marketing software, highlighting its features, user experience, and pricing. It includes sections on the software's capabilities, such as built-in SMTP service, AI-powered writing, and analytics dashboard. The review is authored by yassinosml90 and was last updated on May 9, 2025.

Uploaded by

redalevi10
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
35 views17 pages

Theme 15588302489723418

The document is a detailed review of MailEmpire AI, a professional email marketing software, highlighting its features, user experience, and pricing. It includes sections on the software's capabilities, such as built-in SMTP service, AI-powered writing, and analytics dashboard. The review is authored by yassinosml90 and was last updated on May 9, 2025.

Uploaded by

redalevi10
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 17

<!

DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="google" content="notranslate">
<meta name="robots" content="noindex,nofollow">
<meta name="googlebot" content="noindex">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-
scale=1.0, user-scalable=no">
<title>MailEmpire AI Software Review 2025 | Professional Email Marketing
Tool</title>

<!-- Meta Tags -->


<meta name="description" content="A detailed review of MailEmpire AI email
marketing software. Features, capabilities, and honest user experience shared by
yassinosml90.">
<meta name="author" content="yassinosml90">
<meta name="last-modified" content="2025-05-09">

<!-- Google Fonts -->


<link href="https://fonts.googleapis.com/css2?
family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap" rel="stylesheet">

<!-- Base Styles -->


<style>
/* Reset and Base Styles */
*, *::before, *::after {
margin: 0;
padding: 0;
box-sizing: border-box;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

:root {
--primary-color: #2563EB;
--secondary-color: #1E40AF;
--text-primary: #1E293B;
--text-secondary: #64748B;
--background-light: #F8FAFC;
--border-color: #E5E7EB;
--success-color: #22C55E;
--warning-color: #FBC02D;
--max-width: 1140px;
--header-height: 70px;
--border-radius: 12px;
--transition-speed: 0.3s;
}

html {
scroll-behavior: smooth;
scroll-padding-top: calc(var(--header-height) + 20px);
-webkit-text-size-adjust: 100%;
}

body {
font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont,
'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
line-height: 1.6;
color: var(--text-primary);
background-color: #FFFFFF;
margin: 0;
padding: 0;
overflow-x: hidden;
width: 100%;
}

/* Hide Blogger Elements */


.Navbar, #navbar, #navbar-iframe, #HeaderAsNonLanding {
display: none !important;
height: 0 !important;
visibility: hidden !important;
opacity: 0 !important;
}

/* Header Styles */
.header {
background: #FFFFFF;
border-bottom: 1px solid var(--border-color);
padding: 1.5rem 1rem;
position: relative;
width: 100%;
z-index: 1000;
}

.header-content {
max-width: var(--max-width);
margin: 0 auto;
padding: 0 1rem;
text-align: center;
}

.review-badge {
display: inline-block;
background: var(--background-light);
border: 1px solid var(--border-color);
padding: 0.5rem 1rem;
border-radius: 50px;
font-size: 0.875rem;
color: var(--text-secondary);
margin-bottom: 1rem;
white-space: nowrap;
}

.title {
font-size: clamp(1.5rem, 4vw, 2.25rem);
color: var(--text-primary);
margin-bottom: 1rem;
font-weight: 700;
line-height: 1.2;
padding: 0 0.5rem;
}

.subtitle {
font-size: clamp(1rem, 3vw, 1.125rem);
color: var(--text-secondary);
max-width: 600px;
margin: 0 auto;
padding: 0 0.5rem;
}

/* Navigation Styles */
.nav {
background: #FFFFFF;
border-bottom: 1px solid var(--border-color);
position: sticky;
top: 0;
z-index: 1000;
width: 100%;
overflow: hidden;
}

.nav-container {
max-width: var(--max-width);
margin: 0 auto;
padding: 0.5rem 1rem;
display: flex;
justify-content: flex-start;
gap: 1rem;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
scrollbar-width: none; /* Firefox */
-ms-overflow-style: none; /* IE and Edge */
}

.nav-container::-webkit-scrollbar {
display: none; /* Chrome, Safari, Opera */
}

.nav-link {
text-decoration: none;
color: var(--text-secondary);
font-size: 0.9375rem;
font-weight: 500;
padding: 0.75rem 1.25rem;
border-radius: var(--border-radius);
transition: all var(--transition-speed) ease;
white-space: nowrap;
flex-shrink: 0;
}

.nav-link:hover, .nav-link.active {
background: #EFF6FF;
color: var(--primary-color);
}

/* Mobile Optimizations */
@media (max-width: 768px) {
.header {
padding: 1rem 0.5rem;
}

.header-content {
padding: 0 0.5rem;
}
.review-badge {
font-size: 0.75rem;
padding: 0.4rem 0.8rem;
}

.nav-container {
padding: 0.5rem;
gap: 0.5rem;
}

.nav-link {
padding: 0.6rem 1rem;
font-size: 0.875rem;
}
}

/* Ensure proper display on small screens */


@media (max-width: 360px) {
.title {
font-size: 1.25rem;
}

.subtitle {
font-size: 0.875rem;
}

.nav-link {
padding: 0.5rem 0.75rem;
font-size: 0.8125rem;
}
}
</style>
</head>
<body>
<!-- Header -->
<header class="header">
<div class="header-content">
<span class="review-badge">Software Review • Updated May 9, 2025</span>
<h1 class="title">MailEmpire AI: Professional Email Marketing
Software</h1>
<p class="subtitle">A detailed analysis of features, capabilities, and
real user experience</p>
</div>
</header>

<!-- Navigation -->


<nav class="nav">
<div class="nav-container">
<a href="#overview" class="nav-link">Overview</a>
<a href="#features" class="nav-link">Features</a>
<a href="#experience" class="nav-link">User Experience</a>
<a href="#pricing" class="nav-link">Pricing</a>
<a href="#conclusion" class="nav-link">Conclusion</a>
</div>
</nav>

<style>
/* Main Content Styles */
.content {
max-width: var(--max-width);
margin: 0 auto;
padding: 1.5rem;
}

.section {
margin-bottom: 2rem;
background: #FFFFFF;
border-radius: var(--border-radius);
border: 1px solid var(--border-color);
padding: 1.5rem;
}

.section-title {
font-size: clamp(1.25rem, 3vw, 1.5rem);
color: var(--text-primary);
margin-bottom: 1.5rem;
font-weight: 600;
display: flex;
align-items: center;
gap: 0.75rem;
}

.section-title svg {
width: 24px;
height: 24px;
color: var(--primary-color);
flex-shrink: 0;
}

/* Product Overview Card */


.product-card {
display: flex;
flex-direction: column;
gap: 1.5rem;
background: var(--background-light);
border-radius: var(--border-radius);
padding: 1.5rem;
margin-bottom: 1.5rem;
}

.product-image {
width: 100%;
max-width: 600px;
height: auto;
border-radius: 8px;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
margin: 0 auto;
}

.product-info {
flex: 1;
}

.product-rating {
display: flex;
align-items: center;
gap: 0.5rem;
margin-bottom: 1rem;
justify-content: center;
}

.stars {
color: var(--warning-color);
}

.price-tag {
display: inline-block;
background: #EFF6FF;
color: var(--secondary-color);
padding: 0.5rem 1rem;
border-radius: 50px;
font-weight: 600;
margin: 1rem 0;
text-align: center;
}

/* Feature Grid */
.feature-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1.5rem;
margin-top: 1.5rem;
}

.feature-card {
background: #FFFFFF;
border: 1px solid var(--border-color);
border-radius: var(--border-radius);
padding: 1.5rem;
text-align: center;
}

.feature-icon {
font-size: 2rem;
margin-bottom: 1rem;
}

.feature-title {
font-size: 1.125rem;
color: var(--text-primary);
margin-bottom: 0.5rem;
}

.feature-description {
color: var(--text-secondary);
font-size: 0.9375rem;
}

/* CTA Button */
.cta-button {
display: inline-block;
background: var(--primary-color);
color: white;
padding: 1rem 2rem;
border-radius: 8px;
text-decoration: none;
font-weight: 600;
transition: background-color var(--transition-speed) ease;
text-align: center;
width: 100%;
max-width: 300px;
margin: 1rem auto;
}

.cta-button:hover {
background: var(--secondary-color);
}

/* Mobile Optimizations */
@media (min-width: 768px) {
.product-card {
flex-direction: row;
align-items: center;
padding: 2rem;
}

.product-image {
width: 45%;
}

.product-info {
text-align: left;
}

.product-rating {
justify-content: flex-start;
}

.cta-button {
width: auto;
margin: 1rem 0;
}
}

@media (max-width: 480px) {


.content {
padding: 1rem;
}

.section {
padding: 1rem;
margin-bottom: 1rem;
}

.feature-grid {
grid-template-columns: 1fr;
}

.product-card {
padding: 1rem;
}
}
</style>

<!-- Main Content -->


<main class="content">
<!-- Overview Section -->
<section id="overview" class="section">
<h2 class="section-title">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24
24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-
width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
Overview
</h2>

<div class="product-card">
<img
src="https://cdn.oppyotest.com/launches/mailempireai/special/mock.webp"
alt="MailEmpire AI Dashboard" class="product-image">
<div class="product-info">
<div class="product-rating">
<div class="stars">★★★★★</div>
<span>4.8/5</span>
</div>
<h3>Professional Email Marketing Solution</h3>
<p>MailEmpire AI is a comprehensive email marketing platform
that combines artificial intelligence with proven email delivery technology. It's
designed to help digital marketers and business owners streamline their email
campaigns.</p>
<div class="price-tag">Special Launch Price: $16.97</div>
<a href="#pricing" class="cta-button">Learn More About
MailEmpire AI</a>
</div>
</div>
</section>
<!-- Features Section -->
<section id="features" class="section">
<h2 class="section-title">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24
24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-
width="2" d="M5 13l4 4L19 7" />
</svg>
Key Features
</h2>
<div class="feature-grid">
<div class="feature-card">
<div class="feature-icon">📧</div>
<h3 class="feature-title">Built-in SMTP Service</h3>
<p class="feature-description">Integrated email delivery system
with dedicated IPs for optimal inbox placement.</p>
</div>
<div class="feature-card">
<div class="feature-icon">🤖</div>
<h3 class="feature-title">AI-Powered Writing</h3>
<p class="feature-description">Advanced AI technology helps
create engaging email content and subject lines.</p>
</div>
<div class="feature-card">
<div class="feature-icon">📊</div>
<h3 class="feature-title">Analytics Dashboard</h3>
<p class="feature-description">Comprehensive tracking and
reporting for all your email campaigns.</p>
</div>
</div>
</section>

<!-- User Experience Section -->


<section id="experience" class="section">
<style>
.experience-card {
background: #FFFFFF;
border: 1px solid var(--border-color);
border-radius: var(--border-radius);
padding: 1.5rem;
margin-bottom: 1rem;
}

.author-info {
display: flex;
align-items: center;
gap: 1rem;
margin-bottom: 1rem;
}

.author-avatar {
width: 48px;
height: 48px;
border-radius: 50%;
object-fit: cover;
}

.timestamp {
color: var(--text-secondary);
font-size: 0.875rem;
}

@media (max-width: 480px) {


.experience-card {
padding: 1rem;
}

.author-avatar {
width: 40px;
height: 40px;
}
}
</style>

<h2 class="section-title">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24
24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-
width="2" d="M14 10h4.764a2 2 0 011.789 2.894l-3.5 7A2 2 0 0115.263 21h-4.017c-.163
0-.326-.02-.485-.06L7 20m7-10V5a2 2 0 00-2-2h-.095c-.5 0-.905.405-.905.905
0 .714-.211 1.412-.608 2.006L7 11v9m7-10h-2M7 20H5a2 2 0 01-2-2v-6a2 2 0 012-2h2.5"
/>
</svg>
My Experience
</h2>

<div class="experience-card">
<div class="author-info">
<img
src="https://st3.depositphotos.com/15648834/17930/v/450/depositphotos_179308460-
stock-illustration-unknown-person-silhouette-profile-picture.jpg"
alt="yassinosml90" class="author-avatar">
<div>
<h3>Yassine</h3>
<span class="timestamp">Updated: May 9, 2025</span>
</div>
</div>
<p>After thoroughly testing MailEmpire AI for two weeks, I've found
it to be a reliable and efficient email marketing solution. The AI-powered features
significantly reduce the time needed to create campaigns, while the built-in SMTP
service ensures consistent delivery rates.</p>
</div>
</section>

<!-- Pricing Section -->


<section id="pricing" class="section">
<style>
.pricing-container {
background: var(--background-light);
border-radius: var(--border-radius);
padding: 2rem;
text-align: center;
position: relative;
overflow: hidden;
}

.pricing-badge {
position: absolute;
top: 1rem;
right: -2rem;
background: var(--success-color);
color: white;
padding: 0.25rem 3rem;
transform: rotate(45deg);
font-size: 0.875rem;
font-weight: 500;
z-index: 1;
}

.original-price {
text-decoration: line-through;
color: var(--text-secondary);
font-size: 1.25rem;
margin-bottom: 0.5rem;
}

.current-price {
font-size: clamp(2rem, 5vw, 3rem);
color: var(--text-primary);
font-weight: 700;
margin-bottom: 1rem;
}

.price-note {
color: var(--text-secondary);
font-size: 0.875rem;
margin-bottom: 2rem;
}

.feature-list {
list-style: none;
margin: 2rem auto;
text-align: left;
max-width: 500px;
}

.feature-list li {
padding: 0.75rem 0;
color: var(--text-primary);
display: flex;
align-items: center;
gap: 0.75rem;
}

.feature-list svg {
width: 20px;
height: 20px;
color: var(--success-color);
flex-shrink: 0;
}

.timer-box {
background: #EFF6FF;
border-radius: 8px;
padding: 1rem;
margin: 2rem 0;
}

.timer-title {
color: var(--secondary-color);
font-weight: 600;
margin-bottom: 0.5rem;
}

.timer-display {
font-family: monospace;
font-size: 1.5rem;
color: var(--secondary-color);
display: flex;
justify-content: center;
gap: 1rem;
margin-top: 0.5rem;
}

.timer-display span {
background: var(--secondary-color);
color: white;
padding: 0.5rem;
border-radius: 6px;
min-width: 2.5rem;
display: inline-block;
}

@media (max-width: 480px) {


.pricing-container {
padding: 1rem;
}

.pricing-badge {
font-size: 0.75rem;
padding: 0.2rem 2rem;
}

.timer-display {
font-size: 1.25rem;
gap: 0.5rem;
}

.timer-display span {
min-width: 2rem;
padding: 0.4rem;
}
}
</style>

<h2 class="section-title">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24
24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-
width="2" d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11
0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-
18 0 9 9 0 0118 0z" />
</svg>
Special Launch Pricing
</h2>

<div class="pricing-container">
<div class="pricing-badge">Limited Time</div>
<div class="original-price">Regular Price: $97/month</div>
<div class="current-price">$16.97</div>
<div class="price-note">One-time payment • Lifetime access</div>

<ul class="feature-list">
<li>
<svg xmlns="http://www.w3.org/2000/svg" fill="none"
viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round"
stroke-width="2" d="M5 13l4 4L19 7" />
</svg>
Built-in SMTP with Dedicated IPs
</li>
<li>
<svg xmlns="http://www.w3.org/2000/svg" fill="none"
viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round"
stroke-width="2" d="M5 13l4 4L19 7" />
</svg>
AI-Powered Email Creation
</li>
<li>
<svg xmlns="http://www.w3.org/2000/svg" fill="none"
viewBox="0 0 24 24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round"
stroke-width="2" d="M5 13l4 4L19 7" />
</svg>
Unlimited Emails & Subscribers
</li>
</ul>

<div class="timer-box">
<div class="timer-title">Special Price Ends In:</div>
<div class="timer-display">
<span id="days">00</span>d
<span id="hours">00</span>h
<span id="minutes">00</span>m
<span id="seconds">00</span>s
</div>
</div>

<a href="#" class="cta-button">Get MailEmpire AI Now</a>


</div>
</section>

<!-- Conclusion Section -->


<section id="conclusion" class="section">
<style>
.verdict-box {
background: linear-gradient(to right, #EFF6FF, #F0FDF4);
border-radius: var(--border-radius);
padding: 2rem;
margin: 2rem 0;
}

.verdict-label {
display: inline-block;
background: var(--success-color);
color: white;
padding: 0.25rem 1rem;
border-radius: 50px;
font-size: 0.875rem;
margin-bottom: 1rem;
}

.last-updated {
display: flex;
align-items: center;
gap: 0.5rem;
color: var(--text-secondary);
font-size: 0.875rem;
margin-top: 2rem;
}

@media (max-width: 480px) {


.verdict-box {
padding: 1rem;
margin: 1rem 0;
}
}
</style>

<h2 class="section-title">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24
24" stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round" stroke-
width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
Final Verdict
</h2>

<div class="verdict-box">
<span class="verdict-label">Recommended</span>
<h3>Is MailEmpire AI Worth It?</h3>
<p>After thorough testing, MailEmpire AI proves to be a reliable
and efficient email marketing solution. The combination of AI-powered features and
built-in SMTP service makes it a valuable tool for digital marketers and business
owners looking to streamline their email campaigns.</p>

<div class="last-updated">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0
0 24 24" stroke="currentColor" width="16" height="16">
<path stroke-linecap="round" stroke-linejoin="round"
stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
Last updated: 2025-05-09 19:23:03 UTC by yassinosml90
</div>
</div>
</section>
</main>
<!-- Footer -->
<footer style="background: var(--background-light); padding: 2rem 0; margin-
top: 3rem; border-top: 1px solid var(--border-color);">
<div style="max-width: var(--max-width); margin: 0 auto; padding: 0 1.5rem;
text-align: center;">
<p style="color: var(--text-secondary); font-size: 0.875rem;">
This review contains affiliate links. As an independent reviewer, I
may receive a commission at no extra cost to you.
</p>
<p style="color: var(--text-secondary); font-size: 0.875rem; margin-
top: 1rem;">
© 2025 Professional Software Reviews. All rights reserved.
</p>
</div>
</footer>

<!-- Timer Script -->


<script>
function updateTimer() {
// Set the date we're counting down to (24 hours from now)
const startDate = new Date('2025-05-09 19:25:42').getTime();
const endDate = startDate + (24 * 60 * 60 * 1000); // 24 hours from start

function update() {
const now = new Date().getTime();
const distance = endDate - now;

// Time calculations for days, hours, minutes and seconds


const days = Math.floor(distance / (1000 * 60 * 60 * 24));
const hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 *
60 * 60));
const minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 *
60));
const seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Display the result with leading zeros
document.getElementById("days").textContent = String(days).padStart(2,
'0');
document.getElementById("hours").textContent =
String(hours).padStart(2, '0');
document.getElementById("minutes").textContent =
String(minutes).padStart(2, '0');
document.getElementById("seconds").textContent =
String(seconds).padStart(2, '0');

// If the countdown is over, display expired message


if (distance < 0) {
clearInterval(timerInterval);
document.querySelector('.timer-display').innerHTML = "OFFER
EXPIRED";

// Update CTA button


const ctaButton = document.querySelector('.cta-button');
if (ctaButton) {
ctaButton.style.backgroundColor = 'var(--text-secondary)';
ctaButton.textContent = 'Offer Expired';
ctaButton.style.pointerEvents = 'none';
}
}
}

// Update immediately and then every second


update();
const timerInterval = setInterval(update, 1000);
}

// Initialize timer when document is ready


document.addEventListener('DOMContentLoaded', updateTimer);
</script>

<!-- Navigation and Scroll Handling Script -->


<script>
document.addEventListener('DOMContentLoaded', function() {
// Get all navigation links
const navLinks = document.querySelectorAll('.nav-link');
const nav = document.querySelector('.nav');
let lastScrollTop = 0;

// Add click event listener to each link


navLinks.forEach(link => {
link.addEventListener('click', function(e) {
e.preventDefault();

// Get the target section id from the href


const targetId = this.getAttribute('href').substring(1);
const targetSection = document.getElementById(targetId);

if (targetSection) {
// Calculate scroll position accounting for fixed header
const headerOffset = 70;
const elementPosition =
targetSection.getBoundingClientRect().top;
const offsetPosition = elementPosition + window.pageYOffset -
headerOffset;

// Smooth scroll to the section


window.scrollTo({
top: offsetPosition,
behavior: 'smooth'
});

// Update active state of nav links


navLinks.forEach(link => link.classList.remove('active'));
this.classList.add('active');
}
});
});

// Highlight active section while scrolling


window.addEventListener('scroll', function() {
const fromTop = window.scrollY + 100;

// Handle nav visibility on scroll


const currentScrollTop = window.pageYOffset ||
document.documentElement.scrollTop;
if (currentScrollTop > lastScrollTop && currentScrollTop >
nav.offsetHeight) {
// Scrolling down
nav.style.transform = 'translateY(-100%)';
nav.style.transition = 'transform 0.3s ease-in-out';
} else {
// Scrolling up
nav.style.transform = 'translateY(0)';
}
lastScrollTop = currentScrollTop;

// Update active navigation link


document.querySelectorAll('section[id]').forEach(section => {
const sectionTop = section.offsetTop - 100;
const sectionHeight = section.offsetHeight;

if (fromTop >= sectionTop && fromTop < sectionTop + sectionHeight)


{
navLinks.forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href') === `#${section.id}`) {
link.classList.add('active');
}
});
}
});
});

// Handle smooth scrolling for all anchor links


document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function (e) {
if (this.getAttribute('href') !== '#') {
e.preventDefault();
const targetId = this.getAttribute('href').substring(1);
const targetElement = document.getElementById(targetId);

if (targetElement) {
const headerOffset = 70;
const elementPosition =
targetElement.getBoundingClientRect().top;
const offsetPosition = elementPosition + window.pageYOffset
- headerOffset;

window.scrollTo({
top: offsetPosition,
behavior: 'smooth'
});
}
}
});
});
});

// Prevent iOS safari bounce effect


document.body.addEventListener('touchmove', function(e) {
if (e.target.closest('.nav-container')) {
e.preventDefault();
}
}, { passive: false });
</script>
</body>
</html>

You might also like