分页
/=======================分页样式==================================/
/*分页样式*/
.page{
display:inline-block;
width:100%;
text-align:center;
height:35px;
line-height:35px;
background-color:none;
}
.page .pagination{
margin:0px !important;
}
.page .pagination li a{
/*修改按钮样式*/
border:none !important;
background-color:transparent; !important;
color:#555;
cursor:pointer;
}
.page .pagination li a:hover,.page .pagination li a:focus,.page .pagination li a:active{
background-color:#ccc;
}
.page .pagination li.active a,.page .pagination li.active a:hover,.page .pagination li a:active,.page .pagination li a:focus{
color:#0099ff;
cursor:default;
background-color:none;
}
.pageinfo{
display:none !important;
}
/*隐藏分页信息*/
.clickmore{ cursor:pointer; }
.pagination>.action>a:hover,.pagination>.action>a:focus{ color:#0099ff !important; cursor:default; }
/*======================分页样式结束============================/ 上面写的分页样式,可自行修改,下面是分页组件代码:
/**
* bootstrap 对应的独立分析组件
* @demo
* pagination.init({
* selector : '.page', //选择器,作为渲染目标,默认为 '.page.pagination',非必须
* count : 120, //为总记录数,必须
* isTransform : false,//是否转换为符合后台需要的参数begin /end
* page : 1, //为当前页码,非必须
* pagesize : 10, //为每页条数,默认10,非必须
* increment : 10, //为页面存在的分页增量,比如只显示5个页码,非必须
* pageArray : [], //可以进行生成下拉框,比如 10,20,50 ,选择不同的页码进行分页,非必须
* previousTitle : '点击查看',//为上一页的title显示,未实现;
* callback : function(pageObject){//为分页点击回调函数,必须
* console.log(pageObject);//pageObject= {page : 1,pagesize:10};回调函数返回值,包括下一个页码和每页条数
* }
* });
* @since 2016年2月15日 15:18:36
* @author lixun
* @version 1.0
* @edited by lixun ,增加多实例;一个页面多个分页 ;
* 处理思路:
* 1\. 对应的每个selector有一个pagination,然后在调用的时候根据selector进行查找
* 2\. 处理的内容:1)分页加载;2)事件绑定 3)回调函数
* 3\. 处理原则:平滑处理,原有的可继续使用;
*/
var pagination = {
_defaultSelector : '.page .pagination', //默认选择器
_defaultPagesize : 20, //默认分页条数
_defaultIncrement : 10, //默认分的页码数
_defaultPageArray : [10,20,50,100], //默认的条码下拉框
_map : { //用户处理多实例增加的容器,不可覆盖
//selector : {私有属性}
//".page .column" : {}
},
//通用属性
lastSelector : '',//上一个选择器,用于开发者不传递参数的时候,去查找上一个选择器用的。
previousTitle : '上一页',
nextTitle : '下一页',
previousContent : '上一页',
nextContent : '下一页',
//获得分页实例
_getPagination : function(selector){
if(null != selector && selector != '' && $(selector).length > 0){
return pagination._map[selector];
}else{
console.error('selector 传参错误或$('+selector+')不存在!');
}
return null;
},
//获得返回的字符串
pageArrayStr : function(selector,ps){
var pa = pagination._map[selector].pageArray;
if(null != pa && pa.length > 0){
var concatStr = '<select onchange="pagination.changePagesize(\''+(selector)+'\',event)" style="height:20px;line-height:20px;padding:0px;margin-top:-2px;">';
var i=0,max=pa.length;
for(;i<max;i++){
var v = pa[i];
concatStr += '<option value="'+v+'" '+(v == ps ? 'selected="true"' : '')+'>'+v+'</option>';
}
concatStr += '</select>';
return concatStr;
}
return "";
},
//绑定事件
bindEvent : function(selector){
if(selector && selector != ''){
var _tempPaginationInstance = pagination._map[selector] || {};
var _bindE = _tempPaginationInstance.bindE == true ? true : false;
if(_bindE == false){
_tempPaginationInstance.bindE = true;
pagination._map[selector] = _tempPaginationInstance;
//跳转页面
$(selector).delegate('li.unselect','click',pagination.clickpage);
//绑定上一页事件
$(selector).delegate('li.pageup','click',pagination.pageup);
//绑定下一页事件
$(selector).delegate('li.pagedown','click',pagination.pagedown);
//绑定前面页面事件
$(selector).delegate('a.previous','click',pagination.previouspage);
//绑定后面页面事件
$(selector).delegate('a.next','click',pagination.nextpage);
}
}
},
//分页初始化
init : function(params){
//处理传参数据
params = params || {};
params.count = params.count || 0;
params.pagesize = params.pagesize || pagination._defaultPagesize;
var paramSelector = pagination._defaultSelector;
if(params.selector){
paramSelector = params.selector;
}
//获得选择器后,进行实例处理
var paginationInstance = pagination._getPagination(paramSelector);
//传参获取最新配置
var tempPaginationInstance = {
selector : paramSelector,
page : params.page ? params.page : (paginationInstance && paginationInstance.action == true ? (paginationInstance.page ? paginationInstance.page : 1) : 1),
count : params.count || 0,
action : false,
bindE : false,//是否绑定事件
pagesize : params.pagesize,
callback : params.callback || $.noop,
pagenumber : (parseInt((params.count || 0)/(params.pagesize||pagination._defaultPagesize),10)+((params.count||0)%(params.pagesize||pagination._defaultPagesize)==0 ? 0 : 1)),//根据总数和一页条数获得页码数量
increment : params.increment || pagination._defaultIncrement,
pageArray : params.pageArray || pagination._defaultPageArray
};
if(paginationInstance && undefined != paginationInstance){
//存在实例,进行更新。
tempPaginationInstance.bindE = true;//如果存在的话,肯定绑定了
pagination._map[paramSelector] = $.extend(paginationInstance,tempPaginationInstance);
}else{
pagination._map[paramSelector] = tempPaginationInstance;//重新赋值
pagination.bindEvent(paramSelector);//绑定事件
}
pagination.loadPage(paramSelector);
pagination.lastSelector = paramSelector;
},
//点击页面数直接跳转
clickpage : function(){
var $a = $(this).find('a');
var selector = $a.attr('selector');
var gonumber = parseInt($a.html(),10);
$(selector+' li.active').addClass('unselect').removeClass('active');
$(this).addClass('active').removeClass('unselect');
pagination.gopage(selector,gonumber);
},
//向上翻页
pageup : function(){
var $a = $(this).find('a');
var selector = $a.attr('selector');
var _tempInstance = pagination._map[selector];
if(_tempInstance){
//得到当前页面,然后翻页,如果在边界,那么就要进行触发一次翻页事件
var $actel = $(selector+' li.active a');
var nownumber = parseInt($actel.html(),10);
if(nownumber == 1){
return false;
}else{
pagination.gopage(selector,nownumber-1);
}
}
},
//向下翻页
pagedown : function(){
var $a = $(this).find('a');
var selector = $a.attr('selector');
var _tempInstance = pagination._map[selector];
if(_tempInstance){
var pagenumber = _tempInstance.pagenumber;
//获得该实例的分页码数
var $actel = $(selector+' li.active a');
var nownumber = parseInt($actel.html(),10);
if(nownumber == pagenumber){
return false;
}else{
pagination.gopage(selector,nownumber+1);
}
}
},
//前面页面
previouspage : function(){
var selector = $(this).attr('selector');
var _tempInstance =pagination._map[selector];
if(_tempInstance){
var increment = _tempInstance.increment,
page = _tempInstance.page;
//判断当前是第几个,比如16,那么就以10的倍数向前翻页
var $nowobj = $(selector+' a.previous').parent();
var nextnumber = parseInt($nowobj.next().children().html(),10);
var end = (nextnumber-1)%increment > 0 ? parseInt((nextnumber/increment),10)*increment : parseInt((nextnumber/increment-1),10)*increment;
pagination.gopage(selector, end+1);
}
},
//后面页面
nextpage : function(){
//判断当前点击的哪些,比如:现在是5,点击生成6...
var selector = $(this).attr('selector');
var _tempInstance = pagination._map[selector];
if(_tempInstance){
var increment = _tempInstance.increment;
var $nowobj = $(selector+' a.next').parent();
var prenumber = parseInt($nowobj.prev().children().html(),10);
if(parseInt(prenumber/5,10) ==1){//说明在第一页,要从5加载5个,直到结束
pagination.addPage(selector,$nowobj,5);
}else{
//第二次 增加页面数量了,应该是从10开始了...
pagination.addPage(selector,$nowobj,increment);
}
}
},
addPage : function(selector,domobj,size){
var _tempInstance = pagination._map[selector];
if(_tempInstance){
var pagenumber = _tempInstance.pagenumber,
increment = _tempInstance.increment;
var start = parseInt(domobj.prev().children().html(),10);
pagination.gopage(selector, start+1);
}
},
loadPage : function(selector){
//根据selector获得count,pagesize,page
var _tempInstance = pagination._map[selector];
if(!_tempInstance){
console.log('error : _tempInstance is null now ,check pagination params please!');
return null;
}
var count = _tempInstance.count,
pagesize = _tempInstance.pagesize,
page = _tempInstance.page,
increment = _tempInstance.increment,
pageArrayStr = pagination.pageArrayStr(selector,pagesize),
pagenumber = _tempInstance.pagenumber;
var $page = $(selector);
//清空内容
$page.html('');
var pageno = pagenumber;
page = page > pageno ? 1 : page; //如果当前页码树大于总页码数则置为1,否则为当前页码数;
//如果页数超过10,则增...,以5个数字递增,
//显示到page页面的下一个5的倍数上。
var endpage = (parseInt(page/increment,10))*increment > pageno ? pageno : (parseInt(page/increment,10)+(page%increment==0 ? 0 : 1))*increment;
if(pageno<=increment){
endpage = pageno;
}
var pageHtml = '';
if(pageArrayStr== ''){
}else if(pagination._map[selector].pageArray.length==1){
pageHtml = '<li class="pageinfo">共'+count+'条 </li>';
}else{
pageHtml = '<li class="pageinfo">共'+count+'条 , 每页'+pageArrayStr+'条</li>';
}
$page.append(pageHtml);
$page.append('<li class="prev pageup '+(page ==1 ? 'disabled' : '')+'"><a title="'+pagination.previousTitle+'" href="javascript:;" selector="'+(selector)+'">'+pagination.previousContent+'</a></li>');
//判断第几页
var start = 0;
if(page > increment && page <= pageno){
$page.append('<li><a class="previous" href="javascript:;" selector="'+(selector)+'">...</a></li>');
//给一个自定义增长数量,比如5个,每次增长五个,当前页面6页面,增长5个为10个,start page为 6
start = parseInt((page%increment==0 ? (page-1) : page)/increment,10)*increment;
endpage = (start+increment ) > pageno ? pageno : (start+increment);//如果开始页面加上增加页面大于最大页码数,则等于最大页码数
if(endpage-page <increment){
start = endpage-increment;
}
}
for(var i=start;i<(endpage == 0?1:endpage);i++){
var listr = '<li class="unselect"><a href="javascript:;" selector="'+(selector)+'">'+(i+1)+'</a></li>';
//在第page页面增加样式
if((page-1) == i){
listr = '<li class="active"><a selector="'+(selector)+'">'+(i+1)+'</a></li>';
}
$page.append(listr);
}
if(pageno > 5 && endpage != pageno){
$page.append('<li><a class="next" href="javascript:;" selector="'+(selector)+'">...</a></li>');
}
$page.append('<li class="next pagedown '+(page == pageno ? 'disabled' : '')+'"><a title="'+pagination.nextTitle+'" href="javascript:;" selector="'+(selector)+'">'+pagination.nextContent+'</a></li>');
},
//跳转页面
gopage : function(selector,page){
var _tempInstance = pagination._map[selector];
if(_tempInstance){
_tempInstance.page = page;
_tempInstance.action = true;
_callback = _tempInstance.callback;
_pagesize = _tempInstance.pagesize;
pagination._map[selector] = _tempInstance;
_callback(pagination.transform({
page : page,
rows : _pagesize
}));
}
},
/*返回现在的页面*/
getNowPage : function(selector){
selector = selector || (pagination.lastSelector || pagination._defaultSelector);//获取上一个选择器
var _tempInstance = pagination._map[selector];
if(_tempInstance){
_tempInstance.action = true;
var _page = _tempInstance.page,
_pagesize = _tempInstance.pagesize;
pagination._map[selector] = _tempInstance;
return pagination.transform({
page : _page,
rows : _pagesize
});
}
return null;
},
transform : function(paginationParams){
if(pagination.isTransform && pagination.isTransform == true){
var p = paginationParams.page || 1;
var rows = paginationParams.pagesize || 10;
return {
begin : (p-1)*rows+1,
end : p*rows
};
}
return paginationParams;
},
//返回分页参数,以供列表页面加载数据使用
getParams :function(selector){
selector = selector || (pagination.lastSelector || pagination._defaultSelector);//获取上一个选择器
var _tempInstance = pagination._map[selector];
if(_tempInstance){
var _pagesize = _tempInstance.pagesize;
return pagination.transform({
//第几页,一页有多少条记录
page:1,
rows : _pagesize
});
}
return null;
},
changePagesize : function(selector,ev){
var t = ev.currentTarget || ev.target || ev.srcElement,
$t = $(t),
v=$t.find('option:selected').val();
// selector = $t.attr('selector');
var _tempInstance = pagination._map[selector];
if(_tempInstance){
_tempInstance.pagesize = v;
var _callback = _tempInstance.callback;
pagination._map[selector] = _tempInstance;
//重新调用callback方法
_callback(pagination.transform({
page : 1,
rows : v
}));
}
}
};
仅供借鉴....
题: 很多时间,当我们前后端分离的时候。有这种场景:
前端:兄弟你把数据分页返回给我就行。我自己处理页面。后端:兄弟。好的。哈哈。
这种(这种肯定是最好的,前后都笑哈哈的。各管各的);
但是:突然有一天,我跳槽了。进入了一家外包公司。老板:赶紧几下给我做出来,我要进度,我需要功能。赶快,抓紧点。假如后端突然是新手,前端js可能刚开始有点不熟悉。那且不是很尴尬。(开玩笑的,但是这种情况一般都很少,一般后端都会前端的js和html);
很多外包公司都是为了追求速度:
当时我就遇到这种情况。因为当时用的是thinkPHP,前端页面就手机。就是用户看列表的时候,数据可以往下拉无限加载所有数据,也就是所谓的瀑布流。当时我就想用个字符串拼接就行了。老板是搞技术的,他说不行,这里必须要用插件(好强势的感觉)。用撒了?infinite-scroll插件。各位可以去百度下。
首先开始如何使用了:
首先网页头引入jQuery 和infinite-scroll插件。不解释,jq肯定要放在前面。
因为用的thinkphp,所以前端我肯定就是volist或者foreach循环数据了。(什么volist和foreach都不懂,该打屁股了。)。
服务端,肯定用了分页类。到时候复制分页代码,然后输出到前端。但是有个。一定要把数据的总页数发送给前端。$this->maxPage = 5;前端 $maxpage 就是需要的总页码数。
注:在实际中 #navigation 和 #navigation a 是隐藏的哟。maxpage 就是刚才穿的那个总页码。不然的话会导致数据加载异常。
也可以添加其他属性。比如,手机滚动下离最下面距离多少像素值就可以加载下个页面内容了
extraScrollPx: 50, 等等,还有其他很多属性,比如加载的时候添加动画,大家可以自行百度下 这个插件的使用。
最后总结: 其实我觉得这个分页不好,只是大家学习下,我觉得异步请求分页比较好的。特别是现在用了很多的前端的js其他类库,处理数据起来更6了。
最好还是前后分离开。分页发送数据,前端处理最完美了。
(每日一更,偶尔周末休息,多谢大家支持。)
这个信息爆炸的时代,我们每天都在与各种文档打交道,无论是学习笔记、工作报告,还是创意设计,分页符这个小家伙总是时不时地出来“捣蛋”。它像是一个隐形的分界线,默默地在我们的文档中划分着领地,有时候却又不合时宜地出现,打乱了我们精心布置的版面。别担心,今天,就让我这个生活家居专家来教你如何优雅地“请走”这个不受欢迎的小客人,让我们的文档恢复整洁与和谐。
取消分页符,从编辑软件开始
想象一下,你正沉浸在撰写一篇长篇大论的乐趣中,突然,一个不请自来的分页符打破了你的思绪,将你的精彩内容硬生生地分割到了下一页。这时,你是不是恨不得立刻找到它,给它一个大大的“删除”键呢?别急,让我来一步步教你如何在常用的编辑软件中取消分页符。
Microsoft Word:分页符的隐形斗争
在Word里,分页符可能是最爱捉迷藏的小伙伴了。它们常常隐藏在一行行文字之间,用一条不起眼的虚线或者“分页符”三个字标示着自己的存在。想要赶走它?简单两步走!
手动删除大法:首先,睁大你的火眼金睛,仔细在文档中搜寻那条狡猾的虚线。一旦锁定目标,将光标轻轻一点,放在它前面或后面,然后毫不犹豫地按下“Delete”键或是“Backspace”键,看它还能往哪儿跑!
“查找和替换”魔法:如果你嫌手动寻找太累,不妨试试Word里的“查找和替换”绝技。只需轻轻一按“Ctrl+H”,一个神秘的对话框就会出现在你眼前。在这里,输入分页符的秘密代码“^m”,就像念出了咒语一样,所有分页符都会现出原形。接着,点击“全部替换”,它们就会消失得无影无踪。记得哦,如果你想温柔点,只送走几个分页符,那就用“查找下一个”和“替换”按钮,和它们一一告别吧。
Google Docs:云端分页符的温柔驱逐
在Google Docs这片云端天地里,分页符同样可能不请自来。不过,好在Google Docs的界面简洁明了,让分页符无处遁形。
直观删除法:在Google Docs中,分页符通常以一个明显的虚线或“分页符”标签出现。你只需要点击它,然后按“Delete”或“Backspace”键,就能轻松送它离开。
利用“查找和替换”:当然,Google Docs也配备了强大的“查找和替换”功能。输入分页符的特定标识,一键替换,就能让文档恢复清爽。
纸质与排版软件:传统与现代的交锋
说完了电子文档,咱们也别忘了那些传统的纸质文档和那些专业的排版软件。在这些领域,取消分页符同样是一场技术与艺术的较量。
纸质文档:手工艺术的魅力
面对纸质文档,取消分页符就变成了一场手工艺术表演。你需要像一位细腻的工匠,通过调整文字大小、行距、段落间距,甚至重新布局,来巧妙地“哄骗”分页符离开。有时候,仅仅是将一段文字轻轻上移,就能让它与上一页的内容和谐共处,避免了不必要的分页。
Adobe InDesign:专业排版师的秘密武器
而对于使用Adobe InDesign这样的专业排版软件的设计师来说,取消分页符更是一场对页面布局和元素控制的精准操作。在这里,你可以通过调整文本框的大小、位置,或是利用软件的自动排版功能,优雅地解决分页问题。记住,每一次细微的调整,都可能带来版面的焕然一新。
网页设计:代码的艺术
网页设计师们,你们是否也曾为分页符在网页打印或导出PDF时的“任性”感到头疼?别担心,CSS里的page-break-before和page-break-after属性就是你的救星。只需简单设置,就能避免在特定元素周围插入分页,让网页的打印版更加美观。
注意事项:细心呵护你的文档
在与分页符斗争的过程中,有几件小事可别忘了:
备份先行:动手之前,别忘了给文档做个备份。毕竟,谁也不想在赶走分页符的同时,不小心弄丢了辛苦撰写的内容。
源头治理:如果分页符是自动插入的,比如因为页面设置或节设置,那么即使你手动删除了,它们也可能卷土重来。这时,深入检查并调整这些设置,才是治本之策。
精准替换:使用“查找和替换”时,务必小心谨慎,确保只替换了那些真正需要删除的分页符,免得误伤了无辜。
就像古人说的:“工欲善其事,必先利其器。”掌握了取消分页符的技巧,你就能更加自如地驾驭各种文档,无论是电子的还是纸质的,都能让它们呈现出最佳的面貌。现在,你是不是已经迫不及待想要试试身手了呢?
关注小壁虎,看更多生活家居数码信息。在这里,你会发现更多让生活变得更加美好的小妙招,让我们一起在生活的细节中寻找乐趣,创造属于自己的精彩吧!
*请认真填写需求信息,我们会在24小时内与您取得联系。