Pagination
by Venkatesh Dematti
HTML
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>Pagintaion With Active and Hover Effect| Webdevtrick.com</title>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet" />
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="pagination">
<div class="pagination-container">
<div class="pagination-hover-overlay"></div>
<a href="#0" class="pagination-prev">
<span class="icon-pagination icon-pagination-prev">
<i class="icon material-icons">
keyboard_arrow_left
</i>
</span>
</a>
<a href="#0" class="pagination-page-number">1</a>
<a href="#0" class="pagination-page-number">2</a>
<a href="#0" class="pagination-page-number">3</a>
<a href="#0" class="pagination-page-number">4</a>
<a href="#0" class="pagination-page-number">5</a>
<a href="#0" class="pagination-page-number">6</a>
<a href="#0" class="pagination-page-number">7</a>
<a href="#0" class="pagination-next">
<span class="icon-pagination icon-pagination-next">
<i class="icon material-icons">
keyboard_arrow_left
</i>
</span>
</a>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="function.js"></script>
</body>
</html>
CSS
* {
box-sizing: border-box;
font-family: sans-serif;
font-weight: 500;
letter-spacing: 0;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility !important;
-webkit-font-smoothing: antialiased !important;
}
html,
body {
overflow-x: hidden;
height: 100%;
}
html {
text-rendering: optimizeLegibility;
}
body {
padding: 0;
margin: 0;
display: flex;
align-items: center;
justify-content: center;
background-color: #f0f0f0;
}
a,
a:hover {
text-decoration: none;
}
.pagination {
display: flex;
justify-content: center;
}
.pagination-container {
padding: 10px 0;
border-radius: 8px;
border: 1px solid rgba(0, 0, 0, 0.1);
background-color: #fff;
display: inline-flex;
position: relative;
overflow: hidden;
}
.pagination-hover-overlay {
background-color: #e60023;
width: 50px;
height: 50px;
border-radius: 5px;
position: absolute;
top: 50%;
transform: translateY(-50%);
transition-duration: 0.5s;
left: 60px;
opacity: 0;
}
.pagination .icon-pagination {
color: #e60023;
font-size: 11px;
width: 50px;
height: 50px;
display: flex;
align-items: center;
justify-content: center;
position: relative;
z-index: 3;
background-color: #fff;
}
.pagination-prev {
margin-right: 15px;
margin-left: 10px;
}
.pagination-prev .icon-pagination-prev {
transform: rotate(0deg);
}
.pagination-next {
margin-left: 15px;
margin-right: 10px;
}
.pagination-next .icon-pagination-next {
transform: rotate(180deg);
}
.pagination-page-number {
border-radius: 5px;
color: #212121;
width: 50px;
height: 50px;
display: flex;
align-items: center;
justify-content: center;
transition-duration: 0.5s;
position: relative;
z-index: 2;
font-weight: 700;
font-size: 18px;
}
.pagination-page-number:hover {
color: #fff;
}
.pagination-page-number.active {
color: #fff;
}
JavaScript
let paginationLeftPos = "20px";
let paginationOpacity = 0;
let checkPaginationClick = 0;
$(".pagination-page-number").click(function () {
$(".pagination-page-number").removeClass("active");
$(this).addClass("active");
paginationLeftPos = $(this).prop("offsetLeft") + "px";
paginationOpacity = 1;
checkPaginationClick = 1;
$(".pagination-hover-overlay").css({
left: paginationLeftPos,
backgroundColor: "#e60023",
opacity: paginationOpacity });
$(this).css({
color: "#fff" });
});
$(".pagination-page-number").hover(
function () {
paginationOpacity = 1;
$(".pagination-hover-overlay").css({
backgroundColor: "#fa4949",
left: $(this).prop("offsetLeft") + "px",
opacity: paginationOpacity });
$(".pagination-page-number.active").css({
color: "#212121" });
$(this).css({
color: "#fff" });
},
function () {
if (checkPaginationClick) {
paginationOpacity = 1;
} else {
paginationOpacity = 0;
}
$(".pagination-hover-overlay").css({
backgroundColor: "#e60023",
opacity: paginationOpacity,
left: paginationLeftPos });
$(this).css({
color: "#212121" });
$(".pagination-page-number.active").css({
color: "#fff" });
});