(一)KitJs瀑布流组件特点

1. 瀑布流形式呈现图片加载,鼠标滚动到底加载新的数据

2. 瀑布条数随窗口大小改变而改变,支持任意缩放窗口

(二)使用方法

core需要引用kit.js,IE下通过条件注释引入ieFix.js

其他需要引入

array.js 数组扩展(可以不引用)

anim.js 动画扩展

即可,

至于demo中的semitransparentloading.js是用来做半透明loading的,io.js是用来跨域取图片数据的,这个load方法可以自定义

最简单的加载方式,比如

var currentPage = 1;
var waterfall = new $kit.ui.Waterfall({
container : $kit.el('.kitjs-waterfall-container')[0],
load : function(success, end) {
//$('#loadingPins').show();
$kit.io.josnp({
url : 'http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=5d93c2e473e39e9307e86d4a01381266&tags=rose&page=' + currentPage + '&per_page=20&format=json&_ksTS=1339665079110_92&jsoncallback=dealWithJSONPData',
onSuccess : function() {
currentPage = window.loadedData.photos.page + 1;
//alert(window.loadedData.photos.photo.length);
var items = [];
$kit.each(window.loadedData.photos.photo, function(item) {
item.height = Math.round(Math.random() * (300 - 180) + 180);
// fake height
items.push($kit.newHTML($kit.tpl(['<div class="kitjs-waterfall" data-id="${id}">', //
'<a href="http://farm/${farm}.static.flickr.com/${server}/${id}_${secret}_m.jpg" class="image" target="_blank">', //
'<img height="${height}" alt="${title}" src="http://farm/${farm}.static.flickr.com/${server}/${id}_${secret}_m.jpg"/>', //
'</a>', //
'<p class="description">${title}</p>', //
'</div>'//
].join(''), item)).childNodes[0]);
});
success(items);
window.timeoutLoading = setTimeout(function() {
if(window.loading) {
window.loading.destory();
window.loading = null;
}
}, 600)
}
})
},
minColCount : 2,
colWidth : 228
});
waterfall.ev({
ev : 'loadData',
fn : function() {
if(window.timeoutLoading) {
clearTimeout(window.timeoutLoading);
window.timeoutLoading = null;
}
if(window.loading == null) {
window.loading = new $kit.ui.SemitransparentLoading();
}
}
});
waterfall.ev({
ev : 'resizeBegin',
fn : function() {
if(window.timeoutLoading) {
clearTimeout(window.timeoutLoading);
window.timeoutLoading = null;
}
if(window.loading == null) {
window.loading = new $kit.ui.SemitransparentLoading();
}
}
});
waterfall.ev({
ev : 'resizeEnd',
fn : function() {
window.timeoutLoading = setTimeout(function() {
if(window.loading) {
window.loading.destory();
window.loading = null;
}
}, 600)
}
});

指定一个容器,一个加载数据的方法,最小瀑布列数,瀑布宽度(这个是固定的)

在加载方法里面,初始化单个图片容器的Dom节点,需要显示指明节点高度,将height,domNode放入一个数组中,调用load方法的回调参数succes

(三)自定义事件

目前支持三个自定义事件,load触发之前会有一个load事件,还有缩放窗口的时候,有resizeBegin和resizeEnd事件,可以用来做loading动画

经过几个月的努力,现在kit已经有了完整的底层以及基础UI控件体系,包括

1. 完整的dom api

2. 强化的anim动画类,支持所有的Css动画,包括Css3以及IE Hacker

3. 平衡了IE与W3C的range对象了,完美兼容了W3C的所有的api,实现了跨浏览器的bookmark同步

4. 完整的OO体系,属性getter,setter,对象继承,单例,模块

5. 强大的模板系统,支持循环,if else条件判断

6. 齐全的浏览器侦测,手持设备,PC等等

7. 基础的UI体系,可以支持复杂的页面组件

包括不限于,蒙版,浮动层,对话框,拖拽,高级自定义增强事件,增强动画,日历,表单,验证,瀑布流...

8. 基础的log,安全沙箱,打包工具,自动化脚本等等

欢迎各位对kit有兴趣的朋友加入我们的开源项目,一起建设

(一)KitJs瀑布流组件特点相关推荐

  1. vuejs和webpack项目(VueComponent)初尝试——瀑布流组件

    碎碎念:      好久不见,最近自己有些懈怠没更过多少博,主要原因之一是对自己学习方式的一些思考,翻看之前的博客多是记录学习笔记这反映出了自己对于前端还停留在学习-复习知识点的阶段压根没多少实践经验 ...

  2. js实现审批流_小程序瀑布流组件:支持翻页与图片懒加载

    电商小程序中,用到瀑布流的地方非常多,每次都写一个瀑布流,重复一次逻辑,作为程序员,肯定是非常不愿意的. 瀑布流的形式都是大同小异,不同的是瀑布流中每个模块的内容,随业务而变化. 所以,我们把瀑布流框 ...

  3. swiper 定义放多少张图片_小程序瀑布流组件:支持翻页与图片懒加载

    (给前端大全加星标,提升前端技能) 作者:老人羽海 https://segmentfault.com/a/1190000022680541 电商小程序中,用到瀑布流的地方非常多,每次都写一个瀑布流,重 ...

  4. 教你如何实现一个完美的移动端瀑布流组件(附源码)

    背景 瀑布流是大家日常开发过程中经常遇到的一个场景,我们公司内部的组件库中也提供了一些解决方案.但这些方案适用场景都很单一,且每个实现方案都或多或少存在一些问题,基于此,我们设计与开发了一个兼容多场景 ...

  5. 【Web技术】1206- 如何设计一款支持懒加载的瀑布流组件?

    前言 瀑布流布局算是一种比较流行的布局,参差不齐的多列结构,不仅能节省空间,还能在视觉展示上错落有致不拘一格.在一次业务需求中,找了几个开源的瀑布流组件,在使用的过程中总会有点小问题,便开发了此组件. ...

  6. react-native-waterfall-flow 高性能瀑布流组件

    react-native-waterfall-flow React Native 高性能瀑布流组件 特性 性能方面表现突出,渲染速度快,滚动体验良好 无需手动设置item高度,一切计算工作由组件内部完 ...

  7. 小程序swiper怎么让内容撑开高度_小程序瀑布流组件:支持翻页与图片懒加载

    电商小程序中,用到瀑布流的地方非常多,每次都写一个瀑布流,重复一次逻辑,作为程序员,肯定是非常不愿意的. 瀑布流的形式都是大同小异,不同的是瀑布流中每个模块的内容,随业务而变化. 所以,我们把瀑布流框 ...

  8. 【实战】1364- 实现一个完美的移动端瀑布流组件(附源码)

    背景 瀑布流是大家日常开发过程中经常遇到的一个场景,我们公司内部的组件库中也提供了一些解决方案.但这些方案适用场景都很单一,且每个实现方案都或多或少存在一些问题,基于此,我们设计与开发了一个兼容多场景 ...

  9. Android 自定义View 手写瀑布流组件FlowLayout

    目录 FlowLayout实现关键步骤: 1.创建一个view继承自ViewGroup 2.重写并实现onMeasure方法 3.重写并实现onLayout方法 纸上得来终觉浅,绝知此事要躬行. 动手 ...

最新文章

  1. torch量化感知训练示例项目
  2. UI设计要学哪些软件
  3. (转)---再说卷积
  4. python 获取Dmidecode 输出的系统硬件信息
  5. 数据旋转及DB2递归的应用
  6. 1327集群_MPT1327集群通讯系统
  7. 除阿里、网易和字节外,杭州居然还有这么多互联网公司!
  8. 面试官:Spring事务失效的场景有哪些?如何解决?
  9. jstl之c:forEach的使用
  10. Win 7 安装VMware Workstation Pro 14出现 “Intel VT-x禁用”问题以及“无法连接 MKS: 套接字连接尝试次数太多;正在放弃”问题的实质性解决
  11. 项目管理:实现按时、按预算、基于目标的交付的七个步骤
  12. 同事线上埋的这个坑,我整整找了3天3夜
  13. 考上985能改变命运吗_南开研究生称读研改变命运被嘲讽,网友:本科垃圾,考上985也没用...
  14. Design Tradeoffs for SSD Performance
  15. 解决运行Vue项目localhost8080拒绝连接
  16. 使用pkg编译打包nodejs程序成执行文件
  17. The requested operation requires elevation问题解决
  18. LeetCode93—Restore IP Addresses
  19. 翁恺老师Java进阶城堡游戏源码
  20. c++单链表 一元多项式求和_C++一元多项式相加

热门文章

  1. 信息学奥赛一本通(1049:晶晶赴约会)
  2. 数据结构 —— 数据结构相关
  3. ajax优缺点及原理,Ajax实例解析,异步机制以及优缺点
  4. 修改map.html,HTML map 标签 | 菜鸟教程
  5. OpenGL:编译glfw并配置
  6. 浅谈OpenCL之 应用程序总体步骤思路
  7. MVVM和MVC有什么区别
  8. [Unity] AnimationEvent 因 Animator Controller 中 Transition 设置问题而不触发的快速解决办法:重新拖入 Animator 创建新 State
  9. element-UI级联选择器(Cascader)获取label值 - 代码篇
  10. MongoDB安装中断问题 - 踩坑篇