laypagepage设置

laypagepage设置,第1张

1、引入laypage所需的js和css文件

<link href="js/laypage/1.3/skin/laypage.css" rel="stylesheet"/>

<script type="text/javascript" src="js/laypage/1.3/laypage.js"></script>

<script type="text/javascript" src="js/layer/2.1/layer.js"></script>

2、定义分页需要显示的地方,id为doctorDiv是分页要显示的地方

1 <div class="doctor_list">

2 <ul id="doctorUL">

3 <div style="clear: both"></div>

4 </ul>

5 <div style="clear: both"></div>

6 <div class="pages" id="doctorDiv">

7

8 </div>

9 </div>

3、使用ajax异步请求查询数据,并分页显示

1 <script type="text/javascript">

2

3 //定义全局变量记录页码信息

4 var globalDate = {}

5 //1页显示两条数据

6 globalDate.pageSize=2

7

8 $(function () {

9 //查询数据

10 search()

11

12 })

13

14

15 //查询数据

16 function search(date) {

17 var str = ""

18 $.ajax({

19 type: "post",

20 url: "<%=basePath%>mytlist.html",

21 dataType: "json",

22 async: true,

23 data: date,

24 success: function (data) {

25 if (data.result) {

26 var mydata = data.obj.list

27 for (var i = 0i <mydata.lengthi++) {

28 var info = mydata[i]

29 str += "<li>"

30 str += "<a onclick=" + "doctorDetail('" + info.id + "')" + ">"

31 //str+="<a href='mytdoctor_xq.html?id='"+info.id+">"

32 str += "<img src=" + info.photo + ">"

33 str += "<div class='yi_text'>"

34 str += "<h2>" + info.name

35 str += "<span>" + info.title + "</span>"

36 str += "</h2>"

37 str += "<h3>科室:" + info.department_one + "</h3>"

38 str += "<h3>"

39 str += "<em>评分:</em>"

40 str += "<span>"

41 if (info.total_score != null &&info.total_score != "" &&info.total_evaluate_num != null &&info.total_evaluate_num != "") {

42 var pingfen = info.total_score / info.total_evaluate_num //评分

43 var j

44 for (j=0j <pingfenj++) {

45 str += "<img src='images/pc/icon_031.png'>"

46 }

47 if(j<5){

48 for(var k=0k<5-jk++){

49 str += "<img src='images/pc/icon_032.png'>"

50 }

51 }

52 }

53 str += "</span>"

54 str += "</h3>"

55 str += "<h3>所在医院:" + info.hospital + "</h3>"

56 str += "<p>疾病擅长:" + info.skilful + "</p>"

57 str += "</div>"

58 str += "</a>"

59 str += "</li>"

60 }

61 $("#doctorUL").empty()

62 $("#doctorUL").append(str)

63 var page = data.obj.pages //总页数

64 var curr = data.obj.pageNum //当前页

65 laypage({

66 cont: 'doctorDiv', //分页需要显示的地方

67 pages: page,//总页数

68 curr: curr, //当前页

69 groups: 3,//连续显示分页数

70 skip: true, //是否开启跳页

71 first: '首页',

72 last: '尾页',

73 skin: 'molv', //加载内置皮肤,也可以直接赋值16进制颜色值,如:#c00

74 prev: '<', //若不显示,设置false即可

75 next: '>', //若不显示,设置false即可

76 jump: function (e, first) { //触发分页后的回调

77 if (!first) { //一定要加此判断,否则初始时会无限刷新

78 globalDate.pageNum = e.curr

79 search(globalDate)

80 }

81 }

82 })

83

84

85 } else {

86 //错误

87 console.log("错误")

88 }

89 }

90 })

91 }

92 </script>

4、最终效果

5、感觉laypage显示出来的页码有点扁,高度不够,所以稍微修改了一点css

1 <%--修改laypage的样式--%>

2 <style>

3 .laypage_main a, .laypage_main input, .laypage_main span {

4 height: 40px

5 line-height: 40px

6 }

7

8 .laypage_main button {

9 height: 40px

10 line-height: 40px

11 margin-left: 5px

12 padding: 0 10px

13 color: #666

14 }

15 </style>

实现一个可交互的动画大概有这么几种思路:

在响应 GestureRecognizer 的方法中实时更新 view 的状态, 在 GestureRecognizer 结束的时候创建动画完成后续的部分.

在 GestureRecognizer 开始的时候创建显式动画, 随着 Gesture 变化, 改变动画的 progress, 在 GestureRecognizer 结束之后完成动画.

在 GestureRecognizer 开始的时候创建隐式动画, 随着 Gesture 变化, 改变动画的 progress, 在 GestureRecognizer 结束之后完成动画.

注意 2 和 3 只有显式和隐式的区别.

对于简单的 view, 单一的动画 (比如 demo 中的这种, 线性移动一个简单的 view), 三种方法差别不大. 而对于复杂的 view (view 中嵌套多个 subView), 多个动画 (view 和 subview 都有各自的动画), 如果在不考虑可交互的前提下, 隐式的动画已经可以满足需求, 那么方法 3 可能会比方法 1 和 2 简洁得多, 本文将对方法 3 进行讲解.

要实现方法 3, 首先要了解 CALayer 的几个属性: speed, timeOffset, beginTime. 对于这几个属性, Controlling Animation Timing 这篇教程图文并茂地给出了直观的解释, 必读, 这里只做简单介绍:

speed: 控制动画的速度, 比如设置为 1 (默认), 动画正常运行, 设置为 0 动画暂停, 设置为 -1 动画反向运行.

timeOffset: 控制动画在整个动画时间轴上的位置, 比如一个 3 秒的动画, timeOffset 为 1.5, layer 就会处于整个动画过程中间的那个状态.

beginTime: 动画的开始时间.

有了这些基础, 我们就可以着手实现了, 首先我们需要建立一个 CALayer 的 Category, 添加一些动画辅助代码:

- (void)gs_pauseAnimation {

self.speed = 0

self.timeOffset = 0

}

- (void)gs_recoverToDefaultState {

self.speed = 1

self.timeOffset = 0

self.beginTime = 0

}

- (void)gs_setTimeProgress:(CFTimeInterval)timeProgress {

self.timeOffset = timeProgress

}

- (void)gs_continueAnimationWithTimeProgress:(CFTimeInterval)timeProgress {

[self gs_recoverToDefaultState]

self.beginTime = [self convertTime:CACurrentMediaTime() fromLayer:nil] - timeProgress

}

- (void)gs_continueReverseAnimationWithTimeProgress:(CFTimeInterval)timeProgress animationDuration:(CFTimeInterval)duration {

[self gs_recoverToDefaultState]

self.beginTime = [self convertTime:CACurrentMediaTime() fromLayer:nil] - (duration - timeProgress)

self.timeOffset = duration

self.speed = -1

}

gs_pauseAnimation: 通过将 speed 设置为 0, 来暂停动画.

gs_recoverToDefaultState: 将 layer 的各个属性恢复到默认状态

gs_setTimeProgress: 在 gs_pauseAnimation 的基础上, 设置动画的时间进度.

gs_continueAnimationWithTimeProgress: 从 timeProgress 时间进度开始, 继续播放之前暂停了的动画

这里首先调用了 gs_recoverToDefaultState, 是为了让 convertTime:fromLayer: 得出正确的时间.

[self convertTime:CACurrentMediaTime() fromLayer:nil] 将当前系统时间转换到 layer 的时间上, 减去 timeProgress, 假设这是一个 3 秒的动画, timeProgress 为 1 秒, 则这条代码就表示 layer 的动画在一秒之前就已经开始, 所以动画将从运行到第 1 秒的状态开始继续播放.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11240814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存