CSS3等相关属性制作分页导航实现代码

下面我将为您详细讲解“CSS3等相关属性制作分页导航实现代码”的完整攻略。

1. 布局设计

首先,我们需要为分页导航设计一个基本的布局。一般情况下,我们可以采用<ul> <li>标签组合的方式来实现分页导航,如下所示:

<ul class="pagination">
  <li><a href="#">1</a></li>
  <li><a href="#">2</a></li>
  <li><a href="#">3</a></li>
  <li><a href="#">4</a></li>
  <li><a href="#">5</a></li>
</ul>

2. 样式设计

接下来,我们需要为这个布局添加一些样式。这里我们主要使用了CSS3的一些新属性,如border-radiusbox-shadowtext-shadow等,来美化分页导航,让它更加美观。下面是一个示例样式:

/* 分页导航样式 */
.pagination {
  list-style: none;
  text-align: center;
  margin-top: 20px;
  margin-bottom: 20px;
}

.pagination li {
  display: inline-block;
  font-size: 16px;
  line-height: 30px;
  margin-right: 5px;
  width: 30px;
  height: 30px;
  text-align: center;
  border: 1px solid #ccc;
  background-color: #fff;
  border-radius: 50%;
  box-shadow: 0 0 4px rgba(0,0,0,.3);
  cursor: pointer;
}

.pagination li a {
  display: block;
  width: 100%;
  height: 100%;
  color: #333;
  text-decoration: none;
  text-shadow: 1px 1px 1px #fff;
}

.pagination li.active {
  border-color: #007bff;
  background-color: #007bff;
  box-shadow: 0 0 4px rgba(0,123,255,.3);
}

.pagination li.active a {
  color: #fff;
}

3. JS交互制作

最后,我们需要使用JavaScript来为分页导航添加一些交互效果,比如点击切换页码时,高亮显示当前页码,同时更新相关数据等。下面是一个示例代码:

var pagination = document.querySelector('.pagination');
var list = pagination.querySelectorAll('li');

for (var i = 0; i < list.length; i++) {
  list[i].addEventListener('click', function() {
    for (var j = 0; j < list.length; j++) {
      list[j].classList.remove('active');
    }
    this.classList.add('active');
    // TODO: 更新相关数据
  });
}

示例说明

下面给出两个分页导航的示例说明:

示例1

假设我们要实现一个类似于淘宝分页导航的效果,即只显示前后几个页码和省略号,其他页码通过点击“下一页”或“上一页”来切换。具体代码如下:

HTML:

<ul class="pagination">
  <li><a href="#">«</a></li>
  <li><a href="#">1</a></li>
  <li><a href="#">2</a></li>
  <li><a href="#">3</a></li>
  <li><a href="#">4</a></li>
  <li><a href="#">5</a></li>
  <li><a href="#">...</a></li>
  <li><a href="#">10</a></li>
  <li><a href="#">»</a></li>
</ul>

JS:

var pagination = document.querySelector('.pagination');
var list = pagination.querySelectorAll('li');
var currentPage = 1;  // 当前页码
var totalPage = 10;  // 总页数
var showPage = 5;  // 显示页码数

initPage();

function initPage() {
  // 初始化页码
  updatePage(1);
  // 点击事件
  for (var i = 0; i < list.length; i++) {
    list[i].addEventListener('click', function() {
      var page = parseInt(this.querySelector('a').innerHTML);
      switch (page) {
        case 1:  // 第一页
          if (currentPage == 1) {
            return;
          }
          updatePage(1);
          break;
        case '...':  // 省略号
          break;
        case totalPage:  // 最后一页
          if (currentPage == totalPage) {
            return;
          }
          updatePage(totalPage);
          break;
        default:  // 其他页码
          if (page == currentPage) {
            return;
          }
          if (page > showPage && page < totalPage) {
            updatePage('...', page);
          } else {
            updatePage(page);
          }
          break;
      }
    });
  }
}

function updatePage(page, active) {
  for (var j = 0; j < list.length; j++) {
    var a = list[j].querySelector('a');
    if (a.innerHTML === '...') {
      continue;
    }
    if (typeof page == 'string' && page === '...') {
      var ellipsis = list[j];
      list[j].style.display = 'none';
    } else {
      if (active) {
        currentPage = page;
      }
      if (page === '...') {
        if (j > showPage && j < totalPage - 1) {
          if (list[j].style.display == 'none') {
            list[j].style.display = 'inline-block';
          }
        } else {
          if (list[j].style.display != 'none') {
            list[j].style.display = 'none';
          }
        }
      } else {
        list[j].style.display = 'inline-block';
        a.innerHTML = page;
        if (page == currentPage) {
          list[j].classList.add('active');
        } else {
          list[j].classList.remove('active');
        }
      }
    }
  }
}

CSS:

.pagination {
  list-style: none;
  text-align: center;
  margin-top: 20px;
  margin-bottom: 20px;
}

.pagination li {
  display: inline-block;
  font-size: 16px;
  line-height: 30px;
  margin-right: 5px;
  width: 30px;
  height: 30px;
  text-align: center;
  border: 1px solid #ccc;
  background-color: #fff;
  border-radius: 50%;
  box-shadow: 0 0 4px rgba(0,0,0,.3);
  cursor: pointer;
}

.pagination li a {
  display: block;
  width: 100%;
  height: 100%;
  color: #333;
  text-decoration: none;
  text-shadow: 1px 1px 1px #fff;
}

.pagination li.active {
  border-color: #007bff;
  background-color: #007bff;
  box-shadow: 0 0 4px rgba(0,123,255,.3);
}

.pagination li.active a {
  color: #fff;
}

示例2

假设我们要实现一个类似于微博分页导航的效果,即显示所有页码,同时高亮显示当前页码,具体代码如下:

HTML:

<ul class="pagination">
  <li><a href="#">1</a></li>
  <li><a href="#">2</a></li>
  <li><a href="#">3</a></li>
  <li><a href="#">4</a></li>
  <li><a href="#">5</a></li>
  <li><a href="#">6</a></li>
  <li><a href="#">7</a></li>
  <li><a href="#">8</a></li>
  <li><a href="#">9</a></li>
  <li><a href="#">10</a></li>
</ul>

JS:

var pagination = document.querySelector('.pagination');
var list = pagination.querySelectorAll('li');
var currentPage = 1;  // 当前页码
var totalPage = 10;  // 总页数

initPage();

function initPage() {
  list[currentPage - 1].classList.add('active');
  for (var i = 0; i < list.length; i++) {
    list[i].addEventListener('click', function() {
      var page = parseInt(this.querySelector('a').innerHTML);
      if (page == currentPage) {
        return;
      }
      list[currentPage - 1].classList.remove('active');
      this.classList.add('active');
      currentPage = page;
      // TODO: 更新相关数据
    });
  }
}

CSS:

.pagination {
  list-style: none;
  text-align: center;
  margin-top: 20px;
  margin-bottom: 20px;
}

.pagination li {
  display: inline-block;
  font-size: 16px;
  line-height: 30px;
  margin-right: 5px;
  width: 30px;
  height: 30px;
  text-align: center;
  border: 1px solid #ccc;
  background-color: #fff;
  border-radius: 50%;
  box-shadow: 0 0 4px rgba(0,0,0,.3);
  cursor: pointer;
}

.pagination li a {
  display: block;
  width: 100%;
  height: 100%;
  color: #333;
  text-decoration: none;
  text-shadow: 1px 1px 1px #fff;
}

.pagination li.active {
  border-color: #007bff;
  background-color: #007bff;
  box-shadow: 0 0 4px rgba(0,123,255,.3);
}

.pagination li.active a {
  color: #fff;
}

以上就是制作分页导航的完整攻略了,希望对您有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CSS3等相关属性制作分页导航实现代码 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • Vue+Element实现网页版个人简历系统(推荐)

    下面我会详细讲解“Vue+Element实现网页版个人简历系统(推荐)”的完整攻略。 1. 项目背景 在现代社会,网站成为人们获取信息和展示自我个性的重要平台之一,其中个人简历网站更是放射个人品牌的一个重要方面。因此,制作一个美观、高效的个人简历网站是至关重要的事情。 Vue是当前前端开发非常流行的JavaScript框架,Vue框架以其“轻量、快速、易用”…

    css 2023年6月10日
    00
  • div背景半透明,覆盖整个可视区域的遮罩层效果

    要实现div背景半透明,覆盖整个可视区域的遮罩层效果,可以按照以下步骤进行: 第一步:创建遮罩层div 创建一个遮罩层的div,它的样式可以设置如下: .selector { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.5);…

    css 2023年6月9日
    00
  • css中position:fixed实现div居中上下左右居中

    首先,我们需要了解一下position属性的取值。CSS中的position属性常用的取值有:static、relative、absolute和fixed。 其中,fixed可以使元素固定在页面中的某一个位置,不随着滚动而改变位置,这就非常适合实现div居中上下左右居中的效果。 下面我们来详细讲解一下如何用position:fixed实现div居中上下左右居…

    css 2023年6月10日
    00
  • JavaScript实现轮播图案例

    JavaScript实现轮播图是网页开发中比较常见的功能,它可以让一组图片或内容不断轮流展示,增强页面的交互性和视觉效果。下面是JavaScript实现轮播图的完整攻略: 步骤一:结构与样式 首先,在HTML页面中创建放置轮播图的容器,一般是一个div标签;然后在容器中添加若干个显示内容的div,每个div中放置一张图片、一段文本等具体内容。为了让轮播图正常…

    css 2023年6月10日
    00
  • 分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)

    关于“分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)”的完整攻略,可以分为以下几个部分进行说明: 标题 首先,需要给这篇攻略一个合适的标题,比如:“CSS3实现精美炫酷效果的30个案例分享及代码解析”,这样可以更好地表达文章的主题和内容。 简介 接下来需要写一份简介,简要介绍一下这篇攻略的内容和意义,比如:“本篇攻略将分享30个采用CSS3技术实现…

    css 2023年6月10日
    00
  • 绝对定位也可触发行内元素的layout说明

    绝对定位也可触发行内元素的layout,是指当一个元素使用绝对定位时,不仅会触发自身的layout,还会导致其包含的行内元素也触发layout。这个现象可能会导致意料之外的布局问题,需要特别注意。 下面是两个具体的示例,说明了绝对定位对行内元素的layout触发影响: 示例一 HTML 代码如下: <div class="wrapper&qu…

    css 2023年6月9日
    00
  • Bootstrap栅格系统的使用详解

    下面我来为您介绍一篇关于Bootstrap栅格系统使用的详细攻略。 1. 什么是Bootstrap栅格系统 Bootstrap 栅格系统是一个响应式、移动设备优先的流式格系统,它用于页面布局,具有以下特性: 支持多种设备(如手机、平板、桌面电脑); 网格布局(12个网格列,通过媒体查询实现不同的排版); 预定义好了多种布局类型(如:嵌套、等宽、偏移、反向布局…

    css 2023年6月10日
    00
  • jquery衣服颜色选取插件效果代码分享

    让我来详细讲解一下“jquery衣服颜色选取插件效果代码分享”的完整攻略。 什么是jquery衣服颜色选取插件 jquery衣服颜色选取插件是一款基于jquery开发的插件,可以用于网站前端开发中的衣服颜色选取功能。该插件能够实现快速、方便、美观的色板选取效果,并且能够支持多种颜色格式,如RGB、HEX等,非常实用。 jquery衣服颜色选取插件效果代码分享…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部