Ò»¡¢·ÖÒ³Æ÷»ù´¡ÔÀíÓëÉè¼Æ¿¼Á¿
·ÖÒ³Æ÷£¨Pagination£©µÄ½¹µã¹¦Ð§Êǽ«ÄÚÈÝÇиîΪ¿ÉÖÎÀíµÄÄ£¿é¡£´«Í³×ÝÏò·ÖÒ³¶à½ÓÄÉÊý×Ö°´Å¥µ¼º½£¬¶øÏÖ´ú·Ò³Éè¼Æ¸üÇãÏòÓÚʹÓÃÊÖÊÆÖ§³ÖµÄµ¥Ò³Çл»¡£ÔÚ¾ö¶¨½ÓÄÉ×óÓÒ·Ò³»òÉÏÏ·ҳǰ£¬Ð迼ÂÇÄ¿±êÉ豸µÄ½»»¥ÌØÕ÷£º×ÀÃæ¶ËÍÆ¼öˮƽ×óÓÒ·Ò³£¬Òƶ¯¶Ë¸üÊʺÏ×ÔȻת¶¯Ê½ÉÏÏ·ҳ¡£ÎÞÂÛÑ¡ÔñºÎÖÖ·½Ê½£¬¶¼ÐèÈ·±£·ÖÒ³Æ÷ÓëÒ³Ãæ½á¹¹±£³ÖÊÓ¾õÒ»ÖÂÐÔ£¬²¢Í¨¹ýCSS TransitionÓÅ»¯Çл»¶¯Ð§¡£
¶þ¡¢HTML½á¹¹´î½¨¹æ·¶
¹¹½¨·ÖҳϵͳµÄµÚÒ»²½Êǽ¨ÉèÓïÒ廯µÄHTML½á¹¹¡£¶ÔÓÚ×óÓҷҳϵͳ£¬½¨ÒéʹÓÃnavÔªËØ°ü¹ü¿ØÖư´Å¥£¬ÅäºÏarticleÈÝÆ÷³ÐÔØÄÚÈݿ顣ʾÀý½á¹¹ÖÐÓ¦°üÂÞprev/next°´Å¥ÓëÒ³ÂëָʾÆ÷£¬È磺
<nav class="pager">
??<button class="prev"></button>
??<span class="counter">1/5</span>
??<button class="next"></button>
</nav>
¶øÉÏÏ·ҳÔòÐèÉèÖÃ×ÝÏòת¶¯ÈÝÆ÷£¬Í¨¹ýCSS overflowÊôÐÔ¿ØÖÆ¿ÉÊÓÇøÓò¡£ÄúÊÇ·ñ×¢Òâµ½ÕâЩ½á¹¹ÔªËض¼¾ß±¸ARIA¿É»á¼ûÐÔ±êÇ©£¿ÕâÖ±½ÓÓ°ÏìÆÁÄ»ÔĶÁÆ÷Óû§µÄÌåÑé¡£
Èý¡¢CSSÑùʽҪº¦ÅäÖÃÒªÁì
ÊÓ¾õ·ºÆð²ãÐèÒªÖØµã´¦Öóͷ£½á¹¹Ó붯»Ð§¹û¡£¶ÔÓÚˮƽ·ÖÒ³£¬ÍƼöʹÓÃFlexbox½á¹¹ÅÅÁÐÄÚÈÝÒ³£¬ÉèÖÃÈÝÆ÷widthΪ100% Ò³Êý¡£½¹µãÑùʽӦ°üÂÞ£º
.pager-container {
??display: flex;
??transition: transform 0.3s ease;
}
.page-item {
??flex: 0 0 100%;
}
ÉÏÏ·ҳ½¨Òé½ÓÄÉÀι̸߶ȵÄÊÓ´°ÈÝÆ÷£¬Í¨¹ýtop¶¨Î»ÊµÏÖ×ÝÏòת¶¯¡£¼ÇµÃΪ´¥¿ØÉ豸Ìí¼Ó-webkit-overflow-scrolling: touchÊôÐÔÓÅ»¯×ª¶¯ÌåÑ飬ÕâÄÜÓÐЧÌáÉýÒÆ¶¯¶ËµÄ²Ù×÷Á÷³©¶È¡£
ËÄ¡¢JavaScript½»»¥Â߼ʵÏÖ
ʼþ´¦Öóͷ£½Å±¾ÐèÍê³ÉÈý·½Ã湦Ч£º·Ò³´¥·¢¡¢×´Ì¬¸üкͶ¯»¿ØÖÆ¡£Ê¹ÓÃʼþίÍлúÖÆ¼àÌý°´Å¥µã»÷£¬Í¨¹ýtransformÊôÐԸıäÈÝÆ÷λÖá£Òªº¦´úÂë¶ÎʾÀý£º
let currentPage = 0;
const pager = document.querySelector('.pager-container');
nextBtn.addEventListener('click', () => {
??currentPage++;
??pager.style.transform = `translateX(-${currentPage 100}%)`;
});
ÈçÄDZßÖóͷ£½çÏÞÇé¿ö£¿µ±¼ì²âµ½Ê×βҳʱ£¬Ó¦¶¯Ì¬½ûÓöÔӦƫÏòµÄ°´Å¥£¬²¢Í¨¹ýCSS opacityÊôÐÔÌáʾ²»ÐÐÓÃ״̬¡£
Îå¡¢CMSϵͳ·ÖÒ³ÅäÖü¼ÇÉ
¶ÔÓÚWordPressµÈCMSÓû§£¬¿Éͨ¹ý¶¨ÖÆÖ÷ÌâÄ£°åʵÏÖÌØÊâ·ÖÒ³Ñùʽ¡£ÔÚfunctions.phpÖÐÌí¼Ó·ÖÒ³º¯Êý£¬ÅäºÏpre_get_posts¹³×Ó¿ØÖƲéѯ²ÎÊý¡£ÍƼöʹÓÃWP-PageNavi²å¼þ½øÐпìËÙ¶¨ÖÆ£¬Æä¶Ì´úÂëÖ§³Ö×Ô½ç˵ǰºó°´Å¥µÄHTML½á¹¹ÓëÑùʽÀà¡£ÔÚÏìӦʽ½á¹¹ÖУ¬ÈçºÎƾ¾ÝÉ豸¿í¶ÈÇл»·Öҳģʽ£¿¿Éͨ¹ýmedia query¼ì²âÊӿڳߴ磬¶¯Ì¬Ð޸ķÖÒ³Æ÷displayÊôÐÔ¡£
Áù¡¢Òƶ¯¶ËÊÖÊÆÖ§³ÖÓÅ»¯
´¥ÆÁÉ豸ÐèÒªÌØ±ðÌí¼ÓÊÖÊÆÊ¼þ¼àÌý¡£Ê¹ÓÃHammer.js¿â´¦Öóͷ£»¬¶¯Ê¼þ£¬ÉèÖÃ×îС»¬¶¯¾àÀë·§Öµ£¨½¨Òé30px£©·ÀÖ¹Î󴥡£ºáÏò»¬¶¯´¥·¢×óÓÒ·Ò³£¬×ÝÏò»¬¶¯Ö´ÐÐÉÏÏ·ҳ¡£Ê¼þ»Øµ÷º¯ÊýÓ¦Óëµã»÷ʼþ¹²ÏíÏàͬµÄÒ³ÃæÇл»Âß¼£¬±£³Ö´úÂ븴ÓÃÐÔ¡£¼ÇµÃÔÚtouchstartʼþÖÐ×èֹĬÈÏÐÐΪ£¬ÖÆÖ¹Óëä¯ÀÀÆ÷ÔÉúת¶¯³åÍ»¡£
ÓÅÖʵķҳϵͳӦ¼æ¹Ë¹¦Ð§ÐÔÓëÃÀ¹Û¶È£¬±¾ÎÄÂÛÊöµÄÁù¸öÒªº¦ÊµÏÖ²½ÖèÁýÕÖÁË´Ó»ù´¡½á¹¹µ½¸ß¼¶½»»¥µÄÍêÕûÅäÖÃÁ÷³Ì¡£ÎÞÂÛÑ¡Ôñ×óÓÒ·Ò³ÕÕ¾ÉÉÏÏ·ҳģʽ£¬½¹µãÔÚÓÚ±£³Ö½»»¥Âß¼µÄ×ÔÈ»Á÷³©¡£½¨Ò鿪·¢Õ߯¾¾Ý¾ßÌåÄÚÈÝÀàÐÍÑ¡ÔñÊÊÅä·½°¸£¬²¢Í¨¹ýÓû§²âÊÔÑéÖ¤²îÒì·ÖÒ³·½Ê½µÄʵÓÃЧ¹û£¬×îÖÕ´òÔì³öÇкÏÄ¿±êÓû§²Ù×÷ϰ¹ßµÄÖÇÄÜ·Öҳϵͳ¡£ Ô˶¯£º¡¾ÈçºÎÉèÖÃ×óÓÒ·Ò³»òÉÏÏ·ҳ¡¿ ÔÚÍøÒ³Éè¼ÆÓëÄÚÈÝչʾÖУ¬ÓÐЧµÄ·ÖҳϵͳÄܹ»ÏÔÖøÌáÉýÓû§ä¯ÀÀÌåÑé¡£±¾ÎĽ«Í¨¹ý¾ßÌå´úÂëÑÝʾÓëʵÏÖÂß¼½âÎö£¬Ïêϸ½éÉÜ×óÓÒ·Ò³ºÍÉÏÏ·ҳÁ½ÖÖÖ÷Á÷·ÖÒ³ÐÎʽµÄ½¹µãÉèÖÃÒªÁì¡£ÎÞÂÛÄúÊǴͼƬ»ÀÈÕվɹ¹½¨³¤ÎÄÔĶÁϵͳ£¬ÕÆÎÕÕâЩ¼¼Çɶ¼½«ÎªÄúµÄÍøÕ¾Ìí¼Óרҵ¼¶½»»¥¹¦Ð§¡£
Ò»¡¢·ÖÒ³Æ÷»ù´¡ÔÀíÓëÉè¼Æ¿¼Á¿
·ÖÒ³Æ÷£¨Pagination£©µÄ½¹µã¹¦Ð§Êǽ«ÄÚÈÝÇиîΪ¿ÉÖÎÀíµÄÄ£¿é¡£´«Í³×ÝÏò·ÖÒ³¶à½ÓÄÉÊý×Ö°´Å¥µ¼º½£¬¶øÏÖ´ú·Ò³Éè¼Æ¸üÇãÏòÓÚʹÓÃÊÖÊÆÖ§³ÖµÄµ¥Ò³Çл»¡£ÔÚ¾ö¶¨½ÓÄÉ×óÓÒ·Ò³»òÉÏÏ·ҳǰ£¬Ð迼ÂÇÄ¿±êÉ豸µÄ½»»¥ÌØÕ÷£º×ÀÃæ¶ËÍÆ¼öˮƽ×óÓÒ·Ò³£¬Òƶ¯¶Ë¸üÊʺÏ×ÔȻת¶¯Ê½ÉÏÏ·ҳ¡£ÎÞÂÛÑ¡ÔñºÎÖÖ·½Ê½£¬¶¼ÐèÈ·±£·ÖÒ³Æ÷ÓëÒ³Ãæ½á¹¹±£³ÖÊÓ¾õÒ»ÖÂÐÔ£¬²¢Í¨¹ýCSS TransitionÓÅ»¯Çл»¶¯Ð§¡£
¶þ¡¢HTML½á¹¹´î½¨¹æ·¶
¹¹½¨·ÖҳϵͳµÄµÚÒ»²½Êǽ¨ÉèÓïÒ廯µÄHTML½á¹¹¡£¶ÔÓÚ×óÓҷҳϵͳ£¬½¨ÒéʹÓÃnavÔªËØ°ü¹ü¿ØÖư´Å¥£¬ÅäºÏarticleÈÝÆ÷³ÐÔØÄÚÈݿ顣ʾÀý½á¹¹ÖÐÓ¦°üÂÞprev/next°´Å¥ÓëÒ³ÂëָʾÆ÷£¬È磺
<nav class="pager">
??<button class="prev"></button>
??<span class="counter">1/5</span>
??<button class="next"></button>
</nav>
¶øÉÏÏ·ҳÔòÐèÉèÖÃ×ÝÏòת¶¯ÈÝÆ÷£¬Í¨¹ýCSS overflowÊôÐÔ¿ØÖÆ¿ÉÊÓÇøÓò¡£ÄúÊÇ·ñ×¢Òâµ½ÕâЩ½á¹¹ÔªËض¼¾ß±¸ARIA¿É»á¼ûÐÔ±êÇ©£¿ÕâÖ±½ÓÓ°ÏìÆÁÄ»ÔĶÁÆ÷Óû§µÄÌåÑé¡£
Èý¡¢CSSÑùʽҪº¦ÅäÖÃÒªÁì
ÊÓ¾õ·ºÆð²ãÐèÒªÖØµã´¦Öóͷ£½á¹¹Ó붯»Ð§¹û¡£¶ÔÓÚˮƽ·ÖÒ³£¬ÍƼöʹÓÃFlexbox½á¹¹ÅÅÁÐÄÚÈÝÒ³£¬ÉèÖÃÈÝÆ÷widthΪ100% Ò³Êý¡£½¹µãÑùʽӦ°üÂÞ£º
.pager-container {
??display: flex;
??transition: transform 0.3s ease;
}
.page-item {
??flex: 0 0 100%;
}
ÉÏÏ·ҳ½¨Òé½ÓÄÉÀι̸߶ȵÄÊÓ´°ÈÝÆ÷£¬Í¨¹ýtop¶¨Î»ÊµÏÖ×ÝÏòת¶¯¡£¼ÇµÃΪ´¥¿ØÉ豸Ìí¼Ó-webkit-overflow-scrolling: touchÊôÐÔÓÅ»¯×ª¶¯ÌåÑ飬ÕâÄÜÓÐЧÌáÉýÒÆ¶¯¶ËµÄ²Ù×÷Á÷³©¶È¡£
ËÄ¡¢JavaScript½»»¥Â߼ʵÏÖ
ʼþ´¦Öóͷ£½Å±¾ÐèÍê³ÉÈý·½Ã湦Ч£º·Ò³´¥·¢¡¢×´Ì¬¸üкͶ¯»¿ØÖÆ¡£Ê¹ÓÃʼþίÍлúÖÆ¼àÌý°´Å¥µã»÷£¬Í¨¹ýtransformÊôÐԸıäÈÝÆ÷λÖá£Òªº¦´úÂë¶ÎʾÀý£º
let currentPage = 0;
const pager = document.querySelector('.pager-container');
nextBtn.addEventListener('click', () => {
??currentPage++;
??pager.style.transform = `translateX(-${currentPage 100}%)`;
});
ÈçÄDZßÖóͷ£½çÏÞÇé¿ö£¿µ±¼ì²âµ½Ê×βҳʱ£¬Ó¦¶¯Ì¬½ûÓöÔӦƫÏòµÄ°´Å¥£¬²¢Í¨¹ýCSS opacityÊôÐÔÌáʾ²»ÐÐÓÃ״̬¡£
Îå¡¢CMSϵͳ·ÖÒ³ÅäÖü¼ÇÉ
¶ÔÓÚWordPressµÈCMSÓû§£¬¿Éͨ¹ý¶¨ÖÆÖ÷ÌâÄ£°åʵÏÖÌØÊâ·ÖÒ³Ñùʽ¡£ÔÚfunctions.phpÖÐÌí¼Ó·ÖÒ³º¯Êý£¬ÅäºÏpre_get_posts¹³×Ó¿ØÖƲéѯ²ÎÊý¡£ÍƼöʹÓÃWP-PageNavi²å¼þ½øÐпìËÙ¶¨ÖÆ£¬Æä¶Ì´úÂëÖ§³Ö×Ô½ç˵ǰºó°´Å¥µÄHTML½á¹¹ÓëÑùʽÀà¡£ÔÚÏìӦʽ½á¹¹ÖУ¬ÈçºÎƾ¾ÝÉ豸¿í¶ÈÇл»·Öҳģʽ£¿¿Éͨ¹ýmedia query¼ì²âÊӿڳߴ磬¶¯Ì¬Ð޸ķÖÒ³Æ÷displayÊôÐÔ¡£
Áù¡¢Òƶ¯¶ËÊÖÊÆÖ§³ÖÓÅ»¯
´¥ÆÁÉ豸ÐèÒªÌØ±ðÌí¼ÓÊÖÊÆÊ¼þ¼àÌý¡£Ê¹ÓÃHammer.js¿â´¦Öóͷ£»¬¶¯Ê¼þ£¬ÉèÖÃ×îС»¬¶¯¾àÀë·§Öµ£¨½¨Òé30px£©·ÀÖ¹Î󴥡£ºáÏò»¬¶¯´¥·¢×óÓÒ·Ò³£¬×ÝÏò»¬¶¯Ö´ÐÐÉÏÏ·ҳ¡£Ê¼þ»Øµ÷º¯ÊýÓ¦Óëµã»÷ʼþ¹²ÏíÏàͬµÄÒ³ÃæÇл»Âß¼£¬±£³Ö´úÂ븴ÓÃÐÔ¡£¼ÇµÃÔÚtouchstartʼþÖÐ×èֹĬÈÏÐÐΪ£¬ÖÆÖ¹Óëä¯ÀÀÆ÷ÔÉúת¶¯³åÍ»¡£
ÓÅÖʵķҳϵͳӦ¼æ¹Ë¹¦Ð§ÐÔÓëÃÀ¹Û¶È£¬±¾ÎÄÂÛÊöµÄÁù¸öÒªº¦ÊµÏÖ²½ÖèÁýÕÖÁË´Ó»ù´¡½á¹¹µ½¸ß¼¶½»»¥µÄÍêÕûÅäÖÃÁ÷³Ì¡£ÎÞÂÛÑ¡Ôñ×óÓÒ·Ò³ÕÕ¾ÉÉÏÏ·ҳģʽ£¬½¹µãÔÚÓÚ±£³Ö½»»¥Âß¼µÄ×ÔÈ»Á÷³©¡£½¨Ò鿪·¢Õ߯¾¾Ý¾ßÌåÄÚÈÝÀàÐÍÑ¡ÔñÊÊÅä·½°¸£¬²¢Í¨¹ýÓû§²âÊÔÑéÖ¤²îÒì·ÖÒ³·½Ê½µÄʵÓÃЧ¹û£¬×îÖÕ´òÔì³öÇкÏÄ¿±êÓû§²Ù×÷ϰ¹ßµÄÖÇÄÜ·Öҳϵͳ¡£