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日

相关文章

  • CSS3对背景图片的裁剪及尺寸和位置的设定方法

    CSS 3 增加了对背景图片的裁剪、尺寸和位置的控制,使得在网页设计中可以更加方便地使用背景图片。下面,我们将详细讲解“CSS3对背景图片的裁剪及尺寸和位置的设定方法”的完整攻略。 控制背景尺寸 在 CSS3 中,可以使用 background-size 属性来控制背景图像的尺寸。该属性可以使用以下值: auto:默认值,表示不改变背景图片的原始尺寸。 &l…

    css 2023年6月9日
    00
  • ie 滤镜大全整理

    IE 滤镜指的是 Internet Explorer 浏览器特有的样式效果,通过应用这些滤镜,可以实现图片和文本的各种特效。以下是关于 ie 滤镜大全整理的完整攻略。 1. 网址获取 要了解 ie 滤镜大全,首先需要找到一个完整的网址。目前,比较全面的 ie 滤镜大全网址为: http://www.puritys.me/docs-blog/detail?id…

    css 2023年6月11日
    00
  • jquery实现弹出窗口效果的实例代码

    以下是讲解 “jquery实现弹出窗口效果的实例代码” 的完整攻略。 简介 在网页开发中,弹出窗口效果的运用非常广泛,可以用于展示提示信息、显示图片、功能聚合等场景。而jquery是一款网页开发框架,通过它可以方便地实现弹出窗口效果。 实现步骤 步骤一:引入jquery 在文档头部的 <head> 标签内引用jquery库,示例代码如下: &lt…

    css 2023年6月10日
    00
  • jQuery插件-jRating评分插件源码分析及使用方法

    jQuery插件-jRating评分插件源码分析及使用方法 jRating评分插件介绍 jRating评分插件是一款jQuery评分插件,它可以让用户对一个对象进行打分,非常实用。相比大部分jQuery评分插件,jRating评分插件更加轻便,易于使用和定制。它使用CSS和DOM处理来改变HTML元素的外观和表现。 jRating评分插件的特点 简单易用。 …

    css 2023年6月9日
    00
  • 使用webpack搭建vue项目实现脚手架功能

    下面是使用webpack搭建vue项目实现脚手架功能的完整攻略。 1. 环境准备 首先,我们需要安装Node.js和npm。然后可以通过npm安装webpack和vue-cli: # 全局安装webpack和vue-cli npm install -g webpack vue-cli 2. 创建项目 接下来,我们可以使用vue-cli来创建一个基于webpa…

    css 2023年6月9日
    00
  • CSS实现鼠标滑过鼠标点击代码写法

    我来详细讲解一下如何使用CSS实现鼠标滑过和鼠标点击效果的完整攻略。 基础知识 实现鼠标滑过和鼠标点击效果,需要掌握以下基础知识: CSS选择器 CSS伪类 CSS选择器 CSS选择器是一种用于找到HTML文档中各种元素的方法。常见的CSS选择器有: 元素选择器:选取指定元素类型的所有元素,例如 div 、 p 、 ul 、 li 等。 类选择器:选取具有指…

    css 2023年6月10日
    00
  • 在Layui中实现开关按钮的效果实例

    我们先来了解一下Layui是什么。 什么是Layui Layui(类库名字称呼为layui)是一个模块化前端UI框架,适合于大型复杂的Web应用程序。它是由一群热爱Web前端的朋友们所创建的,遵循“基于模块化组织,松耦合,高可维护”的设计原则。 既然了解了Layui,我们就可以通过Layui来实现开关按钮的效果了。 实现步骤 首先,我们需要先引入Layui的…

    css 2023年6月10日
    00
  • Dreamweaver CS3网页制作之布局实例

    下面我将详细讲解“Dreamweaver CS3网页制作之布局实例”的完整攻略。 一、前言 在Dreamweaver CS3中,常用的布局方式有表格布局、浮动布局和定位布局。本文通过示例介绍如何使用这三种方式进行网页布局。 二、表格布局 1. 实现方式 表格布局就是使用HTML中的表格标签table、tr和td来布局。具体步骤如下: 使用table标签创建表…

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