php生成分页html
php
// $totalItems:总项目数。
// $perPage:每页显示的项目数。
// $currentPage:当前页码,从 URL 参数中获取,默认值为 1。
// $baseUrl:分页链接的基础 URL。
function generatePagination($totalItems, $perPage,$currentPage,$baseUrl) {
// 计算总页数
$totalPages = ceil($totalItems / $perPage);
if ($totalPages <= 1) return '';
// 获取当前页码(假设通过&page=参数传递)
$currentPage = isset($_GET['page']) ? max(1, min((int)$_GET['page'], $totalPages)) : 1;
// 初始化分页HTML
$pagination = '<div class="pagination"><ul>';
// 上一页按钮
if ($currentPage > 1) {
$pagination .= '<li><a href="' . $baseUrl . '&page=' . ($currentPage - 1) . '">«</a></li>';
} else {
$pagination .= '<li class="disabled"><span>«</span></li>';
}
// 计算页码范围(确保最多显示7个页码)
$startPage = max(1, $currentPage - 3);
$endPage = min($totalPages, $currentPage + 3);
// 如果当前页靠近开头,调整结束页码
if ($currentPage <= 4) {
$endPage = min(7, $totalPages);
}
// 如果当前页靠近末尾,调整开始页码
if ($currentPage >= $totalPages - 3) {
$startPage = max(1, $totalPages - 6);
}
// 显示第一页和省略号(如果需要)
if ($startPage > 1) {
$pagination .= '<li><a href="' . $baseUrl . '&page=1">1</a></li>';
if ($startPage > 2) {
$pagination .= '<li class="disabled"><span>...</span></li>';
}
}
// 显示页码
for ($i = $startPage; $i <= $endPage; $i++) {
if ($i == $currentPage) {
$pagination .= '<li class="active"><span>' . $i . '</span></li>';
} else {
$pagination .= '<li><a href="' . $baseUrl . '&page=' . $i . '">' . $i . '</a></li>';
}
}
// 显示最后一页和省略号(如果需要)
if ($endPage < $totalPages) {
if ($endPage < $totalPages - 1) {
$pagination .= '<li class="disabled"><span>...</span></li>';
}
$pagination .= '<li><a href="' . $baseUrl . '&page=' . $totalPages . '">' . $totalPages . '</a></li>';
}
// 下一页按钮
if ($currentPage < $totalPages) {
$pagination .= '<li><a href="' . $baseUrl . '&page=' . ($currentPage + 1) . '">»</a></li>';
} else {
$pagination .= '<li class="disabled"><span>»</span></li>';
}
$pagination .= '</ul></div>';
return $pagination;
}css
/* 分页样式 */
.pagination ul {
display: inline-block;
padding: 0;
margin: 20px 0;
}
.pagination li {
display: inline;
margin: 0 2px;
}
.pagination li a, .pagination li span {
padding: 6px 12px;
border: 1px solid #dcdfe6;
text-decoration: none;
color: #606266;
border-radius: 3px;
background-color: #fff;
}
.pagination li a:hover, .pagination li span:hover{
color:#409eff;
background-color: #ecf5ff;
border:1px solid #a0cfff;
}
.pagination li.active span {
background-color: #409eff;
color: white;
border-color: #409eff;
}
.pagination li.disabled span {
color: #606266;
cursor: not-allowed;
opacity: 0.5;
background-color: #eee !important;
}
.pagination li.disabled span:hover{
border: 1px solid #dcdfe6;
color: #606266;
}