css3实现可滑动跳转的分页插件示例


Posted in HTML / CSS onMay 08, 2014

今天我要向大家分享一款很特别的CSS3分页插件,这款分页插件不仅可以点击分页按钮来实现分页,而且可以滑动滑杆来实现任意页面的跳转,看看都非常酷,很适合一些个性化的个人网站使用,当然,这款分页插件也适合ajax翻页,效果都挺不错的。先来看看效果图:

css3实现可滑动跳转的分页插件示例

怎么样,还挺酷的吧。

当然你也可以在这里查看插件的DEMO演示。

接下来我们来分享一下源码的实现思路,这里用到了jQuery UI框架,这么酷的滑杆是靠它实现的,不然,写的累死。。

首先是HTML代码:

复制代码
代码如下:

<div class="pageSlider long"></div>
<form class="pageForm" action="#">
<label class="pageLabel" for="pageInput">
Page number you'd like to go to. (Max of 30)
</label>
<a
class="pagePrev pageSkip"
href="#?page=6"
title="Previous Page (6)">Previous Page</a>
<input id="pageInput" class="pageInput"
type="text" maxlength="3" placeholder="#">
<a
class="pageNext pageSkip"
href="#?page=8"
title="Next Page (8)">Next Page</a>
<button class="pageButton"
title="Go to chosen page of results">Go</button>
</form>

这里我们看到,先是定义了滑杆的区域,然后是两个分页按钮,可以向前翻和向后翻,最后是一个任意页跳转的页码输入框和一个按钮。

别看这个滑杆很漂亮,会很难实现,其实利用jQuery UI这个东西非常简单。

接下来看看CSS代码:

前后翻页按钮:

复制代码
代码如下:

.pageSkip {
display: inline-block;
background: transparent url('css/monotone_arrow_left_small.png') no-repeat -10px -10px;
text-indent: -999em;
background-size: 40px;
opacity: 0.7;
vertical-align: middle;
width: 20px;
height: 20px;
}
.pageNext {
background-image: url('css/monotone_arrow_right.png');
}

很遗憾,利用了两张箭头图片作为背景,不过,效果也还可以。

然后是输入框:

复制代码
代码如下:

.pageNumber {
position: relative;
top: -38px;
left: 50%;
font-size: 12px;
color: #333;
width: 60px;
display: block;
text-align: center;
margin-left: -17px;
background: white;
padding: 5px 10px;
border-radius: 3px;
box-shadow: 0 0 5px rgba(151, 38, 20, 0.15);
}
.pageNumber:after {
content: " ";
display: block;
position: absolute;
width: 0;
height: 0;
top: 24px;
border: 6px solid transparent;
border-top-color: white;
}

然后是滑杆的背景,利用了CSS3线性渐变属性:

复制代码
代码如下:

.ui-slider-horizontal {
width: 60%;
height: 6px;
top: 0px;
margin: 0px 10px 2px;
border-radius: 6px;
position: relative;
display: inline-block;
background: #F46652;
background-image: repeating-linear-gradient(28deg, transparent, transparent 10px, #dd5846 10px, #dd5846 20px);
box-shadow: inset 0 2px 5px rgba(0, 0, 0, 0.4);
}
.ui-slider-horizontal:before {
content: " ";
position: absolute;
width: auto;
height: 16px;
top: -5px;
left: -4px;
right: -4px;
border-radius: 10px;
z-index: -1;
background: linear-gradient(rgba(0, 0, 0, 0.1) 0%, rgba(255, 255, 255, 0.8) 90%);
}
.ui-slider.long .ui-slider-handle {
height: 12px;
width: 30px;
background: #f1f1f1;
display: block;
position: absolute;
border-radius: 50px;
margin-top: -3px;
margin-left: -15px;
text-decoration: none;
background: #f5f5f5;
background: linear-gradient(#f5f5f5 0%, #cccccc 100%);
box-shadow: 0 0 10px 0px rgba(0, 0, 0, 0.35), 0 0 2px 1px rgba(0, 0, 0, 0.15), 0 3px 3px rgba(0, 0, 0, 0.2), 0 7px 5px rgba(0, 0, 0, 0.1), 0 11px 10px rgba(0, 0, 0, 0.1);
}
.ui-slider.long .ui-slider-handle::before,
.ui-slider.long .ui-slider-handle::after {
content: " ";
width: 2px;
height: 40%;
position: absolute;
background: transparent;
border-radius: 0px;
box-shadow: -1px 0px 0px rgba(255, 255, 255, 0.8), 1px 0px 0px rgba(255, 255, 255, 0.8), 2px 0 0 rgba(0, 0, 0, 0.3), 1px 0 0 rgba(0, 0, 0, 0.3) inset;
}
.ui-slider.long .ui-slider-handle::before {
left: 10px;
top: 30%;
}
.ui-slider.long .ui-slider-handle::after {
right: 12px;
top: 30%;
}
@media (max-width: 550px) {
.pagination {
width: auto;
}
.pageForm {
display: block;
margin-top: 20px;
}
.pageInput {
margin: 0;
}
.pageSlider {
width: 260px;
margin: 0 15px;
}
}

最后是js,这是用来实现翻页逻辑的,来看看:

复制代码
代码如下:

$(document).ready( function() {
var pagesMax = 30;
var pagesMin = 1;
var startPage = 7;
var url = "<a href="http://yoe.com/results?page={{1">http://yoe.com/results?page={{1</a>}}";
$('.pagination .pageSlider').slider({
value: startPage, max: pagesMax, min: pagesMin,
animate: true,
create: function( event, ui ) {
$('.pagination .pageSlider .ui-slider-handle').attr({
"aria-valuenow": startPage,
"aria-valuetext": "Page " + startPage,
"role": "slider",
"aria-valuemin": pagesMin,
"aria-valuemax": pagesMax,
"aria-describedby": "pageSliderDescription"
});
$('.pagination .pageInput').val( startPage );
}
}).on( 'slide', function(event,ui) {
// let user skip 10 pages with keyboard ;)
if( event.metaKey || event.ctrlKey ) {
if( ui.value > $(this).slider('value') ) {
if( ui.value+9 < pagesMax ) { ui.value+=9; }
else { ui.value=pagesMax }
$(this).slider('value',ui.value);
} else {
if( ui.value-9 > pagesMin ) { ui.value-=9; }
else { ui.value=pagesMin }
$(this).slider('value',ui.value);
}
event.preventDefault();
}
$('.pagination .pageNumber span').text( ui.value );
$('.pagination .pageInput').val( ui.value );
}).on('slidechange', function(event, ui) {
$('.pagination .pageNumber')
.attr('role','alert')
.find('span')
.text( ui.value );
$('.pagination .pageInput').val( ui.value );
$('.pagination .pageSlider .ui-slider-handle').attr({
"aria-valuenow": ui.value,
"aria-valuetext": "Page " + ui.value
});
});
$('.pagination.pageSlider.ui-slider-handle').on('keyup',function(e){
if(e.which==13){
varcurPage=$('.pagination.pageSlider').slider('value');
alert('wewouldnowsendyouto:'+url.replace(/{{.}}/,curPage));
}
});
$('.pagination.pageInput').on('change',function(e){
$('.pagination.pageSlider').slider('value',$(this).val());
});
vartmr;
$('.pageSkip').on('click',function(e){
e.preventDefault();
var$this=$(this);
if($this.hasClass('pageNext')){
varcurPage=$('.pagination.pageSlider').slider('value')+1;
}elseif($this.hasClass('pagePrev')){
varcurPage=$('.pagination.pageSlider').slider('value')-1;
}
$('.pagination.pageSlider').slider('value',curPage);
clearTimeout(tmr);
tmr=setTimeout(function(){
alert('wewouldnowsendyouto:'+url.replace(/{{.}}/,curPage));
},1000);
});
functionsliderPips(min,max){
varpips=max-min;
var$pagination=$('.pagination.pageSlider');
for(i=0;i<=pips;i++){
vars=$('<spanclass="pagePip"/>').css({
left:''+(100/pips)*i+'%'
});
$pagination.append(s);
}
varminPip=$('<spanclass="pageMinPip">'+min+'</span>');
varmaxPip=$('<spanclass="pageMaxPip">'+max+'</span>');
$pagination.prepend(minPip,maxPip);
};
sliderPips(pagesMin,pagesMax);
functionsliderLabel(){
$('.pagination.ui-slider-handle').append(
'<spanclass="pageNumber">Page<span>'+
$('.pagination.pageSlider').slider('value')+
'</span></span>');
};
sliderLabel();
$('.pagination.pageButton').on('click',function(e){
e.preventDefault();
varcurPage=$('.pagination.pageSlider').slider('value');
alert('wewouldnowsendyouto:'+
url.replace(/{{.}}/,curPage));
});
});
HTML / CSS 相关文章推荐
纯HTML+CSS3制作导航菜单(附源码)
Apr 24 HTML / CSS
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
May 07 HTML / CSS
利用CSS3的border-radius绘制太极及爱心图案示例
May 17 HTML / CSS
CSS3 animation ? steps 函数详解
Aug 30 HTML / CSS
html5使用Canvas绘图的使用方法
Nov 21 HTML / CSS
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
Jan 30 HTML / CSS
HTML5中5个简单实用的API
Apr 28 HTML / CSS
用HTML5实现鼠标滚轮事件放大缩小图片的功能
Jun 25 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
Apr 19 HTML / CSS
HTML5轻松实现全屏视频背景的示例
Apr 23 HTML / CSS
基于Html5实现的语音搜索功能
May 13 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
May 13 HTML / CSS
CSS3 Media Queries详细介绍和使用实例
May 08 #HTML / CSS
使用css3实现超炫的loading加载动画效果
May 07 #HTML / CSS
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
May 07 #HTML / CSS
纯CSS3实现圆角效果(含IE兼容解决方法)
May 07 #HTML / CSS
纯CSS实现颜色渐变效果(包含环形渐变、线性渐变、彩虹效果等)
May 07 #HTML / CSS
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
May 07 #HTML / CSS
纯CSS绘制漂亮的圆形图案效果
May 07 #HTML / CSS
You might like
PHP 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
PHP数字和字符串ID互转函数(类似优酷ID)
2014/06/30 PHP
详解WordPress中添加友情链接的方法
2016/05/21 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
JS实现匀速运动的代码实例
2013/11/29 Javascript
js统计录入文本框中字符的个数并加以限制不超过多少
2014/05/23 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
jQuery 动态云标签插件
2014/11/11 Javascript
javascript实现微信分享
2014/12/23 Javascript
javascript多物体运动实现方法分析
2016/01/08 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
微信小程序之swiper轮播图中的图片自适应高度的方法
2018/04/23 Javascript
vue-router动态设置页面title的实例讲解
2018/08/30 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
jqGrid表格底部汇总、合计行footerrow处理
2019/08/21 Javascript
vue fetch中的.then()的正确使用方法
2020/04/17 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
[45:32]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python+MongoDB自增键值的简单实现
2016/11/04 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
安全员岗位职责
2013/11/11 职场文书
高校自主招生自荐信
2013/12/09 职场文书
最经典的商业地产项目广告词
2014/03/13 职场文书
岗位职责说明书
2014/05/07 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android