Hover Effects with addClass() & removeClass()

by jay prakash

HTML

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>jQuery Hover Effects</title>
	<link rel="stylesheet" href="styles.css">
</head>
<body>
	<nav>
		<a href="#" class="effect" data-class="fadeintop">Fade In Top</a>
		<a href="#" class="effect" data-class="skewfromleft">Skew From Left</a>
		<a href="#" class="effect" data-class="scalefrombottom">Scale From Bottom</a>
		<a href="#" class="effect" data-class="rotatefromright">Rotate From Right</a>
	</nav>
	<div id="dynamicDiv">Hover Effects Here</div>
	<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
	<script src="script.js"></script>
</body>
</html>

CSS

/* styles.css */

body {
	background-color: #f0f0f0;
	font-family: Arial, sans-serif;
}

nav {
	text-align: center;
	margin: 20px 0;
}

nav a {
	margin: 0 15px;
	padding: 10px 20px;
	background-color: #007BFF;
	color: white;
	text-decoration: none;
	border-radius: 5px;
	transition: background-color 0.3s;
}

nav a:hover {
	background-color: #0056b3;
}

#dynamicDiv {
	width: 300px;
	height: 200px;
	margin: 0 auto;
	background-color: white;
	border: 2px solid #007BFF;
	display: flex;
	justify-content: center;
	align-items: center;
	font-size: 20px;
	transition: all 0.5s;
}

.fadeintop {
	animation: fadeInTop 1.5s forwards;
}

@keyframes fadeInTop {
	from {
		opacity: 0;
		transform: translateY(-50px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.skewfromleft {
	animation: skewFromLeft 1.5s forwards;
}

@keyframes skewFromLeft {
	from {
		transform: skewX(-30deg);
		opacity: 0;
	}
	to {
		transform: skewX(0);
		opacity: 1;
	}
}

.scalefrombottom {
	animation: scaleFromBottom 1.5s forwards;
}

@keyframes scaleFromBottom {
	from {
		transform: scaleY(0);
		opacity: 0;
	}
	to {
		transform: scaleY(1);
		opacity: 1;
	}
}

.rotatefromright {
	animation: rotateFromRight 1.5s forwards;
}

@keyframes rotateFromRight {
	from {
		transform: rotate(90deg);
		opacity: 0;
	}
	to {
		transform: rotate(0);
		opacity: 1;
	}
}

JavaScript

// script.js

$(document).ready(function() {
	$('.effect').hover(
		function() {
			var classToAdd = $(this).data('class');
			$('#dynamicDiv').removeClass().addClass(classToAdd);
		},
		function() {
			$('#dynamicDiv').removeClass();
		}
	);
});