分頁
/=======================分頁樣式==================================/
/*分頁樣式*/
.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小時內與您取得聯系。