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日

相关文章

  • CSS设置字体方法详解

    CSS字体是指用于在网页中渲染文本的字体样式。在CSS中,可以使用以下属性来设置字体: font-family:设置字体的名称。可以设置多个备用字体名称,用逗号分隔。如果第一种字体不可用,就使用第二种,以此类推。例如: body { font-family: "Helvetica Neue", Arial, sans-serif; } f…

    Web开发基础 2023年3月20日
    00
  • JS+CSS实现另类带提示效果的竖向导航菜单

    下面我将详细讲解“JS+CSS实现另类带提示效果的竖向导航菜单”的完整攻略。 简介 竖向导航菜单一般以垂直方式呈现导航菜单,常用于侧边栏菜单或右侧固定导航栏。本攻略将结合JS和CSS,实现一个带提示效果的竖向导航菜单,以提高用户体验。 实现原理 本攻略实现的竖向导航菜单的提示效果是,菜单高亮时,显示一个竖条,正好在菜单项边缘。具体实现需要借助一些JS和CSS…

    css 2023年6月10日
    00
  • 简单实现轮播图效果的实例

    下面是“简单实现轮播图效果的实例”的完整攻略: 1. 需求分析 轮播图是网站中常用的页面展示效果,可以通过自动轮播或手动切换来展示不同的内容。我们需要实现一个简单的轮播图效果,以便在网站中使用。 2. 技术选型 我们可以使用jQuery插件来实现轮播图效果。其中,我推荐使用Slick.js插件,因为它易于使用,具有丰富的配置选项,支持响应式布局,功能强大。 …

    css 2023年6月10日
    00
  • LESS 让css也支持变量,运算符,include,嵌套规则等等

    LESS是一种CSS预处理器,它可以让我们使用变量、运算符、函数、嵌套规则等等,增强我们在编写CSS时的灵活性和可维护性。下面我将详细介绍如何使用LESS。 安装LESS 首先需要安装LESS,有两种方式: 使用npm安装:在终端输入npm install -g less,全局安装LESS。 下载LESS官网最新版本:https://less.bootcss…

    css 2023年6月9日
    00
  • CSS图片倒影效果兼容firefox、IE等各主流浏览器

    要实现CSS图片倒影效果,在多个主流浏览器上兼容并不是一件容易的事情。下面是实现该效果的完整攻略。 1.使用webkit内核的浏览器 webkit内核的浏览器包括Google Chrome、Safari等等。 在这些浏览器中,可以使用CSS3的属性实现图片倒影效果: img { -webkit-box-reflect: below 0px -webkit-g…

    css 2023年6月11日
    00
  • css实现右侧固定宽度 左侧宽度自适应

    要实现右侧固定宽度、左侧宽度自适应的效果,可以使用CSS中的float属性和盒模型的原理来实现。下面是具体的实现步骤: HTML结构的编写 首先,我们需要明确左右两侧元素的父容器。在父容器中,先写一个右侧的固定宽度的元素,再写一个左侧的自适应宽度的元素,可以使用div标签。此外,还可以考虑加上一个clearfix类,避免浮动元素的影响。 示例代码: <…

    css 2023年6月10日
    00
  • css3 旋转按钮 使用CSS3创建一个旋转可变色按钮

    CSS3旋转按钮是一种常用的Web界面元素,它可以让用户感受到Web应用程序与其他类型的应用程序一样丰富和复杂。下面是创建CSS3旋转按钮的完整攻略,包含了关键代码和示例说明。 使用CSS3创建一个旋转可变色按钮 用HTML创建一个按钮 首先,我们需要在HTML文件中创建一个按钮元素,可以使用button或a元素,例如: <button class=&…

    css 2023年6月9日
    00
  • jQuery弹出层插件简化版代码第2/2页

    来详细讲解一下“jQuery弹出层插件简化版代码第2/2页”的完整攻略。 一、简介 本插件是基于jquery的弹出层插件,可以快速为网站添加各种弹出框效果。本文主要讲解该插件的使用方法。 二、使用方法 1. 引入必要的文件及初始化插件 需要在html文件中引入jquery、jquery-popup.js和jquery-popup.css等文件。 <li…

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