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

yizhihongxing

下面我将为您详细讲解“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解决浮动导致父元素高度坍塌的几种方法

    当子元素设置了浮动属性时,会导致父元素无法被浮动元素撑开,产生高度坍塌问题。解决这个问题的方法主要有以下几种: 1. 清除浮动 清除浮动可以让父元素获取包含子元素浮动元素的高度,使其高度被正确计算。可通过以下方式来实现: 1.1 清除浮动的常用方式——使用clearfix clearfix是一种清除浮动的技术,它通过在父元素上设置一个伪元素,并对该伪元素设置…

    css 2023年6月10日
    00
  • CSS精灵图(图片合并)设置方法详解

    CSS精灵图(CSS Sprites)是一种将多个小图片合并成一张大图片,并用CSS来控制显示的技术。使用CSS精灵图可以减少网页的HTTP请求次数,提高网站的加载性能和用户体验。 下面详细讲解CSS精灵图的完整攻略。 准备小图片 首先,准备多个小图片,并将它们合并成一张大图片。可以使用PS等工具来完成这个过程,或者使用在线工具如CSS Sprite Gen…

    Web开发基础 2023年3月20日
    00
  • jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)

    标题 首先需要明确本文的主题和结论,使用一级标题: jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载) 介绍 接着将内容扩充至简短的介绍,介绍文章的主要内容和意义: 在网页设计中,图片放大缩小是常见的操作,而鼠标滚动又是一种常见的交互方式。这篇文章将会介绍使用jQuery实现滚动鼠标放大缩小图片的方法,读者将能够在您的网站中使用此方法,提升用户…

    css 2023年6月10日
    00
  • Asp.net MVC SignalR来做实时Web聊天实例代码

    下面是详细的攻略: Asp.net MVC SignalR来做实时Web聊天实例代码 1. 什么是SignalR SignalR是一个基于ASP.NET的第三方开源库,为web应用程序添加实时Web功能。它使用了Web Sockets协议来保持浏览器和服务端之间的持久连接,同时还兼容其他较老的浏览器(如IE)使用轮询技术来保持连接。SignalR可以将服务器…

    css 2023年6月11日
    00
  • HTML5的新特性(1)

    HTML5是最新版本的HTML标准,具有很多新特性,其中一些特性至今仍为Web开发者所熟知和广泛使用,下面我们一起来详细讲解HTML5的新特性。 新的语义标签 HTML5引入了一些新的语义标签,用于提高页面的语义化,增加页面结构的可读性和可维护性。以下是几个常用的新标签: <header>:表示页面或区域的标题。 <nav>:用于描述…

    css 2023年6月10日
    00
  • CSS技术的出现实现结构与表现分离

    在 Web 开发的早期,HTML 和 CSS 是紧密耦合的,即 HTML 中的标记和样式信息混杂在一起。这种混杂的方式使得 Web 开发变得混乱和难以维护。为了解决这个问题,CSS 技术的出现实现了结构与表现分离。下面是一个完整攻略,包含了 CSS 技术的出现实现结构与表现分离的过程和两个示例说明。 CSS 技术的出现实现结构与表现分离 步骤一:将样式信息从…

    css 2023年5月18日
    00
  • 基于HTML5+CSS3实现简单的时钟效果

    让我详细讲解“基于HTML5+CSS3实现简单的时钟效果”的完整攻略。 实现思路 要实现一个简单的时钟效果,可以使用HTML5的<canvas>标签和CSS3的transform属性。 步骤如下: 在HTML文件中创建一个<canvas>标签,并设置它的宽、高和id,以便在JavaScript中操作它; 使用JavaScript获取当…

    css 2023年6月9日
    00
  • 使用CSS实现页面复选框的方法

    使用CSS实现页面复选框是常见的网页美化技巧,在这里我会分享两条示例说明。 1.使用label标签绑定checkbox实现 我们可以使用label标签来绑定checkbox,然后通过CSS样式美化label标签来达到美化样式的目的。 相关HTML代码 <input type="checkbox" id="checkbox1…

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