├── detail ├── fileUpload │ ├── upload │ │ └── .gitkeeper │ ├── README.md │ ├── package.json │ ├── index.js │ └── demo.html ├── README.md ├── validate │ ├── assets │ │ ├── test-data │ │ │ ├── succ.json │ │ │ ├── fail-false.json │ │ │ └── fail-msg.json │ │ ├── img │ │ │ ├── error-icon.png │ │ │ └── succ-icon.png │ │ ├── css │ │ │ └── demo.css │ │ └── js │ │ │ └── demo.js │ ├── README.md │ └── index.html ├── mouseEffect │ └── README.md ├── html2canvas │ ├── img.jpg │ └── demo.html ├── iSlider │ ├── assets │ │ ├── image │ │ │ ├── 1.jpg │ │ │ ├── 2.jpg │ │ │ ├── 3.jpg │ │ │ └── 4.jpg │ │ └── vendor │ │ │ └── islider.css │ ├── README.md │ └── demo.html ├── fullpage │ ├── assets │ │ ├── img │ │ │ └── arrow.png │ │ ├── demo.js │ │ ├── demo.css │ │ └── vendor │ │ │ ├── js │ │ │ └── jquery.slimscroll.min.js │ │ │ └── css │ │ │ └── jquery.fullPage.css │ └── demo.html ├── jquery.slide │ ├── assets │ │ ├── image │ │ │ ├── 1.jpg │ │ │ ├── 2.jpg │ │ │ └── 3.jpg │ │ ├── js │ │ │ └── index.js │ │ └── css │ │ │ └── index.css │ └── add-remove.html ├── tagcanvas │ ├── assets │ │ └── img │ │ │ └── avatar │ │ │ ├── n-1.png │ │ │ ├── n-2.png │ │ │ ├── p-1.png │ │ │ ├── p-2.png │ │ │ ├── p-3.png │ │ │ ├── p-4.png │ │ │ └── n-special.jpg │ ├── README.md │ ├── demo.html │ └── demo.js ├── datepicker │ ├── assets │ │ ├── vendor │ │ │ └── css │ │ │ │ ├── img │ │ │ │ ├── datepicker_b.png │ │ │ │ ├── datepicker_l.png │ │ │ │ ├── datepicker_r.png │ │ │ │ ├── datepicker_t.png │ │ │ │ ├── datepicker_bl.png │ │ │ │ ├── datepicker_br.png │ │ │ │ ├── datepicker_tl.png │ │ │ │ └── datepicker_tr.png │ │ │ │ ├── dark.css │ │ │ │ ├── clean.css │ │ │ │ └── base.css │ │ └── js │ │ │ └── index.js │ ├── README.md │ └── index.html ├── mockajax │ ├── README.md │ └── demo.html ├── jsGrid │ ├── README.md │ ├── assets │ │ ├── data │ │ │ └── worker.json │ │ ├── css │ │ │ └── demos.css │ │ └── vendor │ │ │ ├── jsGrid │ │ │ └── jsgrid.min.css │ │ │ └── pager │ │ │ ├── jquery.paging.css │ │ │ └── jquery.paging.js │ ├── index.html │ ├── basic.html │ ├── click.html │ ├── operate.html │ ├── data-type.html │ ├── ajax.html │ ├── ajax-paging.html │ └── ajax-paging-user-define.html ├── echarts │ └── demos │ │ ├── demo.html │ │ └── index.js ├── jsDoc │ ├── Gruntfile.js │ ├── doc │ │ ├── scripts │ │ │ ├── linenumber.js │ │ │ └── prettify │ │ │ │ ├── lang-css.js │ │ │ │ └── Apache-License-2.0.txt │ │ ├── demo.js.html │ │ ├── styles │ │ │ ├── prettify-jsdoc.css │ │ │ ├── prettify-tomorrow.css │ │ │ └── jsdoc-default.css │ │ ├── index.html │ │ ├── global.html │ │ └── Book.html │ ├── package.json │ ├── demo.js │ └── README.md ├── hybicon │ └── index.html ├── download │ └── index.html ├── Arbiter │ ├── demo.html │ └── Arbiter.js ├── flash │ └── SWFObject.md ├── ztree │ └── README.md ├── konsole │ ├── index.html │ └── assets │ │ └── konsole.css ├── jqueryui │ ├── drag-drop-sort.html │ ├── style.css │ └── drag-drop-sort.js ├── snap │ └── demo.html └── director │ └── demo.html ├── doc └── ui │ ├── components │ ├── navbar │ │ ├── implement │ │ │ ├── mint-header │ │ │ │ └── README.md │ │ │ └── vant-navbar │ │ │ │ └── README.md │ │ ├── screenshot │ │ │ └── basic.png │ │ └── README.md │ ├── tag │ │ ├── screenshot │ │ │ ├── edit.png │ │ │ └── basic.png │ │ └── README.md │ ├── badge │ │ ├── screenshot │ │ │ ├── dot.png │ │ │ ├── max.png │ │ │ ├── basic.png │ │ │ └── string.png │ │ └── README.md │ ├── icon │ │ ├── screenshot │ │ │ └── basic.png │ │ └── README.md │ ├── button │ │ ├── screenshot │ │ │ └── basic.png │ │ └── README.md │ ├── tabbar │ │ ├── screenshot │ │ │ └── basic.png │ │ └── README.md │ ├── form │ │ ├── field │ │ │ ├── screenshot │ │ │ │ ├── area.png │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── number │ │ │ ├── screenshot │ │ │ │ ├── basic.png │ │ │ │ └── btn-right.png │ │ │ └── README.md │ │ ├── radio │ │ │ ├── screenshot │ │ │ │ ├── basic.png │ │ │ │ └── btn-style.png │ │ │ └── README.md │ │ ├── select │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── slider │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── switch │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── upload │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── cascader │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── checkbox │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── color-picker │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── date-picker │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── time-picker │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── datetime-picker │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ └── number-keyboard │ │ │ ├── screenshot │ │ │ └── basic.png │ │ │ └── README.md │ ├── progress │ │ ├── screenshot │ │ │ └── basic.png │ │ └── README.md │ ├── button-group │ │ ├── screenshot │ │ │ └── basic.png │ │ └── README.md │ ├── notice │ │ ├── alert │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── loading │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── message │ │ │ ├── screenshot │ │ │ │ └── basic.png │ │ │ └── README.md │ │ ├── message-box │ │ │ ├── screenshot │ │ │ │ ├── alert.png │ │ │ │ ├── promt.png │ │ │ │ └── confirm.png │ │ │ └── README.md │ │ └── message-notification │ │ │ ├── screenshot │ │ │ └── basic.png │ │ │ └── README.md │ ├── grid │ │ └── README.md │ └── _template │ │ └── README.md │ └── README.md ├── .gitignore ├── high-quality-plugin ├── README.md └── slide │ └── README.md ├── beta.md └── libs └── id-card-uitls.js /detail/fileUpload/upload/.gitkeeper: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /detail/README.md: -------------------------------------------------------------------------------- 1 | # 插件 2 | * [echarts](echarts) -------------------------------------------------------------------------------- /detail/validate/assets/test-data/succ.json: -------------------------------------------------------------------------------- 1 | true -------------------------------------------------------------------------------- /detail/validate/assets/test-data/fail-false.json: -------------------------------------------------------------------------------- 1 | false -------------------------------------------------------------------------------- /detail/validate/assets/test-data/fail-msg.json: -------------------------------------------------------------------------------- 1 | "后台返回的错误信息" -------------------------------------------------------------------------------- /doc/ui/components/navbar/implement/mint-header/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /doc/ui/components/navbar/implement/vant-navbar/README.md: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | 3 | # 源文件的一些处理 4 | dist 5 | 6 | .DS_Store -------------------------------------------------------------------------------- /detail/mouseEffect/README.md: -------------------------------------------------------------------------------- 1 | # 超酷的jQuery跟随鼠标气泡动画 2 | http://www.html5tricks.com/jquery-bubble-animation.html -------------------------------------------------------------------------------- /detail/html2canvas/img.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/html2canvas/img.jpg -------------------------------------------------------------------------------- /detail/iSlider/assets/image/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/iSlider/assets/image/1.jpg -------------------------------------------------------------------------------- /detail/iSlider/assets/image/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/iSlider/assets/image/2.jpg -------------------------------------------------------------------------------- /detail/iSlider/assets/image/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/iSlider/assets/image/3.jpg -------------------------------------------------------------------------------- /detail/iSlider/assets/image/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/iSlider/assets/image/4.jpg -------------------------------------------------------------------------------- /detail/fullpage/assets/img/arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/fullpage/assets/img/arrow.png -------------------------------------------------------------------------------- /detail/jquery.slide/assets/image/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/jquery.slide/assets/image/1.jpg -------------------------------------------------------------------------------- /detail/jquery.slide/assets/image/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/jquery.slide/assets/image/2.jpg -------------------------------------------------------------------------------- /detail/jquery.slide/assets/image/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/jquery.slide/assets/image/3.jpg -------------------------------------------------------------------------------- /detail/validate/assets/img/error-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/validate/assets/img/error-icon.png -------------------------------------------------------------------------------- /detail/validate/assets/img/succ-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/validate/assets/img/succ-icon.png -------------------------------------------------------------------------------- /doc/ui/components/tag/screenshot/edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/tag/screenshot/edit.png -------------------------------------------------------------------------------- /detail/tagcanvas/assets/img/avatar/n-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/tagcanvas/assets/img/avatar/n-1.png -------------------------------------------------------------------------------- /detail/tagcanvas/assets/img/avatar/n-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/tagcanvas/assets/img/avatar/n-2.png -------------------------------------------------------------------------------- /detail/tagcanvas/assets/img/avatar/p-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/tagcanvas/assets/img/avatar/p-1.png -------------------------------------------------------------------------------- /detail/tagcanvas/assets/img/avatar/p-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/tagcanvas/assets/img/avatar/p-2.png -------------------------------------------------------------------------------- /detail/tagcanvas/assets/img/avatar/p-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/tagcanvas/assets/img/avatar/p-3.png -------------------------------------------------------------------------------- /detail/tagcanvas/assets/img/avatar/p-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/tagcanvas/assets/img/avatar/p-4.png -------------------------------------------------------------------------------- /doc/ui/components/badge/screenshot/dot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/badge/screenshot/dot.png -------------------------------------------------------------------------------- /doc/ui/components/badge/screenshot/max.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/badge/screenshot/max.png -------------------------------------------------------------------------------- /doc/ui/components/icon/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/icon/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/tag/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/tag/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/badge/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/badge/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/badge/screenshot/string.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/badge/screenshot/string.png -------------------------------------------------------------------------------- /doc/ui/components/button/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/button/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/navbar/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/navbar/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/tabbar/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/tabbar/screenshot/basic.png -------------------------------------------------------------------------------- /detail/tagcanvas/assets/img/avatar/n-special.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/tagcanvas/assets/img/avatar/n-special.jpg -------------------------------------------------------------------------------- /doc/ui/components/form/field/screenshot/area.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/field/screenshot/area.png -------------------------------------------------------------------------------- /doc/ui/components/progress/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/progress/screenshot/basic.png -------------------------------------------------------------------------------- /detail/jquery.slide/assets/js/index.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | // http://slidesjs.com/ 3 | $(".adplan-slide").slidesjs({ 4 | }); 5 | }); 6 | -------------------------------------------------------------------------------- /doc/ui/components/button-group/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/button-group/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/field/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/field/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/number/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/number/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/radio/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/radio/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/select/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/select/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/slider/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/slider/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/switch/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/switch/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/upload/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/upload/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/notice/alert/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/notice/alert/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/cascader/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/cascader/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/checkbox/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/checkbox/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/radio/screenshot/btn-style.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/radio/screenshot/btn-style.png -------------------------------------------------------------------------------- /doc/ui/components/notice/loading/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/notice/loading/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/notice/message/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/notice/message/screenshot/basic.png -------------------------------------------------------------------------------- /detail/datepicker/assets/vendor/css/img/datepicker_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/datepicker/assets/vendor/css/img/datepicker_b.png -------------------------------------------------------------------------------- /detail/datepicker/assets/vendor/css/img/datepicker_l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/datepicker/assets/vendor/css/img/datepicker_l.png -------------------------------------------------------------------------------- /detail/datepicker/assets/vendor/css/img/datepicker_r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/datepicker/assets/vendor/css/img/datepicker_r.png -------------------------------------------------------------------------------- /detail/datepicker/assets/vendor/css/img/datepicker_t.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/datepicker/assets/vendor/css/img/datepicker_t.png -------------------------------------------------------------------------------- /detail/mockajax/README.md: -------------------------------------------------------------------------------- 1 | # jquery-mockjax 2 | [mock](http://baike.baidu.com/view/2445748.htm) ajax请求ajax请求。 3 | [Github](https://github.com/jakerella/jquery-mockjax) -------------------------------------------------------------------------------- /doc/ui/components/form/color-picker/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/color-picker/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/date-picker/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/date-picker/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/number/screenshot/btn-right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/number/screenshot/btn-right.png -------------------------------------------------------------------------------- /doc/ui/components/form/time-picker/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/time-picker/screenshot/basic.png -------------------------------------------------------------------------------- /detail/datepicker/assets/vendor/css/img/datepicker_bl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/datepicker/assets/vendor/css/img/datepicker_bl.png -------------------------------------------------------------------------------- /detail/datepicker/assets/vendor/css/img/datepicker_br.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/datepicker/assets/vendor/css/img/datepicker_br.png -------------------------------------------------------------------------------- /detail/datepicker/assets/vendor/css/img/datepicker_tl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/datepicker/assets/vendor/css/img/datepicker_tl.png -------------------------------------------------------------------------------- /detail/datepicker/assets/vendor/css/img/datepicker_tr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/detail/datepicker/assets/vendor/css/img/datepicker_tr.png -------------------------------------------------------------------------------- /doc/ui/components/notice/message-box/screenshot/alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/notice/message-box/screenshot/alert.png -------------------------------------------------------------------------------- /doc/ui/components/notice/message-box/screenshot/promt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/notice/message-box/screenshot/promt.png -------------------------------------------------------------------------------- /doc/ui/components/form/datetime-picker/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/datetime-picker/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/form/number-keyboard/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/form/number-keyboard/screenshot/basic.png -------------------------------------------------------------------------------- /doc/ui/components/notice/message-box/screenshot/confirm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/notice/message-box/screenshot/confirm.png -------------------------------------------------------------------------------- /doc/ui/components/notice/message-notification/screenshot/basic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iamjoel/front-end-plugins/HEAD/doc/ui/components/notice/message-notification/screenshot/basic.png -------------------------------------------------------------------------------- /high-quality-plugin/README.md: -------------------------------------------------------------------------------- 1 | # 高质量插件 2 | 选择的插件,review 插件的源码,并详细看其 API 和 写详尽的 Demo。 3 | 4 | * 幻灯 5 | * 分页 6 | * 弹出框 7 | * 验证 8 | * alert/confirm 9 | * data-grid 10 | * lazyload 11 | * 树 12 | -------------------------------------------------------------------------------- /doc/ui/components/grid/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/_template/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/form/select/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/form/slider/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/form/upload/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/progress/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/form/cascader/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/form/date-picker/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/form/time-picker/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/notice/alert/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/notice/loading/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/notice/message/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/form/color-picker/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/form/datetime-picker/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /doc/ui/components/notice/message-box/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /detail/tagcanvas/README.md: -------------------------------------------------------------------------------- 1 | # 标签云 2 | [官网](http://www.goat1000.com/tagcanvas.php) [Github](https://github.com/goat1000/TagCanvas) 3 | 4 | ## 特性 5 | * 云的形状:垂直会水平转的圆柱体(cylinder),环状,球形 6 | * 标签内容:文本或图片 7 | * 标签云的背景 8 | * 标签被点击的事件 -------------------------------------------------------------------------------- /doc/ui/components/notice/message-notification/README.md: -------------------------------------------------------------------------------- 1 | # 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 8 | ## 功能 9 | 10 | ## 实现的组件 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /detail/jsGrid/README.md: -------------------------------------------------------------------------------- 1 | # [jsGrid](http://js-grid.com/) [文档](http://js-grid.com/docs/) 2 | 3 | # 支持如下功能 4 | * 内建的单元格的数据类型,包括:字符串,数字,下拉框,复选框,编辑,删除按钮 5 | * 表格内容支持从本地或服务器上拿 6 | * 数据内容的过滤 7 | * 数据内容可编辑 8 | * 自带分页 9 | * 很多回调:数据插入,数据新增,数据删除等 10 | * 自定制单元格内容,表头的内容 11 | 12 | -------------------------------------------------------------------------------- /doc/ui/components/button-group/README.md: -------------------------------------------------------------------------------- 1 | # 按钮组 2 |
3 | 外观 4 |
5 | 6 | ## 功能 7 | * 多个按钮显示一行。 8 | 9 | ## 实现的组件 10 | * [Button 按钮](http://element-cn.eleme.io/#/zh-CN/component/button) Element 的组件。 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /detail/fileUpload/README.md: -------------------------------------------------------------------------------- 1 | # 文件上传(jQuery-File-Upload) 2 | 3 | 版本 v5.40.1 4 | 依赖jquery,jquery.ui.widget.js 5 | 6 | 后端有nodejs模拟了一个 7 | 8 | ## 运行 9 | 1. `npm install` 10 | 1. `node index.js` 11 | 1. 在浏览器中打开 `http://localhost:3000/` 12 | 13 | 14 | [官网](https://github.com/blueimp/jQuery-File-Upload/) -------------------------------------------------------------------------------- /doc/ui/components/form/checkbox/README.md: -------------------------------------------------------------------------------- 1 | # 多选框 2 |
3 | 外观
4 |
5 | 6 | ## 别名 7 | 复选框。 8 | 9 | ## 功能 10 | * 禁用状态 11 | 12 | ## 实现的组件 13 | * [Checkbox 多选框](http://element-cn.eleme.io/#/zh-CN/component/checkbox) Element 的组件。 14 | 15 | 16 | -------------------------------------------------------------------------------- /doc/ui/components/form/radio/README.md: -------------------------------------------------------------------------------- 1 | # 单选框 2 |
3 | 外观
4 | 外观
5 |
6 | 7 | ## 功能 8 | * 禁用状态 9 | 10 | ## 实现的组件 11 | * [Radio 单选框](http://element-cn.eleme.io/#/zh-CN/component/radio) Element 的组件。 12 | 13 | 14 | -------------------------------------------------------------------------------- /doc/ui/components/form/switch/README.md: -------------------------------------------------------------------------------- 1 | # Switch 开关 2 |
3 | 外观 4 |
5 | 6 | ## 功能 7 | * 禁用状态 8 | * 开关处于打开状态时的文字 9 | * 开关处于关闭状态时的文字 10 | 11 | ## 实现的组件 12 | * [Switch 开关](http://element-cn.eleme.io/#/zh-CN/component/switch) Element 的组件。 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /doc/ui/components/tabbar/README.md: -------------------------------------------------------------------------------- 1 | # TabBar 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 底部选项卡,标签栏。 8 | 9 | ## 功能 10 | * 图标配置。 11 | * 文字配置。 12 | * Tab 的点击回调。 13 | 14 | ## 实现的组件 15 | * [Tabbar](https://www.youzanyun.com/zanui/vant#/zh-CN/component/tabbar) Vant 的组件。 16 | * Tabbar Mint 的组件。 17 | -------------------------------------------------------------------------------- /doc/ui/components/form/number-keyboard/README.md: -------------------------------------------------------------------------------- 1 | # NumberKeyboard 数字键盘 2 |
3 | 外观 4 |
5 | 6 | ## 功能 7 | * 显示数字键盘 8 | * 隐藏数字键盘 9 | 10 | ## 实现的组件 11 | * [NumberKeyboard 数字键盘](https://www.youzanyun.com/zanui/vant#/zh-CN/component/number-keyboard) Vant 的组件。 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /detail/iSlider/README.md: -------------------------------------------------------------------------------- 1 | # [iSlider](https://github.com/BE-FE/iSlider) 2 | iSlider是一个表现出众,无任何插件依赖的手机平台javascript滑动组件。它能够处理大多数的滑动场景,例如图片或者DOM元素。目前支持以下特性: 3 | 4 | * 性能好,体积小,占用内存小,核心代码仅500行。 5 | * 可以按需加载需要的功能。 6 | * 丰富的动画效果。 7 | * 可以设置回调函数(onslidestart, onslide, onslideend, onslidechange)。 8 | * 支持滑动衰减效果,循环滑动,自动播放,水平/垂直切换。 9 | * 支持图片预加载,改善用户体验。 10 | * 支持图片的缩放。 11 | 12 | Baidu出品 -------------------------------------------------------------------------------- /doc/ui/components/navbar/README.md: -------------------------------------------------------------------------------- 1 | # NavBar 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 头部导航栏,顶部导航栏。 8 | 9 | ## 功能 10 | * 左侧返回的箭头及点击回调。 11 | * 中间的页面标题。 12 | * 右侧的内容及点击回调。 13 | 14 | ## 实现的组件 15 | * [NavBar](implement/vant-navbar) Vant 的组件。 16 | * [header](implement/mint-header) Mint 的组件。 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /detail/fileUpload/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "fileUpload", 3 | "version": "0.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "formidable": "^1.0.14", 13 | "node-static": "^0.7.3" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /doc/ui/components/form/number/README.md: -------------------------------------------------------------------------------- 1 | # InputNumber 计数器 2 |
3 | 外观 4 | 外观 5 |
6 | 7 | ## 功能 8 | * 指定数字最小值 9 | * 指定数字最大值 10 | * 计数器步长 11 | * 禁用状态 12 | 13 | ## 实现的组件 14 | * [InputNumber 计数器](http://element-cn.eleme.io/#/zh-CN/component/input-number) Element 的组件。 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /doc/ui/components/icon/README.md: -------------------------------------------------------------------------------- 1 | # Icon 图标 2 |
3 | 外观 4 |
5 | 6 | ## 别名 7 | 字体图标。 8 | 9 | ## 功能 10 | * 能通过CSS控制大小。不会拉伸变现。 11 | * 能通过CSS控制颜色。 12 | * 能通过CSS控制背景。 13 | 14 | ## 实现的组件 15 | * [Iconfont](http://www.iconfont.cn/) 阿里巴巴矢量图标库。 16 | * [Icon 图标](http://element-cn.eleme.io/#/zh-CN/component/icon) Element 的组件。 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /doc/ui/components/button/README.md: -------------------------------------------------------------------------------- 1 | # 按钮 2 |
3 | 外观 4 |
5 | 6 | ## 功能 7 | * 类型:primary,success,warn,info,error 8 | * 大小:small,medium,large 9 | * 禁用状态 10 | * 幽灵/朴素按钮。外仅以线框示意轮廓,内只用文字示意功能,背景透出。 11 | * 文字按钮。 12 | * 图标按钮。 13 | * 图标+文字。图标可以在左侧或右侧。 14 | 15 | ## 实现的组件 16 | * [Button 按钮](http://element-cn.eleme.io/#/zh-CN/component/button) Element 的组件。 -------------------------------------------------------------------------------- /doc/ui/components/tag/README.md: -------------------------------------------------------------------------------- 1 | # Tag 标签 2 |
3 | 外观
4 | 外观
5 |
6 | 7 | ## 别名 8 | Label。 9 | 10 | ## 功能 11 | * 类型: success,info,warning,danger。 12 | * 大小。 13 | * 可移除。 14 | 15 | ## 实现的组件 16 | * [Tag 标签](http://element-cn.eleme.io/#/zh-CN/component/tag) Element 的组件。 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /detail/datepicker/README.md: -------------------------------------------------------------------------------- 1 | # [DatePicker](https://github.com/foxrunsoftware/DatePicker/) 2 | [官方文档](http://foxrunsoftware.github.io/DatePicker/reference.html) 3 | 兼容至少IE7+(没测IE6) 4 | 5 | ## 功能 6 | 1. 可自定义日历数量 7 | 1. 可自定义日历显示位置 8 | 1. 可选择一段时间 9 | 10 | ## 注意点 11 | * 比较悲催的是,选择的开始和截止时间都是没有参数支持来自定义的。但可以用`onRenderCell`来实现该功能。 12 | * 从官网下的`datepicker.js`,要将其中的$.curCSS(jquery 1.8中废弃)替换成$(sel).css 13 | * `locale`中定义了年月日的国际化的数据 14 | -------------------------------------------------------------------------------- /doc/ui/components/form/field/README.md: -------------------------------------------------------------------------------- 1 | # Input 输入框 & 密码框 & 文本域 2 |
3 | 外观
4 | 外观 5 |
6 | 7 | ## 别名 8 | Filed。 9 | 10 | ## 功能 11 | * 只读状态 12 | * 禁用状态 13 | * 远程搜索(自动补全) 14 | * 带图标 15 | * 文本域 16 | * 行数 17 | * 列数 18 | 19 | ## 实现的组件 20 | * [Input 输入框](http://element-cn.eleme.io/#/zh-CN/component/input) Element 的组件。 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /detail/echarts/demos/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 13 | 14 | 15 |
16 |
17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /detail/jsDoc/Gruntfile.js: -------------------------------------------------------------------------------- 1 | module.exports = function(grunt) { 2 | grunt.initConfig({ 3 | jsdoc: { 4 | src: ['./demo.js'], 5 | options: { 6 | destination: './doc' 7 | } 8 | } 9 | }); 10 | 11 | 12 | // Load grunt tasks from NPM packages 13 | require("load-grunt-tasks")(grunt); 14 | 15 | grunt.registerTask('doc', ['jsdoc']); 16 | 17 | grunt.registerTask('default', ['doc']); 18 | }; 19 | -------------------------------------------------------------------------------- /detail/validate/README.md: -------------------------------------------------------------------------------- 1 | # [.Validate](https://github.com/jzaefferer/jquery-validation) 2 | [官方文档](http://jqueryvalidation.org/documentation/) 3 | 4 | ## 功能 5 | ### 支持的验证规则 6 | 1. 非空 7 | 1. 后台(ajax) 8 | 1. 位数限制 9 | 1. 数字。以及大小在某个区间的数字 10 | 1. 邮箱 11 | 1. URL 12 | 1. 电话 13 | 1. 日期 14 | 1. 与某个值相等(密码确认时很有用) 15 | 16 | 17 | ## 注意点 18 | * `rules`中的规则的键值与输入框的name属性一致 19 | * 后台验证时,服务器返回true,则表示验证成功。其余均表示验证失败,如果返回字符串(后台返回是内容必须被字符串符合包裹""),则该字符串为错误信息;若不是字符串,则配置的remote的值为错误信息,默认是`Please fix this field.` 20 | -------------------------------------------------------------------------------- /doc/ui/components/badge/README.md: -------------------------------------------------------------------------------- 1 | # Badge 标记 2 |
3 | 外观
4 | 外观
5 | 外观
6 | 外观
7 |
8 | 9 | ## 功能 10 | * 展示新消息数量。 11 | * 自定义最大值。 12 | * 显示数字以外的文本内容。 13 | * 以红点的形式标注需要关注的内容。 14 | 15 | ## 实现的组件 16 | * [Badge 标记](http://element-cn.eleme.io/#/zh-CN/component/badge) Element 的组件。 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /detail/jsGrid/assets/data/worker.json: -------------------------------------------------------------------------------- 1 | { 2 | "pageNum": 10, 3 | "pageAt": 2, 4 | "data": [{ 5 | "name": "joel", 6 | "job": "前端工程师" 7 | }, { 8 | "name": "jack", 9 | "job": "后端端工程师" 10 | }, { 11 | "name": "joel2", 12 | "job": "前端工程师" 13 | }, { 14 | "name": "jack2", 15 | "job": "后端端工程师" 16 | }, { 17 | "name": "joel3", 18 | "job": "前端工程师" 19 | }, { 20 | "name": "jack3", 21 | "job": "后端端工程师" 22 | }] 23 | } 24 | -------------------------------------------------------------------------------- /detail/jquery.slide/assets/css/index.css: -------------------------------------------------------------------------------- 1 | .slidesjs-container{ 2 | margin-bottom: 10px; 3 | } 4 | .slidesjs-previous{ 5 | margin-right: 10px; 6 | } 7 | .slidesjs-pagination{ 8 | float: right; 9 | } 10 | .slidesjs-pagination .slidesjs-pagination-item{ 11 | display: inline-block; 12 | margin-right: 10px; 13 | 14 | } 15 | .slidesjs-pagination .slidesjs-pagination-item .active{ 16 | color: #d22929; 17 | } 18 | 19 | .slide .image{ 20 | display: none; 21 | width: 100%; 22 | height: auto; 23 | } 24 | .slide .image:first-child{ 25 | display: block; 26 | } -------------------------------------------------------------------------------- /detail/hybicon/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
11 |
12 | 13 | 14 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /detail/jsDoc/doc/scripts/linenumber.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var counter = 0; 3 | var numbered; 4 | var source = document.getElementsByClassName('prettyprint source'); 5 | 6 | if (source && source[0]) { 7 | source = source[0].getElementsByTagName('code')[0]; 8 | 9 | numbered = source.innerHTML.split('\n'); 10 | numbered = numbered.map(function(item) { 11 | counter++; 12 | return '' + item; 13 | }); 14 | 15 | source.innerHTML = numbered.join('\n'); 16 | } 17 | })(); 18 | -------------------------------------------------------------------------------- /detail/jsDoc/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "jsdoc", 3 | "version": "0.0.0", 4 | "description": "jsdoc demo", 5 | "scripts": { 6 | "test": "todo" 7 | }, 8 | "repository": { 9 | "type": "git", 10 | "url": "https://github.com/iamjoel/fontEnd.git" 11 | }, 12 | "author": "joel", 13 | "license": "ISC", 14 | "bugs": { 15 | "url": "https://github.com/iamjoel/fontEnd/issues" 16 | }, 17 | "homepage": "https://github.com/iamjoel/fontEnd", 18 | "devDependencies": { 19 | "grunt": "~0.4.2", 20 | "load-grunt-tasks": "~0.4.0", 21 | "grunt-jsdoc": "~0.5.1" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /detail/jsDoc/demo.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @file jsDoc Demo 3 | * @author Joel 4 | * @version 0.0.1 5 | * @see http://usejsdoc.org/index.html 6 | */ 7 | 8 | /** This is a description of the foo function. */ 9 | function foo() {} 10 | 11 | /** 12 | * Represents a book. 13 | * @constructor 14 | * @param {string} title - The title of the book. 15 | * @param {string} author - The author of the book. 16 | * @returns {Book} Book对象 17 | * @param {string|object} [describe=''] - The describe of the book. 18 | * @todo add more meta info of the book 19 | */ 20 | function Book(title, author, describe) {} 21 | 22 | -------------------------------------------------------------------------------- /detail/validate/assets/css/demo.css: -------------------------------------------------------------------------------- 1 | .form .form-group .status label { 2 | display: block; 3 | line-height: 32px; 4 | background-repeat: no-repeat; 5 | background-position: 7px center; 6 | margin-bottom: 0; 7 | } 8 | .form .form-group .status label.error { 9 | color: #a73242; 10 | padding-left: 30px; 11 | padding-right: 10px; 12 | border: 1px solid #ebb3b3; 13 | background-color: #ffebeb; 14 | background-image: url(../img/error-icon.png); 15 | } 16 | .form .form-group .status label.checked { 17 | display: block; 18 | width: 30px; 19 | padding: 0; 20 | border: none; 21 | background-color: #fff; 22 | background-image: url(../img/succ-icon.png); 23 | margin-bottom: 0; 24 | } 25 | -------------------------------------------------------------------------------- /detail/download/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Document 6 | 7 | 8 | 9 | 10 | 11 | 22 | 23 | -------------------------------------------------------------------------------- /detail/datepicker/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | calender 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 |
16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /detail/jsDoc/doc/scripts/prettify/lang-css.js: -------------------------------------------------------------------------------- 1 | PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", 2 | /^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /beta.md: -------------------------------------------------------------------------------- 1 | ## 还未分类的一些组件 2 | * [formalize](http://formalize.me/) 让表单元素在不同系统的主流浏览器上,外观一致。 3 | * [datedropper](http://felicegattuso.com/projects/datedropper/) 很清新的日历控件。IE9+ 4 | * [sprint](https://github.com/bendc/sprint) Sprint is an alternative—not a replacement—for jQuery. jQuery offers more features, handles more edge cases and supports more browsers. Sprint is just a thin layer making the DOM friendlier without sacrificing on performance. 5 | * [Clusterize.js](https://github.com/NeXTs/Clusterize.js) 展示大量二维数据不卡顿 6 | * [JSON Server](https://github.com/typicode/json-server) Get a full fake REST API with zero coding in less than 30 seconds (seriously) 7 | * [Colorify.js](http://colorify.rocks/index.html) awesome~ 从图片中取颜色,基于这些颜色做一些事情。 8 | * [mojs](https://github.com/legomushroom/mojs) 值得研究的一个动画库 9 | * [svg to image](https://github.com/Jam3/svg-to-image) 把 svg 在 canvas 中画出来 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /detail/Arbiter/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 发布订阅 demo 7 | 8 | 9 | 10 | 11 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /high-quality-plugin/slide/README.md: -------------------------------------------------------------------------------- 1 | # 幻灯 2 | 需要满足以下需求 3 | * 上一张/下一张 4 | * 跳转到哪张 5 | * 自动播放 6 | * 水平/垂直 7 | * 幻灯切换方式:滚动;淡入淡出;其他动画方式 8 | * swipe 来切换 9 | 10 | ## 候选 11 | * [slidesjs](http://slidesjs.com/) 挺好用的,只是那幻灯导航的CSS都要自己写,呵呵 [详细](detail/jquery.slide) 12 | * [iSlider](https://github.com/BE-FE/iSlider) 无任何插件依赖的手机平台javascript滑动组件 [详细](detail/iSlider) 13 | * [bgstretcher](http://www.ajaxblender.com/bgstretcher-2-jquery-stretch-background-plugin-updated.html) 全屏幻灯,会随着页面大小的变化而变化。 14 | * [Swiper](https://github.com/nolimits4web/swiper/) 开源、免费、强大的移动端触摸滑动插件 [Swiper中文网](http://www.swiper.com.cn/) 15 | * [coin-slider](https://github.com/kopipejst/coin-slider/) 兼容IE6。蛮好的~。不过其切换方式是一块块的。不能配置切换方式。。。 16 | * [wowslider](http://wowslider.com/rq/jquery-image-viewer/) 幻灯切换时各种很炫的效果。收费。 17 | * [cycle2](http://jquery.malsup.com/cycle2/) 普通的幻灯,竟然不支持垂直滚动。。。 18 | * [jcarousel](http://sorgalla.com/jcarousel/) 普通的幻灯,不兼容IE6 19 | * [reveal](https://github.com/hakimel/reveal.js) 3d滚动。做ppt相当不错 -------------------------------------------------------------------------------- /detail/jsGrid/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | jsGrid Demo 6 | 7 | 8 | 9 | 21 |
22 | 23 |
24 | 25 | -------------------------------------------------------------------------------- /detail/flash/SWFObject.md: -------------------------------------------------------------------------------- 1 | ## 简介 2 | SWFObject是一个用于在HTML中方便插入Adobe Flash媒体资源(*.swf文件)的独立、敏捷的JavaScript模块。该模块中的JavaScript脚本能够自动检测PC、Mac机器上各种主流浏览器对Flash插件的支持情况。它使得插入Flash媒体资源尽量简捷、安全。而且它是非常符合搜索引擎优化的原则的。此外,它能够避免您的 HTML、XHTML中出现object、embed等非标准标签,从而符合更加标准。 3 | 4 | ## api 5 | swfobject.embedSWF(swfUrl, id, width, height, version, expressInstallSwfurl, flashvars, params, attributes) 6 | 参数说明 7 | swfUrl(String,必须的)指定SWF的URL。 8 | id(String,必须的)指定将会被Flash内容替换的HTML元素(包含你的替换内容)的id。 9 | width(String,必须的)指定SWF的宽。 10 | height(String,必须的)指定SWF的高。 11 | version(String,必须的)指定你发布的SWF对应的Flash Player版本(格式为:major.minor.release)。 12 | expressInstallSwfurl(String,可选的)指定express install SWF的URL并激活Adobe express install [ http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=6a253b75 ]。 13 | flashvars(String,可选的)用name:value对指定你的flashvars。 14 | params(String,可选的)用name:value对指定你的嵌套object元素的params。 15 | attributes(String,可选的)用name:value对指定object的属性。 16 | 17 | 18 | ## 文档地址 19 | * 官网:http://code.google.com/p/swfobject/ 20 | * 文档地址 http://code.google.com/p/swfobject/wiki/documentation 21 | 22 | 23 | -------------------------------------------------------------------------------- /detail/ztree/README.md: -------------------------------------------------------------------------------- 1 | # [ztree](http://www.treejs.cn/v3/api.php) 2 | ``` 3 | var setting = { 4 | check: { 5 | enable: true, 6 | chkboxType: { "Y": "s", "N": "ps" } // 选择级联的设置 7 | }, 8 | view: { 9 | showIcon: false 10 | }, 11 | data: { 12 | simpleData: { 13 | enable: true 14 | } 15 | }, 16 | callback: { 17 | onClick: function (event, treeId, nodeData) {}, 18 | onCheck: function () {} 19 | } 20 | }; 21 | 22 | var treeObj = $.fn.zTree.init($("#area-tree"), setting, data); 23 | 24 | // data 是个数组,每项里必须有 pId(父元素id) 和 name(显示名称) 25 | data = data.map.forEach(function (each) { 26 | each.pId = each.pid; 27 | each.name = each.text; 28 | return each; 29 | }); 30 | 31 | var needExpendNodes = treeObj.getNodesByFilter(function (each) { 32 | return true; // 默认全展开。 如果要展开第一层,可以用 each.level === 1 33 | }, false); 34 | // 展开 35 | needExpendNodes.forEach(function (node) { 36 | treeObj.expandNode(node, true); 37 | }); 38 | 39 | // 选中某些节点 40 | treeObj.checkNode(node, true, true); 41 | 42 | // 筛选所有的叶子节点 43 | nodes.filter(function (node) { 44 | return !node.isParent 45 | }) 46 | 47 | ``` -------------------------------------------------------------------------------- /detail/fullpage/assets/demo.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | var $pageWrap = $('#fullpage'); 3 | // 生产每个页面的锚 4 | function makeAnchorArr ($el, prefix) { 5 | prefix = prefix || 'page-'; 6 | var anchorArr = []; 7 | var pageNum = $el.length; 8 | for(var i = 0; i < pageNum; i++){ 9 | anchorArr.push(prefix + (i + 1)); 10 | } 11 | return anchorArr; 12 | } 13 | var $pages = $pageWrap.find('.section'); 14 | var $tipArrow = $('.tip-arrow') 15 | var pageNum = $pages.length; 16 | $pageWrap.fullpage({ 17 | anchors: makeAnchorArr($pageWrap.find('>.section')),// 如果不加这个,就不会有hash,也就不能记住页面状态 18 | easingcss3: 'ease-out', // css动画 19 | // easing: 'ease-out', // js 动画 20 | scrollingSpeed: 400, 21 | afterLoad: function(anchorLink, index){ 22 | // console.log('page:%d loaded!', index); 23 | $pages.eq(index - 1).addClass('page-active'); 24 | if(index === pageNum){ 25 | $tipArrow.hide(); 26 | }else{ 27 | $tipArrow.show(); 28 | } 29 | }, 30 | onLeave: function(index){ 31 | // console.log('page:%d leave!', index); 32 | $pages.eq(index - 1).removeClass('page-active'); 33 | } 34 | }); 35 | }); -------------------------------------------------------------------------------- /detail/konsole/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /detail/jqueryui/drag-drop-sort.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 拖拽排序 6 | 7 | 8 | 9 |
10 |
11 |
12 |

在预览中会排序

13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | 23 |
24 |

在预览中不会排序

25 |
26 |
27 |
28 |
29 |
30 |
绿
31 |
32 |
33 |
34 |
35 |
36 |
37 | 38 |
39 |
40 |
41 | 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /detail/jsGrid/basic.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 基本的使用 7 | 8 | 9 | 10 | 11 | 12 |

基本的使用

13 |
14 | 15 | 16 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /detail/snap/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | snap demo 7 | 20 | 21 | 22 | 23 | 24 | 25 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /detail/fullpage/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | fullpage的demo 7 | 8 | 9 | 10 | 11 | 12 | 22 |
23 |
24 |

世界是噪音的花园

25 |
26 |
27 |

生活在现场

28 |
29 |
30 |

假如你还记得

31 |
32 |
33 |

总有当初模样

34 |
35 |
36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /detail/jqueryui/style.css: -------------------------------------------------------------------------------- 1 | *{ 2 | margin: 0; 3 | padding: 0; 4 | } 5 | .sortable-placeholder{ 6 | height: 100px; 7 | border: 1px dashed #f00; 8 | } 9 | .container{ 10 | font-size: 0; 11 | width: 960px; 12 | margin: 50px auto; 13 | } 14 | .left,.right{ 15 | font-size: 12px; 16 | display: inline-block; 17 | vertical-align: top; 18 | } 19 | .left{ 20 | width: 200px; 21 | margin-right: 50px; 22 | } 23 | .right{ 24 | width: 600px; 25 | } 26 | 27 | .box{ 28 | margin-bottom: 10px; 29 | border: 1px solid #eee; 30 | } 31 | 32 | .box h2{ 33 | background-color:#eee; 34 | padding-left: 10px; 35 | height: 30px; 36 | line-height: 30px; 37 | 38 | } 39 | .box__content{ 40 | padding: 10px; 41 | } 42 | .block{ 43 | text-align: center; 44 | color: #fff; 45 | margin-bottom: 10px; 46 | height: 100px; 47 | line-height: 100px; 48 | } 49 | .dragables__item{ 50 | z-index: 1000; 51 | } 52 | 53 | 54 | 55 | .block--blue{ 56 | background-color: blue; 57 | } 58 | .block--yellow{ 59 | background-color: yellow; 60 | } 61 | .block--red{ 62 | background-color: red; 63 | } 64 | .block--green{ 65 | background-color: green; 66 | } 67 | 68 | 69 | 70 | .preview{ 71 | position: relative; 72 | width: 100%; 73 | height: 400px; 74 | border: 1px solid #f0f; 75 | } 76 | .preview .block{ 77 | margin-bottom: 0; 78 | } 79 | .preview .sortables__item .block{ 80 | width: 100%; 81 | height: 100px; 82 | line-height: 100px; 83 | } 84 | 85 | .preview .dragables__item .block{ 86 | width: 50px; 87 | height: 50px; 88 | line-height: 50px; 89 | } -------------------------------------------------------------------------------- /detail/jsGrid/click.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 单元格被点击 7 | 8 | 9 | 10 | 11 | 12 |

单元格被点击

13 |
14 | 15 | 16 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /detail/jsGrid/assets/css/demos.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; 3 | padding: 0; 4 | box-sizing: border-box; 5 | } 6 | 7 | html { 8 | height: 100%; 9 | } 10 | 11 | body { 12 | height: 100%; 13 | padding: 10px; 14 | color: #262626; 15 | font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica; 16 | font-size: 14px; 17 | font-weight: 300; 18 | } 19 | 20 | h1 { 21 | margin: 0 0 8px 0; 22 | font-size: 24px; 23 | font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica; 24 | font-weight: 300; 25 | } 26 | 27 | h2 { 28 | margin: 16px 0 8px 0; 29 | font-size: 18px; 30 | font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica; 31 | font-weight: 300; 32 | } 33 | 34 | ul { 35 | list-style: none; 36 | } 37 | 38 | a { 39 | color: #2ba6cb; 40 | text-decoration: none; 41 | } 42 | 43 | a:hover { 44 | text-decoration: underline; 45 | color: #258faf; 46 | } 47 | 48 | input, button, select { 49 | font-family: 'Helvetica Neue Light', 'Open Sans', Helvetica; 50 | font-weight: 300; 51 | font-size: 14px; 52 | padding: 2px; 53 | } 54 | 55 | .navigation { 56 | width: 200px; 57 | position: absolute; 58 | top: 0; 59 | bottom: 0; 60 | left: 0; 61 | padding: 10px; 62 | border-right: 1px solid #e9e9e9; 63 | } 64 | 65 | .navigation li { 66 | margin: 10px 0; 67 | } 68 | 69 | .demo-frame { 70 | position: absolute; 71 | top: 0; 72 | right: 0; 73 | bottom: 0; 74 | left: 200px; 75 | } 76 | 77 | iframe[name='demo'] { 78 | display: block; 79 | width: 100%; 80 | height: 100%; 81 | border: none; 82 | } -------------------------------------------------------------------------------- /detail/jsGrid/assets/vendor/jsGrid/jsgrid.min.css: -------------------------------------------------------------------------------- 1 | /* 2 | * jsGrid v1.0.1 (http://js-grid.com) 3 | * (c) 2015 Artem Tabalin 4 | * Licensed under MIT (https://github.com/tabalinas/jsgrid/blob/master/LICENSE) 5 | */ 6 | 7 | .jsgrid{position:relative;overflow:hidden;font-size:1em}.jsgrid,.jsgrid *,.jsgrid :after,.jsgrid :before{box-sizing:border-box}.jsgrid input,.jsgrid select,.jsgrid textarea{font-size:1em}.jsgrid-grid-header{overflow-x:hidden;overflow-y:hidden;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.jsgrid-grid-body{overflow-x:hidden;overflow-y:scroll;-webkit-overflow-scrolling:touch}.jsgrid-table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0}.jsgrid-table td{padding:.5em}.jsgrid-table td,.jsgrid-table th{box-sizing:border-box}.jsgrid-align-left{text-align:left}.jsgrid-align-center{text-align:center}.jsgrid-align-right{text-align:right}.jsgrid-header-row>th{padding:.5em}.jsgrid-edit-row input,.jsgrid-edit-row select,.jsgrid-edit-row textarea,.jsgrid-filter-row input,.jsgrid-filter-row select,.jsgrid-filter-row textarea,.jsgrid-insert-row input,.jsgrid-insert-row select,.jsgrid-insert-row textarea{width:90%;padding:.3em .5em}.jsgrid-edit-row input[type=checkbox],.jsgrid-filter-row input[type=checkbox],.jsgrid-insert-row input[type=checkbox]{width:auto}.jsgrid-edit-row>td,.jsgrid-filter-row>td,.jsgrid-header-row>th,.jsgrid-insert-row>td{text-align:center}.jsgrid-selected-row td{cursor:pointer}.jsgrid-nodata-row td{padding:.5em 0;text-align:center}.jsgrid-header-sort{cursor:pointer}.jsgrid-pager{padding:.5em 0}.jsgrid-pager-nav-button,.jsgrid-pager-page{padding:.2em .6em} -------------------------------------------------------------------------------- /detail/tagcanvas/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | demo 6 | 41 | 42 | 43 | 44 |

签到人数为 50

45 | 46 | 47 | 48 | 49 | 50 |
51 | 52 | 53 |

Anything in here will be replaced on browsers that support the canvas element

54 |
55 |
56 |
57 | 59 |
60 | 61 | 62 | 63 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /detail/datepicker/assets/vendor/css/dark.css: -------------------------------------------------------------------------------- 1 | .datepickerContainer { 2 | background-color: #121212; 3 | top: 10px; 4 | left: 10px; 5 | } 6 | .datepickerBorderT { 7 | display:block; 8 | position: absolute; 9 | left: 10px; 10 | top: 0; 11 | right: 10px; 12 | height: 10px; 13 | background: url(img/datepicker_t.png); 14 | } 15 | .datepickerBorderB { 16 | display:block; 17 | position: absolute; 18 | left: 10px; 19 | bottom: 0; 20 | right: 10px; 21 | height: 10px; 22 | background: url(img/datepicker_b.png); 23 | } 24 | .datepickerBorderL { 25 | display:block; 26 | position: absolute; 27 | left: 0; 28 | bottom: 10px; 29 | top: 10px; 30 | width: 10px; 31 | background: url(img/datepicker_l.png); 32 | } 33 | .datepickerBorderR { 34 | display:block; 35 | position: absolute; 36 | right: 0; 37 | bottom: 10px; 38 | top: 10px; 39 | width: 10px; 40 | background: url(img/datepicker_r.png); 41 | } 42 | .datepickerBorderTL { 43 | display:block; 44 | position: absolute; 45 | top: 0; 46 | left: 0; 47 | width: 10px; 48 | height: 10px; 49 | background: url(img/datepicker_tl.png); 50 | } 51 | .datepickerBorderTR { 52 | display:block; 53 | position: absolute; 54 | top: 0; 55 | right: 0; 56 | width: 10px; 57 | height: 10px; 58 | background: url(img/datepicker_tr.png); 59 | } 60 | .datepickerBorderBL { 61 | display:block; 62 | position: absolute; 63 | bottom: 0; 64 | left: 0; 65 | width: 10px; 66 | height: 10px; 67 | background: url(img/datepicker_bl.png); 68 | } 69 | .datepickerBorderBR { 70 | display:block; 71 | position: absolute; 72 | bottom: 0; 73 | right: 0; 74 | width: 10px; 75 | height: 10px; 76 | background: url(img/datepicker_br.png); 77 | } 78 | div.datepicker a { 79 | color: #eeeeee; 80 | } 81 | div.datepicker th { 82 | color: #999999; 83 | } 84 | td.datepickerNotInMonth a { 85 | color: #666666; 86 | } 87 | td.datepickerDisabled a, 88 | td.datepickerDisabled.datepickerNotInMonth a{ 89 | color: #333333; 90 | } 91 | -------------------------------------------------------------------------------- /detail/jsDoc/doc/demo.js.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Source: demo.js 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 |

Source: demo.js

21 | 22 | 23 | 24 | 25 | 26 |
27 |
28 |
/**
29 |  * @file jsDoc Demo
30 |  * @author Joel <iamjoel007@gmail.com>
31 |  * @version 0.0.1
32 |  * @see http://usejsdoc.org/index.html
33 |  */
34 | 
35 | /** This is a description of the foo function. */
36 | function foo() {}
37 | 
38 | /**
39 |  * Represents a book.
40 |  * @constructor
41 |  * @param {string} title - The title of the book.
42 |  * @param {string} author - The author of the book.
43 |  * @returns {Book} Book对象
44 |  * @param {string|object} [describe=''] - The describe of the book.
45 |  * @todo add more meta info of the book
46 |  */
47 | function Book(title, author, describe) {}
48 | 
49 | 
50 |
51 |
52 | 53 | 54 | 55 | 56 |
57 | 58 | 61 | 62 |
63 | 64 | 67 | 68 | 69 | 70 | 71 | 72 | -------------------------------------------------------------------------------- /detail/datepicker/assets/vendor/css/clean.css: -------------------------------------------------------------------------------- 1 | /* Datepicker border styling */ 2 | .datepicker { 3 | background-color: #F7F7F7; 4 | border: 1px solid #CCCCCC; 5 | border-radius: 5px 5px 5px 5px; 6 | padding: 10px; 7 | } 8 | 9 | /* Tighten up the spacing between multiple calendars */ 10 | .datepickerSpace div { 11 | width:2px; 12 | } 13 | 14 | /* Grey background behind Month Name row, and blue text */ 15 | div.datepicker th { 16 | background-color:#DDDDDD; 17 | } 18 | div.datepicker th a.datepickerMonth { 19 | color:#008ED6; 20 | font-weight:normal; 21 | } 22 | 23 | /* style the day of week header cells */ 24 | div.datepicker th { 25 | color: black; 26 | font-weight: bold; 27 | } 28 | /* grey underline beneath day of week row */ 29 | div.datepicker table thead tr.datepickerDoW th { 30 | border-bottom: 1px solid #CCCCCC; 31 | } 32 | 33 | /* Black text, white background, and grey borders around day cells */ 34 | div.datepicker a, 35 | div.datepicker a:hover { 36 | color: black; 37 | } 38 | div.datepicker table.datepickerViewDays, 39 | div.datepicker table.datepickerViewMonths, 40 | div.datepicker table.datepickerViewYears { 41 | background-color:white; 42 | } 43 | div.datepicker table tbody.datepickerDays td { 44 | border: 1px solid #F7F7F7; 45 | } 46 | 47 | /* blue cell color for selected days */ 48 | tbody.datepickerDays td.datepickerSelected { 49 | background-color:#0077CC; 50 | } 51 | 52 | /* Grey out dates in the future */ 53 | div.datepicker td.datepickerFuture a { 54 | color:#DDDDDD; 55 | } 56 | 57 | /* yellow cell background on hover */ 58 | div.datepicker tbody.datepickerDays td:hover { 59 | background-color: #FFCC33; 60 | } 61 | 62 | /* Bold today's date */ 63 | div.datepicker td.datepickerToday a { 64 | font-weight:bold; 65 | } 66 | 67 | /* cells are wider in the clean style */ 68 | .datepickerYears a, .datepickerMonths a { 69 | width: 42px; 70 | } 71 | .datepickerMonths td:first-child a, 72 | .datepickerYears td:first-child a { 73 | width:39px; 74 | } 75 | div.datepicker th a.datepickerMonth { 76 | width:121px; 77 | } 78 | -------------------------------------------------------------------------------- /detail/fileUpload/index.js: -------------------------------------------------------------------------------- 1 | var formidable = require('formidable'), 2 | http = require('http'), 3 | util = require('util'), 4 | fs = require('fs'), 5 | path = require('path'), 6 | static = require('node-static'), 7 | fileServer = new static.Server('./public'); 8 | 9 | var uploadDir = __dirname + '/upload/'; 10 | 11 | 12 | 13 | http.createServer(function(req, res) { 14 | if (req.url == '/upload' && req.method.toLowerCase() == 'post') { 15 | var form = new formidable.IncomingForm(); // parse a file upload 16 | form.uploadDir = uploadDir; 17 | form.on('file', function(name, file) { 18 | var fileName = path.basename(file.name); 19 | var fileSavePath = uploadDir + getUniqueFileName(fileName); 20 | try{ 21 | fs.renameSync(file.path, fileSavePath); 22 | } catch(err){ 23 | res.writeHead(200, { 24 | 'content-type': 'text/json' 25 | }); 26 | res.write(JSON.stringify({ 27 | success:0, 28 | msg: err 29 | })); 30 | res.end(); 31 | } 32 | 33 | res.writeHead(200, { 34 | 'content-type': 'text/json' 35 | }); 36 | res.write(JSON.stringify({ 37 | success:1, 38 | href : fileSavePath 39 | })); 40 | res.end(); 41 | }); 42 | form.parse(req); // import 43 | // return; 44 | } else if (req.url == '/') { //主页 45 | var file = fs.readFileSync('./demo.html', { 46 | encoding: 'utf8' 47 | }); 48 | res.writeHead(200, { 49 | 'Content-Type': 'text/html' 50 | }); 51 | res.end(file); 52 | return; 53 | } else{ //静态服务器 54 | fileServer.serve(req, res); 55 | } 56 | 57 | }).listen(3000); 58 | console.log('listening on http://localhost:3000/'); 59 | 60 | function getUniqueFileName(fileName){ 61 | return new Date().getTime() + '.'+ path.basename(fileName); 62 | } 63 | -------------------------------------------------------------------------------- /detail/director/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | director 6 | 7 | 8 | 9 | 17 | 20 | 69 | 70 | -------------------------------------------------------------------------------- /detail/jsDoc/README.md: -------------------------------------------------------------------------------- 1 | # [JSDoc](http://usejsdoc.org/) 2 | JSDoc是一个根据javascript文件中注释的信息,生成API文档的工具。生成的文档是html文件。类似JavaDoc和PHPDoc。 3 | 4 | 5 | ## 用法 6 | `/** 一坨注释之类的 */` 7 | JSDoc会从`/**`开头的注释中抽取信息。用`/*`,`/***`开头的注释会被JSDoc忽略。 8 | 如 9 | ``` 10 | /** This is a description of the foo function. */ 11 | function foo() { 12 | } 13 | 14 | /** 15 | * Represents a book. 16 | * @constructor 17 | * @param {string} title - The title of the book. 18 | * @param {string} author - The author of the book. 19 | */ 20 | function Book(title, author) { 21 | } 22 | ``` 23 | 24 | ## 生成API文档 25 | 我是用的基于Grunt的插件:[grunt-jsdoc](https://github.com/krampstudio/grunt-jsdoc)。 26 | 27 | 具体用法见[这里](https://github.com/krampstudio/grunt-jsdoc)。下面是我的grunt-doc的配置 28 | ``` 29 | 'jsdoc': { 30 | src: ['my-lib/*/*.js', '!my-lib/doc/**/*.js'], 31 | options: { 32 | destination: 'my-lib/doc' 33 | } 34 | } 35 | ``` 36 | 37 | ## 使用标签 38 | 标签就是一些以`@`开头的命令。 39 | 如果你想描述方法的参数,可以这样使用 40 | ``` 41 | /** 42 | * @param {string} somebody - Somebody's name 43 | */ 44 | function sayHello(somebody) { 45 | alert('Hello ' + somebody); 46 | } 47 | ``` 48 | `somebody` 是参数名 49 | `{string}` 是参数的类型 50 | `Somebody's name` 参数的描述 51 | 52 | 下面描述一些常用的标签 53 | ### `@param` 54 | 方法的参数描述。 55 | 用法: `@param {类型} 参数名 - 描述` 56 | 57 | * 如果参数名以`[]`来包围,表示这参数是可选的 58 | * `参数名=默认值`,表示参数的默认值 59 | * `{类型1|类型2}`,表示多个类型 60 | 61 | [更多](http://usejsdoc.org/tags-param.html) 62 | 63 | ### `@returns` 64 | 方法的返回值。 65 | 用法 : `@returns {类型} 返回值描述` 66 | 67 | ### `@file` 68 | 文件描述。 69 | 用法 : `@file 文件描述` 70 | 71 | ### `@todo` 72 | 描述一些要做的事。 73 | 用法 : `@todo 描述` 74 | 75 | ### `@author` 76 | 作者。 77 | 用法 : `@author 作者` 78 | 79 | ### `@constructor` 80 | 表明这个方法是个构造器。 81 | 用法 : `@constructor` 82 | 83 | 所有标签用法见[这里](http://usejsdoc.org/#JSDoc3_Tag_Dictionary) 84 | 85 | ## 完整demo的源码 86 | 见[这里](https://github.com/iamjoel/front-end-resource/tree/master/learn/JSDoc)。其中doc文件夹下的内容是grunt-doc生成的。 87 | 88 | ## 资源 89 | * [官网](http://usejsdoc.org/) 90 | * [jsdoc github](https://github.com/jsdoc3/jsdoc) 91 | * [grunt-jsdoc](https://github.com/krampstudio/grunt-jsdoc) jsdoc的Grunt插件 92 | 93 | -------------------------------------------------------------------------------- /detail/jsDoc/doc/styles/prettify-jsdoc.css: -------------------------------------------------------------------------------- 1 | /* JSDoc prettify.js theme */ 2 | 3 | /* plain text */ 4 | .pln { 5 | color: #000000; 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | 10 | /* string content */ 11 | .str { 12 | color: #006400; 13 | font-weight: normal; 14 | font-style: normal; 15 | } 16 | 17 | /* a keyword */ 18 | .kwd { 19 | color: #000000; 20 | font-weight: bold; 21 | font-style: normal; 22 | } 23 | 24 | /* a comment */ 25 | .com { 26 | font-weight: normal; 27 | font-style: italic; 28 | } 29 | 30 | /* a type name */ 31 | .typ { 32 | color: #000000; 33 | font-weight: normal; 34 | font-style: normal; 35 | } 36 | 37 | /* a literal value */ 38 | .lit { 39 | color: #006400; 40 | font-weight: normal; 41 | font-style: normal; 42 | } 43 | 44 | /* punctuation */ 45 | .pun { 46 | color: #000000; 47 | font-weight: bold; 48 | font-style: normal; 49 | } 50 | 51 | /* lisp open bracket */ 52 | .opn { 53 | color: #000000; 54 | font-weight: bold; 55 | font-style: normal; 56 | } 57 | 58 | /* lisp close bracket */ 59 | .clo { 60 | color: #000000; 61 | font-weight: bold; 62 | font-style: normal; 63 | } 64 | 65 | /* a markup tag name */ 66 | .tag { 67 | color: #006400; 68 | font-weight: normal; 69 | font-style: normal; 70 | } 71 | 72 | /* a markup attribute name */ 73 | .atn { 74 | color: #006400; 75 | font-weight: normal; 76 | font-style: normal; 77 | } 78 | 79 | /* a markup attribute value */ 80 | .atv { 81 | color: #006400; 82 | font-weight: normal; 83 | font-style: normal; 84 | } 85 | 86 | /* a declaration */ 87 | .dec { 88 | color: #000000; 89 | font-weight: bold; 90 | font-style: normal; 91 | } 92 | 93 | /* a variable name */ 94 | .var { 95 | color: #000000; 96 | font-weight: normal; 97 | font-style: normal; 98 | } 99 | 100 | /* a function name */ 101 | .fun { 102 | color: #000000; 103 | font-weight: bold; 104 | font-style: normal; 105 | } 106 | 107 | /* Specify class=linenums on a pre to get line numbering */ 108 | ol.linenums { 109 | margin-top: 0; 110 | margin-bottom: 0; 111 | } 112 | -------------------------------------------------------------------------------- /detail/jsGrid/operate.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 带排序,删除,编辑功能 7 | 8 | 9 | 10 | 11 | 12 |

带排序,删除,编辑功能

13 |
14 | 15 | 16 | 67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /detail/jsGrid/assets/vendor/pager/jquery.paging.css: -------------------------------------------------------------------------------- 1 | .paging { 2 | display: inline-block; 3 | *zoom: 1; 4 | padding-left: 0; 5 | margin: 20px 0; 6 | } 7 | .paging li { 8 | display: inline; 9 | } 10 | .paging li a, .paging li span { 11 | position: relative; 12 | float: left; 13 | padding: 6px 12px; 14 | line-height: 1.428571429; 15 | text-decoration: none; 16 | background-color: #ffffff; 17 | border: 1px solid #dddddd; 18 | margin-left: -1px; 19 | } 20 | .paging li.first-page a, .paging li.first-page span { 21 | margin-left: 0; 22 | border-bottom-left-radius: 4px; 23 | border-top-left-radius: 4px; 24 | } 25 | .paging li.last-page a, .paging li.last-page span { 26 | border-bottom-right-radius: 4px; 27 | border-top-right-radius: 4px; 28 | } 29 | .paging li a:hover, .paging li span:hover, .paging li a:focus, .paging li span:focus { 30 | background-color: #eeeeee; 31 | } 32 | .paging .current a, .paging .current span, .paging .current a:hover, .paging .current span:hover, .paging .current a:focus, .paging .current span:focus { 33 | z-index: 2; 34 | color: #ffffff; 35 | background-color: #428bca; 36 | border-color: #428bca; 37 | cursor: default; 38 | } 39 | .paging .disabled span, .paging .disabled span:hover, .paging .disabled span:focus, .paging .disabled a, .paging .disabled a:hover, .paging .disabled a:focus { 40 | color: #999999; 41 | background-color: #ffffff; 42 | border-color: #dddddd; 43 | cursor: not-allowed; 44 | } 45 | .paging-lg li a, .paging-lg li span { 46 | padding: 10px 16px; 47 | font-size: 18px; 48 | } 49 | .paging-lg li.first-page a, .paging-lg li.first-page span { 50 | border-bottom-left-radius: 6px; 51 | border-top-left-radius: 6px; 52 | } 53 | .paging-lg li.last-page a, .paging-lg li.last-page span { 54 | border-bottom-right-radius: 6px; 55 | border-top-right-radius: 6px; 56 | } 57 | .paging-sm li a, .paging-sm li span { 58 | padding: 5px 10px; 59 | font-size: 12px; 60 | } 61 | .paging-sm li.first-page a, .paging-sm li.first-page span { 62 | border-bottom-left-radius: 3px; 63 | border-top-left-radius: 3px; 64 | } 65 | .paging-sm li.last-page a, .paging-sm li.last-page span { 66 | border-bottom-right-radius: 3px; 67 | border-top-right-radius: 3px; 68 | } 69 | -------------------------------------------------------------------------------- /detail/jsGrid/data-type.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 不同的数据类型 7 | 8 | 9 | 10 | 11 | 12 |

不同的数据类型

13 |
14 | 15 | 16 | 82 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /detail/jsGrid/ajax.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 异步拿数据 7 | 8 | 9 | 10 | 11 | 12 |

异步拿数据

13 | 14 |
15 | 16 | 17 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /detail/fullpage/assets/demo.css: -------------------------------------------------------------------------------- 1 | /*arrow start*/ 2 | 3 | .tip-arrow { 4 | position: fixed; 5 | bottom: 15px; 6 | width: 24px; 7 | left: 50%; 8 | margin-left: -12px; 9 | animation-name: arrowing; 10 | -webkit-animation-name: arrowing; 11 | animation-duration: 1.5s; 12 | -webkit-animation-duration: 1.5s; 13 | animation-iteration-count: infinite; 14 | -webkit-animation-iteration-count: infinite; 15 | } 16 | 17 | @keyframes arrowing { 18 | 0% { 19 | transform: translateY(0%); 20 | } 21 | 50% { 22 | transform: translateY(50%); 23 | } 24 | 100% { 25 | transform: translateY(0%); 26 | } 27 | } 28 | 29 | @-webkit-keyframes arrowing { 30 | 0% { 31 | -webkit-transform: translateY(0%); 32 | } 33 | 50% { 34 | -webkit-transform: translateY(50%); 35 | } 36 | 100% { 37 | -webkit-transform: translateY(0%); 38 | } 39 | } 40 | /*arrow end*/ 41 | 42 | #fullpage .section { 43 | text-align: center; 44 | color: #fff; 45 | } 46 | 47 | #fullpage .section .anim { 48 | transition: all .5s ease-out; 49 | } 50 | 51 | #fullpage .section .anim { 52 | opacity: 0; 53 | } 54 | 55 | #fullpage .section.page-active .anim { 56 | opacity: 1; 57 | } 58 | 59 | #fullpage .section:nth-child(1) { 60 | background-color: rgb(114, 183, 191); 61 | } 62 | 63 | #fullpage .section:nth-child(1) .anim { 64 | opacity: 0; 65 | } 66 | 67 | #fullpage .section:nth-child(1).page-active .anim { 68 | opacity: 1; 69 | } 70 | 71 | #fullpage .section:nth-child(2) { 72 | position: relative; 73 | background-color: rgb(120, 191, 114); 74 | } 75 | 76 | #fullpage .section:nth-child(2) .anim { 77 | position: absolute; 78 | left: 45%; 79 | top: -100px; 80 | } 81 | 82 | #fullpage .section:nth-child(2).page-active .anim { 83 | top: 45%; 84 | opacity: 1; 85 | } 86 | 87 | #fullpage .section:nth-child(3) { 88 | position: relative; 89 | background-color: rgb(114, 191, 185); 90 | } 91 | 92 | #fullpage .section:nth-child(3) .anim { 93 | position: absolute; 94 | left: -100px; 95 | top: 45%; 96 | } 97 | 98 | #fullpage .section:nth-child(3).page-active .anim { 99 | left: 45%; 100 | } 101 | 102 | #fullpage .section:nth-child(4) { 103 | background-color: rgb(189, 114, 191); 104 | } 105 | 106 | #fullpage .section:nth-child(4) .anim { 107 | opacity: 0; 108 | } 109 | 110 | #fullpage .section:nth-child(4).page-active .anim { 111 | opacity: 1; 112 | } 113 | -------------------------------------------------------------------------------- /detail/fileUpload/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 异步上传文件demo 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /detail/jsDoc/doc/styles/prettify-tomorrow.css: -------------------------------------------------------------------------------- 1 | /* Tomorrow Theme */ 2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */ 3 | /* Pretty printing styles. Used with prettify.js. */ 4 | /* SPAN elements with the classes below are added by prettyprint. */ 5 | /* plain text */ 6 | .pln { 7 | color: #4d4d4c; } 8 | 9 | @media screen { 10 | /* string content */ 11 | .str { 12 | color: #718c00; } 13 | 14 | /* a keyword */ 15 | .kwd { 16 | color: #8959a8; } 17 | 18 | /* a comment */ 19 | .com { 20 | color: #8e908c; } 21 | 22 | /* a type name */ 23 | .typ { 24 | color: #4271ae; } 25 | 26 | /* a literal value */ 27 | .lit { 28 | color: #f5871f; } 29 | 30 | /* punctuation */ 31 | .pun { 32 | color: #4d4d4c; } 33 | 34 | /* lisp open bracket */ 35 | .opn { 36 | color: #4d4d4c; } 37 | 38 | /* lisp close bracket */ 39 | .clo { 40 | color: #4d4d4c; } 41 | 42 | /* a markup tag name */ 43 | .tag { 44 | color: #c82829; } 45 | 46 | /* a markup attribute name */ 47 | .atn { 48 | color: #f5871f; } 49 | 50 | /* a markup attribute value */ 51 | .atv { 52 | color: #3e999f; } 53 | 54 | /* a declaration */ 55 | .dec { 56 | color: #f5871f; } 57 | 58 | /* a variable name */ 59 | .var { 60 | color: #c82829; } 61 | 62 | /* a function name */ 63 | .fun { 64 | color: #4271ae; } } 65 | /* Use higher contrast and text-weight for printable form. */ 66 | @media print, projection { 67 | .str { 68 | color: #060; } 69 | 70 | .kwd { 71 | color: #006; 72 | font-weight: bold; } 73 | 74 | .com { 75 | color: #600; 76 | font-style: italic; } 77 | 78 | .typ { 79 | color: #404; 80 | font-weight: bold; } 81 | 82 | .lit { 83 | color: #044; } 84 | 85 | .pun, .opn, .clo { 86 | color: #440; } 87 | 88 | .tag { 89 | color: #006; 90 | font-weight: bold; } 91 | 92 | .atn { 93 | color: #404; } 94 | 95 | .atv { 96 | color: #060; } } 97 | /* Style */ 98 | /* 99 | pre.prettyprint { 100 | background: white; 101 | font-family: Menlo, Monaco, Consolas, monospace; 102 | font-size: 12px; 103 | line-height: 1.5; 104 | border: 1px solid #ccc; 105 | padding: 10px; } 106 | */ 107 | 108 | /* Specify class=linenums on a pre to get line numbering */ 109 | ol.linenums { 110 | margin-top: 0; 111 | margin-bottom: 0; } 112 | 113 | /* IE indents via margin-left */ 114 | li.L0, 115 | li.L1, 116 | li.L2, 117 | li.L3, 118 | li.L4, 119 | li.L5, 120 | li.L6, 121 | li.L7, 122 | li.L8, 123 | li.L9 { 124 | /* */ } 125 | 126 | /* Alternate shading for lines */ 127 | li.L1, 128 | li.L3, 129 | li.L5, 130 | li.L7, 131 | li.L9 { 132 | /* */ } 133 | -------------------------------------------------------------------------------- /detail/jqueryui/drag-drop-sort.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | // http://api.jqueryui.com/droppable/ 3 | // http://api.jqueryui.com/draggable/ 4 | // http://api.jqueryui.com/sortable/ 5 | var $preview = $('.preview'); 6 | // 拖拽 7 | $preview.sortable({ 8 | connectWith: ".preview", 9 | containment: "parent", 10 | tolerance: 'pointer', 11 | placeholder: "sortable-placeholder", 12 | receive: function(evt, ui) { 13 | ui.helper.width($preview.width()); 14 | } 15 | }).droppable({ 16 | tolerance: "fit",// 完全吻合 17 | drop: function(evt, ui) { 18 | if (ui.helper.hasClass('dragables__item')) { 19 | var $cloneHelper = ui.helper.clone(); 20 | // if($cloneHelper.hasClass('in-preveiew')){ 21 | // console.log('is in preview ' + $cloneHelper.hasClass('in-preveiew')); 22 | // } 23 | // $cloneHelper.addClass('in-preveiew'); 24 | $cloneHelper.draggable({ 25 | start: function(evt, ui) { 26 | $preview.sortable({ 27 | disabled: true 28 | }); 29 | }, 30 | stop: function() { 31 | $preview.sortable({ 32 | disabled: false 33 | }); 34 | 35 | } 36 | }); 37 | var previewL = $preview.offset().left; 38 | var previewT = $preview.offset().top; 39 | var eleL = ui.helper.offset().left; 40 | var eleT = ui.helper.offset().top; 41 | $cloneHelper.css({ 42 | left: eleL- previewL, 43 | top: eleT - previewT 44 | }) 45 | $preview.append($cloneHelper); 46 | ui.helper.remove(); 47 | } 48 | } 49 | }) 50 | .disableSelection(); 51 | 52 | $('.sortables__item').draggable({ 53 | connectToSortable: '.preview', 54 | helper: 'clone', 55 | start: function(evt, ui) { 56 | 57 | } 58 | }); 59 | 60 | $('.dragables__item').draggable({ 61 | helper: 'clone', 62 | start: function(evt, ui) { 63 | $(ui.helper).css({ 64 | width: 50, 65 | height: 50 66 | }); 67 | $preview.sortable({ 68 | disabled: true 69 | }); 70 | }, 71 | stop: function() { 72 | $preview.sortable({ 73 | disabled: false 74 | }); 75 | } 76 | }); 77 | }); 78 | -------------------------------------------------------------------------------- /detail/jquery.slide/add-remove.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 幻灯的内容动态添加,删除 8 | 9 | 10 | 11 | 12 |
13 |
14 |
15 |
16 | 添加 17 | 删除 18 | 19 | 20 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /detail/jsGrid/ajax-paging.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 异步 自带分页 7 | 8 | 9 | 10 | 11 | 12 |

异步 自带分页

13 |

下面的例子是,一下子请求所有的数据;如果每次请求一页的,可以用自定制的分页来做

14 | 15 |
16 | 17 |
18 | 19 | 20 | 86 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /detail/mockajax/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | mock ajax 7 | 8 | 9 | 10 | 11 | 12 | 116 | 117 | 118 | 119 | -------------------------------------------------------------------------------- /detail/jsDoc/doc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Index 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 |

Index

21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |

29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
51 | 52 |
53 |

54 | C:\Users\Administrator\Documents\GitHub\front-end-resource\learn\JSDoc/demo.js 55 |

56 | 57 |
58 | 59 |
60 |
61 | 62 | 63 | 64 | 65 |
jsDoc Demo
66 | 67 | 68 | 69 |
70 | 71 | 72 | 73 |
Version:
74 |
  • 0.0.1
75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 |
Author:
85 |
86 | 89 |
90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 |
Source:
100 |
103 | 104 | 105 | 106 | 107 | 108 |
See:
109 |
110 | 113 |
114 | 115 | 116 | 117 |
118 | 119 | 120 | 121 | 122 |
123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 |
142 | 143 |
144 | 145 | 146 | 147 | 148 |
149 | 150 | 153 | 154 |
155 | 156 | 159 | 160 | 161 | 162 | 163 | -------------------------------------------------------------------------------- /detail/html2canvas/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 将DOM转化成canvas来做截图 7 | 54 | 55 | 56 | 57 |
58 |
59 |
60 |
好好学习,天天向上
61 |
62 | 63 | 64 | 65 | 66 |
67 |
68 | 截图 69 |
70 | 71 |
72 | 73 | 74 | 104 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /detail/jsDoc/doc/global.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Global 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 |

Global

21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 |
29 |

30 | 31 |

32 | 33 |
34 | 35 |
36 |
37 | 38 | 39 | 40 | 41 | 42 | 43 |
44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 |
70 | 71 | 72 | 73 | 74 |
75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 |

Methods

90 | 91 |
92 | 93 |
94 |

foo()

95 | 96 | 97 |
98 |
99 | 100 | 101 |
102 | This is a description of the foo function. 103 |
104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 |
114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 |
Source:
134 |
137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 |
145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 |
159 | 160 |
161 | 162 | 163 | 164 | 165 | 166 |
167 | 168 |
169 | 170 | 171 | 172 | 173 |
174 | 175 | 178 | 179 |
180 | 181 | 184 | 185 | 186 | 187 | 188 | -------------------------------------------------------------------------------- /detail/jsGrid/ajax-paging-user-define.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 异步 自定义分页 7 | 8 | 9 | 10 | 11 | 12 | 13 |

异步 自定义分页

14 |

下面的例子是,一下子请求所有的数据;如果每次请求一页的,可以用自定制的分页来做

15 | 16 |
17 | 18 |
19 | 20 | 21 | 22 | 95 | 96 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /detail/echarts/demos/index.js: -------------------------------------------------------------------------------- 1 | { 2 | // 饼图 3 | { 4 | let option = { 5 | title: { 6 | text: '某站点用户访问来源', 7 | bottom: 0, 8 | left: 'center', 9 | textStyle: { 10 | color: '#666' 11 | } 12 | }, 13 | tooltip: { 14 | trigger: 'item', 15 | formatter: (params, ticket, callback) => { 16 | // data: params.data 传入的数据值 17 | return `渠道:${params.data.name} ${params.data.value}次,占 ${params.percent}%` 18 | } 19 | }, 20 | legend: { 21 | show: false 22 | }, 23 | series: [{ 24 | name: '访问来源', 25 | type: 'pie', 26 | radius: '70%',// 圆的大小 27 | data: [ 28 | { value: 335, name: '直接访问' }, 29 | { value: 310, name: '邮件营销' }, 30 | { value: 234, name: '联盟广告' }, 31 | { value: 135, name: '视频广告' }, 32 | { value: 1548, name: '搜索引擎' } 33 | ], 34 | itemStyle: { 35 | emphasis: { 36 | shadowBlur: 10, 37 | shadowOffsetX: 0, 38 | shadowColor: 'rgba(0, 0, 0, 0.5)' 39 | } 40 | } 41 | }] 42 | } 43 | let myChart = echarts.init(document.querySelector('.pie')); 44 | myChart.setOption(option); 45 | } 46 | // 柱状图 47 | { 48 | let option = { 49 | title: { 50 | text: '某站点用户访问来源', 51 | top: 0, 52 | left: 0, 53 | textStyle: { 54 | color: '#333' 55 | } 56 | }, 57 | tooltip: { 58 | trigger: 'item', 59 | formatter: (params, ticket, callback) => { 60 | // data: params.data 传入的数据值 61 | return params.data 62 | } 63 | }, 64 | legend: { 65 | data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎'], 66 | orient: 'vertical', 67 | right: 0, 68 | top: 0 69 | }, 70 | grid: { 71 | left: '3%', 72 | right: '4%', 73 | bottom: '3%', 74 | containLabel: true 75 | }, 76 | xAxis: { 77 | type: 'category', 78 | data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'] 79 | }, 80 | yAxis: { 81 | type: 'value' 82 | }, 83 | series: [{ 84 | name: '直接访问', 85 | type: 'bar', 86 | stack: '总量', 87 | // markPoint : { 88 | // data : [ 89 | // {type : 'max', name: '最大值'}, 90 | // {type : 'min', name: '最小值'} 91 | // ] 92 | // }, 93 | data: [320, 302, 301, 334, 390, 330, 320] 94 | }, { 95 | name: '邮件营销', 96 | type: 'bar', 97 | stack: '总量', 98 | data: [120, 132, 101, 134, 90, 230, 210] 99 | }, { 100 | name: '联盟广告', 101 | type: 'bar', 102 | stack: '总量', 103 | data: [220, 182, 191, 234, 290, 330, 310] 104 | }, { 105 | name: '视频广告', 106 | type: 'bar', 107 | stack: '总量', 108 | data: [150, 212, 201, 154, 190, 330, 410] 109 | }, { 110 | name: '搜索引擎', 111 | type: 'bar', 112 | stack: '总量', 113 | // label: { 114 | // normal: { 115 | // show: true, 116 | // position: 'insideRight' 117 | // } 118 | // }, 119 | data: [820, 832, 901, 934, 1290, 1330, 1320] 120 | }] 121 | }; 122 | let myChart = echarts.init(document.querySelector('.bar')); 123 | myChart.setOption(option); 124 | } 125 | 126 | } -------------------------------------------------------------------------------- /detail/iSlider/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 66 | 67 | 68 | 69 |

文字轮播

70 |
71 |
72 |
73 |

图片轮播

74 |
75 |
76 |
77 | 78 | 79 | 127 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /detail/validate/assets/js/demo.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | // just for the demos, avoids form submit 3 | // $.validator.setDefaults({ 4 | // debug: true, 5 | // success: "valid" 6 | // }); 7 | var $validInJsForm = $('.valid-in-js-form'); 8 | 9 | $.validator.addMethod("kouling", function(value, element, params) { 10 | $.validator.messages["kouling"] = '随机错误信息' + Math.random(); // 控制错误信息 11 | return this.optional(element) || value === 'abc' ; 12 | }, "请输入正确的口令"); 13 | // 表单验证 14 | var validator = $validInJsForm.validate({ 15 | rules: { 16 | "name": { 17 | "required": true, 18 | remote: "assets/test-data/succ.json"// 成功 19 | // remote: "assets/test-data/fail-false.json"// 失败 简单的返回false 20 | // remote: {// 失败 返回自定义的错误信息 21 | // url:"assets/test-data/fail-msg.json", 22 | // data: { 23 | // othersData: function() { 24 | // return $( "#name" ).val(); 25 | // } 26 | // } 27 | // } 28 | }, 29 | "kouling": { 30 | "required": true, 31 | "kouling": true 32 | }, 33 | "email": "email", // 要么不输入,要么是正确的邮箱格式 34 | password: { 35 | "required": true, 36 | "rangelength": [2, 16] 37 | }, 38 | "password-again": { 39 | "required": true, 40 | equalTo: "#password" 41 | }, 42 | // phone: { 43 | // require_from_group: [1, '.contract-group'] 44 | // }, 45 | // mobile: { 46 | // require_from_group: [1, '.contract-group'] 47 | // }, 48 | agree: 'required' 49 | }, 50 | messages: { 51 | "name": { 52 | required: "请输入用户名" 53 | , remote: "用户名已存在" // 如果返回false,则用这个错误信息,如果是字符串,则显示这个字符串 54 | }, 55 | "email": "请输入有效邮箱", 56 | password: { 57 | "required": '请输入密码', 58 | "rangelength": '密码长度在2到16个字符之间' 59 | }, 60 | "password-again": { 61 | required: '请再次输入密码', 62 | equalTo: '两次输入的密码不一致' 63 | }, 64 | agree: "请同意" 65 | // phone: { 66 | // '至少填一个联系方式' 67 | // } 68 | }, 69 | errorPlacement: function($errMsg, $input) { 70 | $input.closest('.form-group').find('.status').append($errMsg); 71 | }, 72 | success: function($label) { 73 | // set   as text for IE 74 | $label.html(" ").addClass("checked"); 75 | }, 76 | // 错误时 77 | highlight: function(input, errorClass) { 78 | $(input).closest('.form-group').find("." + errorClass).removeClass("checked"); 79 | }, 80 | submitHandler: function(form) { 81 | // fix 循环进这个方法的bug 82 | // var clonedForm = $validInJsForm.cloneForm(); 83 | // $('body').append(clonedForm); 84 | // clonedForm.submit(); 85 | // $validInJsForm.submit(); // 用这个方式会进入无限循环提交。。。 86 | form.submit();// 只需这样写即可,呵呵呵 87 | } 88 | }); 89 | 90 | // 主动验证 91 | $('.valid-btn').click(function () { 92 | $validInJsForm.valid(); 93 | }); 94 | 95 | // 隐藏所有错误信息 96 | $('.hide-error-btn').click(function () { 97 | validator.resetForm(); 98 | }); 99 | 100 | // formnovalidate 是放在提交按钮上的,要么就是整个表单都不验证,要么都验证 101 | 102 | // fix jquery http://bugs.jquery.com/ticket/3016 103 | // https://github.com/spencertipping/jquery.fix.clone/blob/master/jquery.fix.clone.js 104 | $.fn.cloneForm = function() { 105 | var $form = $(this); 106 | var $clonedForm = $form.clone(); 107 | var $missingClonedInput = $clonedForm.find('textarea,select'); 108 | $form.find('textarea,select').each(function(index) { 109 | $missingClonedInput.eq(index).val($(this).val()); 110 | }); 111 | return $clonedForm; 112 | } 113 | }) 114 | -------------------------------------------------------------------------------- /detail/validate/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | .Validate demo 7 | 8 | 9 | 10 | 11 | 12 |
13 |
14 | 表单验证-验证规则写在js中 15 |
16 | 17 |
18 | 19 |
20 |
21 |
22 |
23 | 24 |
25 | 26 |
27 |
28 |
29 | 30 |
31 | 32 |
33 | 34 |
35 |
36 |
37 | 38 |
39 | 40 |
41 | 42 |
43 |
44 |
45 | 46 |
47 | 48 |
49 | 50 |
51 |
52 |
53 | 54 | 71 |
72 | 73 |
74 | 75 |
76 |
77 |
78 |
79 |
80 | 81 | 主动验证 82 | 隐藏所有错误信息 83 |
84 |
85 |
86 |
87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | -------------------------------------------------------------------------------- /detail/datepicker/assets/js/index.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function(argument) { 2 | var timeTool = { 3 | formatTime: function(date, split) { 4 | var y = date.getFullYear(); 5 | var m = date.getMonth() + 1; 6 | var d = date.getDate(); 7 | split = split || '/' 8 | return [y, this.fillZero(m), this.fillZero(d)].join(split); 9 | }, 10 | fillZero: function(num) { 11 | num = parseInt(num, 10); 12 | return num < 10 ? '0' + num : num; 13 | } 14 | }; 15 | 16 | 17 | var now = new Date(); 18 | var min = new Date(); 19 | min.setDate(min.getDate() - 10); 20 | var $input = $('.calender.input'); 21 | $input.val(timeTool.formatTime(now)); 22 | 23 | var todayStartTime = getTodayTime('start'); 24 | var todayEndTime = getTodayTime('end'); 25 | // 只能选今天以及今天之后的 26 | (function() { 27 | $('#after-today-date').DatePicker({ 28 | mode: 'single', 29 | date: timeTool.formatTime(now), 30 | onBeforeShow: function(el) { 31 | if ($('#inputDate').val()) { 32 | $('#inputDate').DatePickerSetDate($('#inputDate').val(), true); 33 | } 34 | }, 35 | onChange: function(date, el) { 36 | $(el).val(timeTool.formatTime(date)); 37 | $(el).DatePickerHide(); 38 | }, 39 | onRenderCell: function(elem, date) { 40 | var disabled; 41 | var className; 42 | // 不能选择今天以及之前的时间 43 | if (date.getTime() < todayStartTime) { 44 | disabled = true; 45 | className = 'disabled-cell'; 46 | } else { 47 | disabled = false; 48 | className = 'enabled-cell'; 49 | } 50 | return { 51 | disabled: disabled, 52 | className: className 53 | }; 54 | } 55 | }); 56 | })(); 57 | 58 | // 只能选今天以及今天之前的 59 | (function() { 60 | $('#before-today-date').DatePicker({ 61 | mode: 'single', 62 | date: timeTool.formatTime(now), 63 | onBeforeShow: function(el) { 64 | if ($('#inputDate').val()) { 65 | $('#inputDate').DatePickerSetDate($('#inputDate').val(), true); 66 | } 67 | }, 68 | onChange: function(date, el) { 69 | $(el).val(timeTool.formatTime(date)); 70 | $(el).DatePickerHide(); 71 | }, 72 | onRenderCell: function(elem, date) { 73 | var disabled; 74 | var className; 75 | if (date.getTime() > todayEndTime) { 76 | disabled = true; 77 | className = 'disabled-cell'; 78 | } else { 79 | disabled = false; 80 | className = 'enabled-cell'; 81 | } 82 | return { 83 | disabled: disabled, 84 | className: className 85 | }; 86 | } 87 | }); 88 | })(); 89 | 90 | // 选取一段时间 91 | (function() { 92 | var $date = $('#range-date'); 93 | var from = new Date(); 94 | var to = new Date(); 95 | to.setDate(to.getDate() + 15); 96 | $date.val([timeTool.formatTime(from), timeTool.formatTime(to)].join('-')); 97 | $date.DatePicker({ 98 | mode: 'range', 99 | calendars: 3, 100 | date: [from, to], 101 | onChange: function(dates, el) { 102 | if (timeTool.formatTime(dates[0]) !== timeTool.formatTime(dates[1])) { 103 | var val = [timeTool.formatTime(dates[0]), timeTool.formatTime(dates[1])].join('-'); 104 | $(el).val(val); 105 | $(el).DatePickerHide(); 106 | } 107 | } 108 | }); 109 | })(); 110 | 111 | 112 | function getTodayTime(type) { 113 | var now = new Date(); 114 | var d = new Date([now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/')); 115 | var time; 116 | if (type == 'start') { 117 | time = d.getTime() - 1; 118 | } else { 119 | d.setDate(d.getDate() + 1); 120 | time = d.getTime() - 1; 121 | } 122 | return time; 123 | } 124 | }); 125 | -------------------------------------------------------------------------------- /detail/fullpage/assets/vendor/js/jquery.slimscroll.min.js: -------------------------------------------------------------------------------- 1 | /*! Copyright (c) 2011 Piotr Rochala (http://rocha.la) 2 | * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 3 | * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. 4 | * 5 | * Version: 1.3.2 (modified for fullpage.js ) (v 1.1) 6 | * 7 | */ 8 | (function(f){jQuery.fn.extend({slimScroll:function(g){var a=f.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},g);this.each(function(){function m(d){if(u){d=d|| 9 | window.event;var c=0;d.wheelDelta&&(c=-d.wheelDelta/120);d.detail&&(c=d.detail/3);f(d.target||d.srcTarget||d.srcElement).closest("."+a.wrapperClass).is(b.parent())&&n(c,!0);d.preventDefault&&!k&&d.preventDefault();k||(d.returnValue=!1)}}function n(d,f,g){k=!1;var e=d,h=b.outerHeight()-c.outerHeight();f&&(e=parseInt(c.css("top"))+d*parseInt(a.wheelStep)/100*c.outerHeight(),e=Math.min(Math.max(e,0),h),e=0=b.outerHeight()?k=!0:(c.stop(!0,!0).fadeIn("fast"),a.railVisible&&h.stop(!0,!0).fadeIn("fast"))}function q(){a.alwaysVisible||(B=setTimeout(function(){a.disableFadeOut&&u||y||z||(c.fadeOut("slow"),h.fadeOut("slow"))}, 12 | 1E3))}var u,y,z,B,A,v,l,C,k=!1,b=f(this);if(b.parent().hasClass(a.wrapperClass)){var p=b.scrollTop(),c=b.parent().find("."+a.barClass),h=b.parent().find("."+a.railClass);x();if(f.isPlainObject(g)){if("height"in g&&"auto"==g.height){b.parent().css("height","auto");b.css("height","auto");var r=b.parent().parent().height();b.parent().css("height",r);b.css("height",r)}if("scrollTo"in g)p=parseInt(a.scrollTo);else if("scrollBy"in g)p+=parseInt(a.scrollBy);else if("destroy"in g){E();c.remove();h.remove(); 13 | b.unwrap();return}n(p,!1,!0)}}else{a.height="auto"==g.height?b.parent().height():g.height;p=f("
").addClass(a.wrapperClass).css({position:"relative",overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden",width:a.width,height:a.height});var h=f("
").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.railBorderRadius,background:a.railColor,opacity:a.railOpacity, 14 | zIndex:90}),c=f("
").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible?"block":"none","border-radius":a.borderRadius,BorderRadius:a.borderRadius,MozBorderRadius:a.borderRadius,WebkitBorderRadius:a.borderRadius,zIndex:99}),r="right"==a.position?{right:a.distance}:{left:a.distance};h.css(r);c.css(r);b.wrap(p);b.parent().append(c);b.parent().append(h);a.railDraggable&&c.bind("mousedown",function(a){var b=f(document); 15 | z=!0;t=parseFloat(c.css("top"));pageY=a.pageY;b.bind("mousemove.slimscroll",function(a){currTop=t+a.pageY-pageY;c.css("top",currTop);n(0,c.position().top,!1)});b.bind("mouseup.slimscroll",function(a){z=!1;q();b.unbind(".slimscroll")});return!1}).bind("selectstart.slimscroll",function(a){a.stopPropagation();a.preventDefault();return!1});h.hover(function(){w()},function(){q()});c.hover(function(){y=!0},function(){y=!1});b.hover(function(){u=!0;w();q()},function(){u=!1;q()});b.bind("touchstart",function(a, 16 | b){a.originalEvent.touches.length&&(A=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){k||b.originalEvent.preventDefault();b.originalEvent.touches.length&&(n((A-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0),A=b.originalEvent.touches[0].pageY)});x();"bottom"===a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),n(0,!0)):"top"!==a.start&&(n(f(a.start).position().top,null,!0),a.alwaysVisible||c.hide());D()}});return this}});jQuery.fn.extend({slimscroll:jQuery.fn.slimScroll})})(jQuery); -------------------------------------------------------------------------------- /detail/tagcanvas/demo.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function() { 2 | var tool = { 3 | $el: $('#tags'), 4 | init: function() { 5 | this.$dataWrap = this.$el.find('ul'); 6 | }, 7 | make: function(makeNum) { 8 | makeNum = makeNum || this.MAKENUM; 9 | var html = []; 10 | for (var i = 0; i < makeNum; i++) { 11 | html.push(this.makeItem(false, false, i)); 12 | } 13 | this.$dataWrap.html(html.join('')); 14 | }, 15 | makeItem: function(isNew, url, index) { 16 | var imgPrefix; 17 | var picIndex; 18 | if (isNew) { 19 | // 新人加入 todo just for test 20 | picIndex = Math.floor(Math.random() * 2) + 1; 21 | url = 'assets/img/avatar/n-' + picIndex + '.png'; 22 | } else { 23 | picIndex = Math.floor(Math.random() * this.PIC_NUM) + 1; 24 | url = 'assets/img/avatar/p-' + picIndex + '.png'; 25 | } 26 | return '
  • ' + 27 | // '

    ' + index + '

    ' + 28 | '' + 29 | '
  • '; 30 | }, 31 | PIC_NUM: 4, 32 | MAKENUM: 50 // 图案数量 33 | } 34 | 35 | tool.init(); 36 | tool.make(); 37 | 38 | var $canvasWrap = $('#canvas-wrap'); 39 | var $canvas = $('#canvas'); 40 | 41 | function start() { 42 | var canRun = $('#canvas').tagcanvas({ 43 | textColour: '#ff0000', 44 | // outlineThickness: 1, 45 | maxSpeed: 0.03, 46 | minSpeed: 0.01, 47 | initial: [0.01, 0.01], // 开始的时候自动 48 | depth: 0.75, 49 | imageMode: 'both', 50 | wheelZoom: false 51 | }, 'tags'); 52 | if (!canRun) { 53 | $('#canvas-wrap').hide(); 54 | } 55 | } 56 | 57 | start(); 58 | 59 | $('#pause-btn').click(function() { 60 | $canvas.tagcanvas("pause"); 61 | }); 62 | 63 | $('#resume-btn').click(function() { 64 | $canvas.tagcanvas("resume"); 65 | }); 66 | 67 | $('#add-btn').click(function() { 68 | addOne().done(function() { 69 | start(); 70 | $('#total-num').text(tool.$dataWrap.find('li').length); 71 | 72 | setTimeout(function() { 73 | $canvas.tagcanvas("tagtofront", { 74 | index: tool.$dataWrap.find('li').length - 1, 75 | callback: function() { 76 | $canvas.tagcanvas("setspeed", [0.01, 0.01]); 77 | } 78 | }); 79 | }, 0); 80 | }); 81 | 82 | }); 83 | 84 | $('#add-multi-btn').click(function() { 85 | multiAdd(20, function(){ 86 | start(); 87 | setTimeout(function() { 88 | $canvas.tagcanvas("tagtofront", { 89 | index: tool.$dataWrap.find('li').length - 1, 90 | callback: function() { 91 | $canvas.tagcanvas("setspeed", [0.01, 0.01]); 92 | } 93 | }); 94 | }, 0); 95 | }) 96 | }); 97 | 98 | function multiAdd(times, done) { 99 | if (times > 0) { 100 | addOne().done(function () { 101 | multiAdd(times - 1, done); 102 | }); 103 | } else { 104 | done(); 105 | } 106 | } 107 | 108 | function addOne(url) { 109 | var dfd = $.Deferred(); 110 | $canvas.tagcanvas("pause"); 111 | var $newItem = $(tool.makeItem(true, '', tool.$dataWrap.find('li').length)); 112 | $animItem = $newItem.clone(); 113 | $animItem.addClass('anim-start'); 114 | $canvasWrap.append($animItem); 115 | $animItem.animate({ 116 | 'margin-left': 0, 117 | 'margin-top': 0, 118 | opacity: 0, 119 | height: 0, 120 | width: 0 121 | }, 2000, function() { 122 | $animItem.remove(); 123 | tool.$dataWrap.append($newItem); 124 | dfd.resolve(); 125 | }); 126 | return dfd.promise(); 127 | 128 | // 修改某个图标 129 | // var toUpdateIndex = Math.floor(Math.random() * tool.MAKENUM) + 1; 130 | // var $targetImg = tool.$dataWrap.find('li').eq(toUpdateIndex).find('img'); 131 | // $targetImg.attr('src', 'img/avatar/n-special.jpg'); 132 | // $canvas.tagcanvas("tagtofront", { 133 | // index: toUpdateIndex, 134 | // callback: function() { 135 | // start(); 136 | // } 137 | // }); 138 | 139 | // $canvas.tagcanvas("setspeed", [0.01, 0.01]); 140 | } 141 | 142 | }); 143 | -------------------------------------------------------------------------------- /detail/konsole/assets/konsole.css: -------------------------------------------------------------------------------- 1 | #konsole { 2 | display: none; 3 | position: fixed; 4 | z-index: 100000; 5 | top: 0; 6 | left: 0; 7 | width: 100%; 8 | background-color: #222; 9 | background: rgba(0, 0, 0, 0.6); 10 | font-family: "Source Code Pro", "Consolas", "Monaco", "Lucida Console", "Courier New", monospace; 11 | font-size: 12px; 12 | color: #E1E1E1; 13 | line-height: 13px; 14 | transition: all .25s; 15 | } 16 | #konsole span { 17 | clear: left; 18 | float: left; 19 | } 20 | #konsole span.klo { 21 | float: none; 22 | cursor: pointer; 23 | } 24 | #konsole span.klc { 25 | float: none; 26 | display: none; 27 | } 28 | #konsole span.klx { 29 | float: none; 30 | cursor: pointer; 31 | } 32 | #konsole p { 33 | font-family: inherit; 34 | font-size: inherit; 35 | line-height: inherit; 36 | color: inherit; 37 | float: left; 38 | padding: 0 40px 0 5px; 39 | margin: 0; 40 | } 41 | #konsole .log { 42 | position: initial; 43 | background: inherit; 44 | padding: 5px 5px; 45 | width: auto; 46 | overflow: hidden; 47 | transition: all .25s; 48 | -webkit-box-sizing: initial; 49 | -moz-box-sizing: initial; 50 | box-sizing: initial; 51 | } 52 | #konsole .log .wrapped { 53 | position: initial; 54 | background: transparent; 55 | padding: 0 5px 0 0; 56 | width: 100%; 57 | overflow: hidden; 58 | } 59 | #konsole.touchable .log .wrapped { 60 | overflow: auto; 61 | -webkit-overflow-scrolling: touch; 62 | -ms-overflow-style: -ms-autohiding-scrollbar; 63 | width: 100% !important; 64 | } 65 | #konsole.touchable .log .wrapped::-webkit-scrollbar { 66 | display: none; 67 | } 68 | #konsole .cmdline { 69 | position: initial; 70 | background-color: #111; 71 | background: rgba(0, 0, 0, 0.8); 72 | padding: 0 5px; 73 | width: auto; 74 | height: 20px; 75 | outline-width: 0; 76 | border: none; 77 | border-top: 1px solid #333; 78 | box-shadow: 0 5px 5px #222; 79 | -webkit-box-sizing: initial; 80 | -moz-box-sizing: initial; 81 | box-sizing: initial; 82 | } 83 | #konsole .cmdline input { 84 | width: 100%; 85 | height: 20px; 86 | outline-width: 0; 87 | border: none; 88 | padding: 2px; 89 | background-color: transparent; 90 | font-family: inherit; 91 | font-size: inherit; 92 | color: #AAA; 93 | } 94 | #konsole .cmdline input:focus { 95 | border-color: transparent; 96 | -webkit-box-shadow: initial; 97 | box-shadow: initial; 98 | -webkit-box-sizing: initial; 99 | -moz-box-sizing: initial; 100 | box-sizing: initial; 101 | } 102 | #konsole .log-log { 103 | color: #E1E1E1; 104 | } 105 | #konsole .log-css span { 106 | clear: initial; 107 | float: initial 108 | } 109 | #konsole .log-css span.selector { 110 | color: #D52462; 111 | } 112 | #konsole .log-css span.property { 113 | color: #55EDF1; 114 | } 115 | #konsole .log-css span.comment { 116 | color: #999999; 117 | } 118 | #konsole .log-info { 119 | color: #5ADDFA; 120 | } 121 | #konsole .log-event { 122 | color: #0FF113; 123 | } 124 | #konsole .log-error { 125 | color: #E70707; 126 | } 127 | #konsole .log-warn { 128 | color: #FD9720; 129 | } 130 | #konsole .log-system { 131 | color: #999999; 132 | } 133 | #konsole .inspect { 134 | cursor: pointer; 135 | } 136 | #konsole .inspect.full { 137 | display: none; 138 | } 139 | #konsole code { 140 | font-family: inherit; 141 | font-size: 100%; 142 | padding: 0; 143 | margin: 0; 144 | width: auto; 145 | height: auto; 146 | background: initial; 147 | } 148 | #konsole code span { 149 | clear: initial; 150 | float: none; 151 | } 152 | #konsole-highlight { 153 | display: none; 154 | position: absolute; 155 | z-index: 99999; 156 | background-color: #EEBE44; 157 | opacity: 0.4; 158 | } 159 | .konsole-monitor { 160 | position: fixed; 161 | top: 5px; 162 | right: 5px; 163 | z-index: 10000000; 164 | background-color: #222; 165 | background: rgba(0, 0, 0, 0.6); 166 | font-family: "Source Code Pro", "Lucida Console", "Monaco", "Courier New", monospace; 167 | font-size: 12px; 168 | color: #E1E1E1; 169 | line-height: 13px; 170 | box-shadow: 0 3px 5px #222; 171 | -webkit-box-sizing: initial; 172 | -moz-box-sizing: initial; 173 | box-sizing: initial; 174 | padding: 19px 5px 5px 5px; 175 | -webkit-touch-callout: none; 176 | -webkit-user-select: none; 177 | -moz-user-select: none; 178 | -ms-user-select: none; 179 | user-select: none; 180 | } 181 | .konsole-monitor .close { 182 | position: absolute; 183 | right: 3px; 184 | top: 1px; 185 | color: black; 186 | font-size: 90%; 187 | cursor: pointer; 188 | } 189 | .konsole-monitor .values { 190 | cursor: default !important; 191 | } 192 | .konsole-touch { 193 | width: 25px; 194 | height: 25px; 195 | position: fixed; 196 | bottom: 0; 197 | right: 0; 198 | z-index: 10000000; 199 | } -------------------------------------------------------------------------------- /detail/datepicker/assets/vendor/css/base.css: -------------------------------------------------------------------------------- 1 | div.datepicker { 2 | position: relative; 3 | font-family: Arial, Helvetica, sans-serif; 4 | font-size: 12px; 5 | width: 196px; 6 | height: 147px; 7 | position: absolute; 8 | cursor: default; 9 | top: 0; 10 | left: 0; 11 | display: none; 12 | } 13 | .datepickerContainer { 14 | position: absolute; 15 | } 16 | 17 | /* Hide border divs by default */ 18 | .datepickerBorderT, 19 | .datepickerBorderB, 20 | .datepickerBorderL, 21 | .datepickerBorderR, 22 | .datepickerBorderTL, 23 | .datepickerBorderTR, 24 | .datepickerBorderBL, 25 | .datepickerBorderBR { 26 | display:none; 27 | } 28 | 29 | .datepickerHidden { 30 | display: none; 31 | } 32 | div.datepicker table { 33 | border-collapse:collapse; 34 | } 35 | div.datepicker a { 36 | color: black; 37 | text-decoration: none; 38 | cursor: default; 39 | outline: none; 40 | } 41 | div.datepicker table td { 42 | text-align: center; 43 | padding: 0; 44 | margin: 0; 45 | } 46 | div.datepicker th { 47 | text-align: center; 48 | color: #666666; 49 | font-weight: normal; 50 | padding:0; 51 | } 52 | div.datepicker tbody a { 53 | display: block; 54 | } 55 | .datepickerDays a { 56 | width: 20px; 57 | line-height: 16px; 58 | height: 16px; 59 | padding-right: 2px; 60 | } 61 | .datepickerYears a, 62 | .datepickerMonths a{ 63 | width: 39px; 64 | line-height: 36px; 65 | height: 36px; 66 | text-align: center; 67 | } 68 | .datepickerMonths td:first-child a, 69 | .datepickerMonths td:last-child a, 70 | .datepickerYears td:first-child a, 71 | .datepickerYears td:last-child a { 72 | width:38px; 73 | } 74 | td.datepickerNotInMonth a { 75 | color: #666666; 76 | } 77 | tbody.datepickerDays td.datepickerSelected{ 78 | background: #136A9F; 79 | } 80 | tbody.datepickerDays td.datepickerNotInMonth.datepickerSelected { 81 | background: #17384d; 82 | } 83 | tbody.datepickerYears td.datepickerSelected, 84 | tbody.datepickerMonths td.datepickerSelected{ 85 | background: #17384d; 86 | } 87 | div.datepicker td.datepickerSelected a { 88 | color:white; 89 | } 90 | div.datepicker a:hover, 91 | div.datepicker a:hover { 92 | color: #88c5eb; 93 | } 94 | div.datepicker td.datepickerNotInMonth a:hover { 95 | color: #999999; 96 | } 97 | .datepickerSpace div { 98 | width: 20px; 99 | } 100 | .datepickerBlock { 101 | vertical-align:top; 102 | } 103 | a.datepickerGoNext, 104 | a.datepickerGoPrev, 105 | a.datepickerMonth { 106 | text-align: center; 107 | height: 20px; 108 | line-height: 20px; 109 | float:left; 110 | } 111 | div.datepicker th a.datepickerGoNext, 112 | div.datepicker th a.datepickerGoPrev { 113 | width: 20px; 114 | color: #666666; 115 | display:none; 116 | } 117 | div.datepicker th a.datepickerMonth { 118 | width:114px; 119 | display:block; 120 | } 121 | /* Only display the previous/next arrows on the first/last calendars */ 122 | div.datepicker .datepickerFirstView th a.datepickerGoPrev, 123 | div.datepicker .datepickerLastView th a.datepickerGoNext { 124 | display:block; 125 | } 126 | /* Compensate for the space lost by not having a previous arrow */ 127 | div.datepicker th a.datepickerMonth { 128 | margin-left:20px; 129 | } 130 | div.datepicker .datepickerFirstView th a.datepickerMonth { 131 | margin-left:0; 132 | } 133 | /* Day mode calendar body */ 134 | table.datepickerViewDays tbody.datepickerMonths, 135 | table.datepickerViewDays tbody.datepickerYears { 136 | display: none; 137 | } 138 | /* Month mode calendar body */ 139 | table.datepickerViewMonths tbody.datepickerDays, 140 | table.datepickerViewMonths tbody.datepickerYears, 141 | table.datepickerViewMonths tr.datepickerDoW { 142 | display: none; 143 | } 144 | /* Year mode calendar body */ 145 | table.datepickerViewYears tbody.datepickerDays, 146 | table.datepickerViewYears tbody.datepickerMonths, 147 | table.datepickerViewYears tr.datepickerDoW { 148 | display: none; 149 | } 150 | td.datepickerDisabled a, 151 | td.datepickerDisabled.datepickerNotInMonth a{ 152 | color: #555555; 153 | } 154 | td.datepickerDisabled a:hover { 155 | color: #333333; 156 | } 157 | /* Not used by default, calendar cells can be marked as special if desired (doesn't seem to be totally working) */ 158 | div.datepicker tbody.datepickerDays td.datepickerSpecial a { 159 | background: #770000; 160 | color:white; 161 | } 162 | div.datepicker tbody.datepickerDays td.datepickerSpecial.datepickerSelected a { 163 | background: #aa0000; 164 | } 165 | 166 | /* style the 'not in month' day cell away */ 167 | tbody.datepickerDays td.datepickerNotInMonth.datepickerSelected { 168 | background-color:transparent; 169 | } 170 | div.datepicker td.datepickerNotInMonth a span { 171 | display:none; 172 | } 173 | div.datepicker td.datepickerNotInMonth a:hover span { 174 | display:none; 175 | } 176 | div.datepicker tbody.datepickerDays td.datepickerNotInMonth:hover { 177 | background-color: transparent; 178 | } 179 | 180 | div.datepicker td.disabled-cell a{ 181 | color: #DDDDDD !important; 182 | } 183 | div.datepicker td.enabled-cell a{ 184 | color: black !important; 185 | } 186 | div.datepicker td.datepickerSelected a{ 187 | color: #fff !important; 188 | } -------------------------------------------------------------------------------- /detail/fullpage/assets/vendor/css/jquery.fullPage.css: -------------------------------------------------------------------------------- 1 | /** 2 | * fullPage 2.6.4 3 | * https://github.com/alvarotrigo/fullPage.js 4 | * MIT licensed 5 | * 6 | * Copyright (C) 2013 alvarotrigo.com - A project by Alvaro Trigo 7 | */ 8 | html.fp-enabled, 9 | .fp-enabled body { 10 | margin: 0; 11 | padding: 0; 12 | overflow:hidden; 13 | 14 | /*Avoid flicker on slides transitions for mobile phones #336 */ 15 | -webkit-tap-highlight-color: rgba(0,0,0,0); 16 | } 17 | #superContainer { 18 | height: 100%; 19 | position: relative; 20 | 21 | /* Touch detection for Windows 8 */ 22 | -ms-touch-action: none; 23 | 24 | /* IE 11 on Windows Phone 8.1*/ 25 | touch-action: none; 26 | } 27 | .fp-section { 28 | position: relative; 29 | -webkit-box-sizing: border-box; /* Safari<=5 Android<=3 */ 30 | -moz-box-sizing: border-box; /* <=28 */ 31 | box-sizing: border-box; 32 | } 33 | .fp-slide { 34 | float: left; 35 | } 36 | .fp-slide, .fp-slidesContainer { 37 | height: 100%; 38 | display: block; 39 | } 40 | .fp-slides { 41 | z-index:1; 42 | height: 100%; 43 | overflow: hidden; 44 | position: relative; 45 | -webkit-transition: all 0.3s ease-out; /* Safari<=6 Android<=4.3 */ 46 | transition: all 0.3s ease-out; 47 | } 48 | .fp-section.fp-table, .fp-slide.fp-table { 49 | display: table; 50 | table-layout:fixed; 51 | width: 100%; 52 | } 53 | .fp-tableCell { 54 | display: table-cell; 55 | vertical-align: middle; 56 | width: 100%; 57 | height: 100%; 58 | } 59 | .fp-slidesContainer { 60 | float: left; 61 | position: relative; 62 | } 63 | .fp-controlArrow { 64 | position: absolute; 65 | z-index: 4; 66 | top: 50%; 67 | cursor: pointer; 68 | width: 0; 69 | height: 0; 70 | border-style: solid; 71 | margin-top: -38px; 72 | -webkit-transform: translate3d(0,0,0); 73 | -ms-transform: translate3d(0,0,0); 74 | transform: translate3d(0,0,0); 75 | } 76 | .fp-controlArrow.fp-prev { 77 | left: 15px; 78 | width: 0; 79 | border-width: 38.5px 34px 38.5px 0; 80 | border-color: transparent #fff transparent transparent; 81 | } 82 | .fp-controlArrow.fp-next { 83 | right: 15px; 84 | border-width: 38.5px 0 38.5px 34px; 85 | border-color: transparent transparent transparent #fff; 86 | } 87 | .fp-scrollable { 88 | overflow: scroll; 89 | } 90 | .fp-notransition { 91 | -webkit-transition: none !important; 92 | transition: none !important; 93 | } 94 | #fp-nav { 95 | position: fixed; 96 | z-index: 100; 97 | margin-top: -32px; 98 | top: 50%; 99 | opacity: 1; 100 | -webkit-transform: translate3d(0,0,0); 101 | } 102 | #fp-nav.right { 103 | right: 17px; 104 | } 105 | #fp-nav.left { 106 | left: 17px; 107 | } 108 | .fp-slidesNav{ 109 | position: absolute; 110 | z-index: 4; 111 | left: 50%; 112 | opacity: 1; 113 | } 114 | .fp-slidesNav.bottom { 115 | bottom: 17px; 116 | } 117 | .fp-slidesNav.top { 118 | top: 17px; 119 | } 120 | #fp-nav ul, 121 | .fp-slidesNav ul { 122 | margin: 0; 123 | padding: 0; 124 | } 125 | #fp-nav ul li, 126 | .fp-slidesNav ul li { 127 | display: block; 128 | width: 14px; 129 | height: 13px; 130 | margin: 7px; 131 | position:relative; 132 | } 133 | .fp-slidesNav ul li { 134 | display: inline-block; 135 | } 136 | #fp-nav ul li a, 137 | .fp-slidesNav ul li a { 138 | display: block; 139 | position: relative; 140 | z-index: 1; 141 | width: 100%; 142 | height: 100%; 143 | cursor: pointer; 144 | text-decoration: none; 145 | } 146 | #fp-nav ul li a.active span, 147 | .fp-slidesNav ul li a.active span, 148 | #fp-nav ul li:hover a.active span, 149 | .fp-slidesNav ul li:hover a.active span{ 150 | height: 12px; 151 | width: 12px; 152 | margin: -6px 0 0 -6px; 153 | border-radius: 100%; 154 | } 155 | #fp-nav ul li a span, 156 | .fp-slidesNav ul li a span { 157 | border-radius: 50%; 158 | position: absolute; 159 | z-index: 1; 160 | height: 4px; 161 | width: 4px; 162 | border: 0; 163 | background: #333; 164 | left: 50%; 165 | top: 50%; 166 | margin: -2px 0 0 -2px; 167 | -webkit-transition: all 0.1s ease-in-out; 168 | -moz-transition: all 0.1s ease-in-out; 169 | -o-transition: all 0.1s ease-in-out; 170 | transition: all 0.1s ease-in-out; 171 | } 172 | #fp-nav ul li:hover a span, 173 | .fp-slidesNav ul li:hover a span{ 174 | width: 10px; 175 | height: 10px; 176 | margin: -5px 0px 0px -5px; 177 | } 178 | #fp-nav ul li .fp-tooltip { 179 | position: absolute; 180 | top: -2px; 181 | color: #fff; 182 | font-size: 14px; 183 | font-family: arial, helvetica, sans-serif; 184 | white-space: nowrap; 185 | max-width: 220px; 186 | overflow: hidden; 187 | display: block; 188 | opacity: 0; 189 | width: 0; 190 | } 191 | #fp-nav ul li:hover .fp-tooltip, 192 | #fp-nav.fp-show-active a.active + .fp-tooltip { 193 | -webkit-transition: opacity 0.2s ease-in; 194 | transition: opacity 0.2s ease-in; 195 | width: auto; 196 | opacity: 1; 197 | } 198 | #fp-nav ul li .fp-tooltip.right { 199 | right: 20px; 200 | } 201 | #fp-nav ul li .fp-tooltip.left { 202 | left: 20px; 203 | } 204 | -------------------------------------------------------------------------------- /detail/Arbiter/Arbiter.js: -------------------------------------------------------------------------------- 1 | /* 2 | Arbiter.js 3 | by Matt Kruse 4 | http://ArbiterJS.com - See site for documentation 5 | 6 | This work is in the public domain and may be used in any way, for any purpose, without restriction. 7 | */ 8 | var Arbiter = (function () { 9 | var create_arbiter = function () { 10 | var subscriptions = {}; 11 | var wildcard_subscriptions = {}; 12 | var persistent_messages = {}; 13 | var id_lookup = {}; 14 | var new_id = 1; 15 | return { 16 | 'version':'1.0' 17 | ,'updated_on':'2011-12-19' 18 | ,'create': function() { return create_arbiter(); } 19 | ,'subscribe': function() { 20 | var msg, messages, subscription_list, persisted_subscription_list, subscription, func, options={}, context, wildcard=false, priority=0, id, return_ids=[]; 21 | if (arguments.length<2) { return null; } 22 | messages = arguments[0]; 23 | func = arguments[arguments.length-1]; // Function is always last argument 24 | if (arguments.length>2) { options = arguments[1] || {}; } 25 | if (arguments.length>3) { context = arguments[2]; } 26 | 27 | if (options.priority) { 28 | priority = options.priority; 29 | } 30 | if (typeof messages=="string") { 31 | messages = messages.split(/[,\s]+/); 32 | } 33 | for (var i=0; ib.p?-1:a.p==b.p?0:1); 57 | } ); 58 | // Put it back in after sorting 59 | if (wildcard) { 60 | wildcard_subscriptions[msg] = subscription_list; 61 | } 62 | else { 63 | subscriptions[msg] = subscription_list; 64 | } 65 | return_ids.push(id); 66 | 67 | // Check to see if there are any persistent messages that need 68 | // to be fired immediately 69 | if (!options.persist && persistent_messages[msg]) { 70 | persisted_subscription_list = persistent_messages[msg]; 71 | for (var j=0; j0) { 78 | return return_ids; 79 | } 80 | return return_ids[0]; 81 | } 82 | 83 | ,'publish': function(msg, data, options) { 84 | var async_timeout=10,result,overall_result=true,cancelable=true,internal_data={},subscriber, wildcard_msg; 85 | var subscription_list = subscriptions[msg] || []; 86 | options = options || {}; 87 | // Look through wildcard subscriptions to find any that apply 88 | for (wildcard_msg in wildcard_subscriptions) { 89 | if (msg.indexOf(wildcard_msg)==0) { 90 | subscription_list = subscription_list.concat( wildcard_subscriptions[wildcard_msg] ); 91 | } 92 | } 93 | if (options.persist===true) { 94 | if (!persistent_messages[msg]) { 95 | persistent_messages[msg] = []; 96 | } 97 | persistent_messages[msg].push( data ); 98 | } 99 | if (subscription_list.length==0) { 100 | return overall_result; 101 | } 102 | if (typeof options.cancelable=="boolean") { 103 | cancelable = options.cancelable; 104 | } 105 | for (var i=0; i 对组件的描述进行标准化。为以后做生成代码工具提供内容。 3 | 4 | ## 组件信息 5 | * [组件定义](#define) 6 | * [组件实现](#implement) 7 | 8 | ## 组件目录 9 | * [原子组件&组合](#atom) 10 | * [表单元素](#form) 11 | * [提醒](#notice) 12 | * [布局&容器组件](#layout) 13 | * [基础组件](#basic) 14 | * [业务组件](#business) 15 | 16 | ## 原子组件&组合 17 | 原子组件指小颗粒的,基本不可拆分的组件。 18 | 19 | ### [按钮](components/button) 20 | ![](components/button/screenshot/basic.png) 21 | 22 | ### [按钮组](components/button-group) 23 | ![](components/button-group/screenshot/basic.png) 24 | 25 | ### [Badge 标记](components/badge) 26 | ![](components/badge/screenshot/basic.png) 27 | 28 | ![](components/badge/screenshot/max.png) 29 | 30 | ![](components/badge/screenshot/string.png) 31 | 32 | ![](components/badge/screenshot/dot.png) 33 | 34 | ### [Tag 标签](components/tag) 35 | ![](components/tag/screenshot/basic.png) 36 | 37 | ### [Icon 图标/字体图标](components/icon) 38 | ![](components/icon/screenshot/basic.png) 39 | 40 | ## 表单元素 41 | ### [Input 输入框 & 密码框 & 文本域](components/form/field) 42 | ![](components/form/field/screenshot/basic.png) 43 | 44 | ![](components/form/field/screenshot/area.png) 45 | 46 | ### [InputNumber 计数器](components/form/number) 47 | ![](components/form/number/screenshot/basic.png) 48 | 49 | ![](components/form/number/screenshot/btn-right.png) 50 | 51 | ### [NumberKeyboard 数字键盘](components/form/number-keyboard) 52 | ![](components/form/number-keyboard/screenshot/basic.png) 53 | 54 | ### [单选框](components/form/radio) 55 | ![](components/form/radio/screenshot/basic.png) 56 | 57 | ![](components/form/radio/screenshot/btn-style.png) 58 | 59 | ### [多选框](components/form/checkbox) 60 | ![](components/form/checkbox/screenshot/basic.png) 61 | 62 | ### [Switch 开关](components/form/switch) 63 | ![](components/form/switch/screenshot/basic.png) 64 | 65 | ### Select 下拉框 66 | ![](components/form/select/screenshot/basic.png) 67 | 68 | ### Cascader 级联下拉框 69 | ![](components/form/cascader/screenshot/basic.png) 70 | 71 | ### 时间选择器 72 | ![](components/form/time-picker/screenshot/basic.png) 73 | 74 | ### 日期选择器 75 | ![](components/form/date-picker/screenshot/basic.png) 76 | 77 | ### 日期时间选择器 78 | ![](components/form/datetime-picker/screenshot/basic.png) 79 | 80 | ### 颜色选择器 81 | ![](components/form/color-picker/screenshot/basic.png) 82 | 83 | ### Slider 滑块 84 | ![](components/form/slider/screenshot/basic.png) 85 | 86 | ### 上传 87 | ![](components/form/upload/screenshot/basic.png) 88 | 89 | ### Progress 进度条 90 | ![](components/progress/screenshot/basic.png) 91 | 92 | ## 提醒 93 | ### Loading 加载 94 | ![](components/notice/loading/screenshot/basic.png) 95 | 96 | ### Alert 警告 97 | 用于页面中展示重要的提示信息。非浮层元素,不会自动消失。 98 | 99 | ![](components/notice/alert/screenshot/basic.png) 100 | 101 | ### Message 消息提示 102 | ![](components/notice/message/screenshot/basic.png) 103 | 104 | ### MessageBox 弹框 105 | MessageBox 的作用是美化系统自带的 alert、confirm 和 prompt。 106 | 107 | ![](components/notice/message-box/screenshot/alert.png) 108 | 109 | ![](components/notice/message-box/screenshot/confirm.png) 110 | 111 | ![](components/notice/message-box/screenshot/promt.png) 112 | 113 | ### Notification 通知 114 | 悬浮出现在页面角落,显示全局的通知提醒消息。 115 | 116 | ![](components/notice/message-notification/screenshot/basic.png) 117 | 118 | ## 布局&容器组件 119 | 布局&容器组件中,可以放任意类型的其他组件。 120 | 121 | ### 删格 122 | 123 | ### 表单 124 | 125 | ### Tab 选项卡 126 | 127 | ### Cell 单元格 128 | 单行,两端对齐。 129 | 130 | ### Panel 面板 131 | 放自定义内容。 132 | 133 | ### Alert 框 134 | 135 | ### Confirm 框 136 | 137 | ### 弹出框 138 | 139 | ### 多媒体(Media)组件 140 | 图/音乐/视频 + 文字。 141 | 142 | ## 基础组件 143 | 144 | 145 | ### [NavBar](components/navbar) 146 | ![](components/navbar/screenshot/basic.png) 147 | 148 | 头部导航栏。 149 | 150 | ### 搜索栏 151 | 152 | ### [TabBar](components/tabbar) 153 | ![](components/tabbar/screenshot/basic.png) 154 | 155 | 底部选项卡。 156 | 157 | ### Breadcrumb 面包屑 158 | 别名:路径导航 159 | 160 | ### 轮播 161 | 162 | ### 分页 163 | 164 | ### 图片上传 165 | 166 | ## 业务组件 167 | ### Rate 评分 168 | 169 | ### 选地址 170 | 省,市,区选择。 171 | 172 | ### 评论 173 | 174 | ### 商城类 175 | #### 商品卡片 176 | 177 | #### Contact 联系人 178 | 179 | #### GoodsAction 商品页行动点 180 | 181 | #### SubmitBar 提交订单栏 182 | 183 | #### Sku 商品购买组件 184 | 185 | ## 组件定义 186 | * 名称 187 | * 外观 188 | * 别名 189 | * 用途 190 | * 功能 191 | * 功能1 192 | * 功能2 193 | * ... 194 | * 实现的组件 195 | 196 | ## 组件实现 197 | 包含如下信息 198 | * 基本信息 199 | * 名称 200 | * 所属分类 201 | * 官网 202 | * 外观 203 | * 浏览器兼容性。IEx+; Chrome x+; Firefox x+。 204 | * 依赖框架: 不依赖;jQuery;Vue;React 等。 205 | * 是否支持 CMD。 206 | * 是否是 npm 的包。 207 | * 功能 208 | * 功能1: 值类型。 209 | * 功能2: 值类型。 210 | * ... 211 | * 其他 212 | * 是否支持列表 213 | 214 | ## 参考链接 215 | * 管理后台 216 | * [Element UI](http://element-cn.eleme.io/#/zh-CN) 217 | * [Ant Design Pro](https://pro.ant.design/index-cn) 218 | * [Ant Design 组件定义](https://ant.design/docs/react/introduce-cn) 219 | * [iView Admin](https://github.com/iview/iview-admin) 220 | * [Fish UI](https://github.com/myliang/fish-ui) 221 | * [Bootstrap3](http://v3.bootcss.com/) 222 | * [Bootstrap4](http://v4.bootcss.com/) 223 | * 手机 224 | * [Vant](https://www.youzanyun.com/zanui/vant#/zh-CN/component/quickstart) 225 | * [Mint UI](http://mint-ui.github.io/docs/#/zh-cn2) 226 | * [WeUI](https://weui.io/) 一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信内网页和微信小程序量身设计,令用户的使用感知更加统一。 227 | * 组件库 228 | * [jQuery Cards](http://jquerycards.com/) 高质量的 jQuery 插件网站 229 | * [jster](http://jster.net/) 230 | 231 | 232 | -------------------------------------------------------------------------------- /detail/jsDoc/doc/styles/jsdoc-default.css: -------------------------------------------------------------------------------- 1 | html 2 | { 3 | overflow: auto; 4 | background-color: #fff; 5 | } 6 | 7 | body 8 | { 9 | font: 14px "DejaVu Sans Condensed", "Liberation Sans", "Nimbus Sans L", Tahoma, Geneva, "Helvetica Neue", Helvetica, Arial, sans serif; 10 | line-height: 130%; 11 | color: #000; 12 | background-color: #fff; 13 | } 14 | 15 | a { 16 | color: #444; 17 | } 18 | 19 | a:visited { 20 | color: #444; 21 | } 22 | 23 | a:active { 24 | color: #444; 25 | } 26 | 27 | header 28 | { 29 | display: block; 30 | padding: 6px 4px; 31 | } 32 | 33 | .class-description { 34 | font-style: italic; 35 | font-family: Palatino, 'Palatino Linotype', serif; 36 | font-size: 130%; 37 | line-height: 140%; 38 | margin-bottom: 1em; 39 | margin-top: 1em; 40 | } 41 | 42 | #main { 43 | float: left; 44 | width: 100%; 45 | } 46 | 47 | section 48 | { 49 | display: block; 50 | 51 | background-color: #fff; 52 | padding: 12px 24px; 53 | border-bottom: 1px solid #ccc; 54 | margin-right: 240px; 55 | } 56 | 57 | .variation { 58 | display: none; 59 | } 60 | 61 | .optional:after { 62 | content: "opt"; 63 | font-size: 60%; 64 | color: #aaa; 65 | font-style: italic; 66 | font-weight: lighter; 67 | } 68 | 69 | nav 70 | { 71 | display: block; 72 | float: left; 73 | margin-left: -230px; 74 | margin-top: 28px; 75 | width: 220px; 76 | border-left: 1px solid #ccc; 77 | padding-left: 9px; 78 | } 79 | 80 | nav ul { 81 | font-family: 'Lucida Grande', 'Lucida Sans Unicode', arial, sans-serif; 82 | font-size: 100%; 83 | line-height: 17px; 84 | padding:0; 85 | margin:0; 86 | list-style-type:none; 87 | } 88 | 89 | nav h2 a, nav h2 a:visited { 90 | color: #A35A00; 91 | text-decoration: none; 92 | } 93 | 94 | nav h3 { 95 | margin-top: 12px; 96 | } 97 | 98 | nav li { 99 | margin-top: 6px; 100 | } 101 | 102 | nav a { 103 | color: #5C5954; 104 | } 105 | 106 | nav a:visited { 107 | color: #5C5954; 108 | } 109 | 110 | nav a:active { 111 | color: #5C5954; 112 | } 113 | 114 | footer { 115 | display: block; 116 | padding: 6px; 117 | margin-top: 12px; 118 | font-style: italic; 119 | font-size: 90%; 120 | } 121 | 122 | h1 123 | { 124 | font-size: 200%; 125 | font-weight: bold; 126 | letter-spacing: -0.01em; 127 | margin: 6px 0 9px 0; 128 | } 129 | 130 | h2 131 | { 132 | font-size: 170%; 133 | font-weight: bold; 134 | letter-spacing: -0.01em; 135 | margin: 6px 0 3px 0; 136 | } 137 | 138 | h3 139 | { 140 | font-size: 150%; 141 | font-weight: bold; 142 | letter-spacing: -0.01em; 143 | margin-top: 16px; 144 | margin: 6px 0 3px 0; 145 | } 146 | 147 | h4 148 | { 149 | font-size: 130%; 150 | font-weight: bold; 151 | letter-spacing: -0.01em; 152 | margin-top: 16px; 153 | margin: 18px 0 3px 0; 154 | color: #A35A00; 155 | } 156 | 157 | h5, .container-overview .subsection-title 158 | { 159 | font-size: 120%; 160 | font-weight: bold; 161 | letter-spacing: -0.01em; 162 | margin: 8px 0 3px -16px; 163 | } 164 | 165 | h6 166 | { 167 | font-size: 100%; 168 | letter-spacing: -0.01em; 169 | margin: 6px 0 3px 0; 170 | font-style: italic; 171 | } 172 | 173 | .ancestors { color: #999; } 174 | .ancestors a 175 | { 176 | color: #999 !important; 177 | text-decoration: none; 178 | } 179 | 180 | .important 181 | { 182 | font-weight: bold; 183 | color: #950B02; 184 | } 185 | 186 | .yes-def { 187 | text-indent: -1000px; 188 | } 189 | 190 | .type-signature { 191 | color: #aaa; 192 | } 193 | 194 | .name, .signature { 195 | font-family: Consolas, "Lucida Console", Monaco, monospace; 196 | } 197 | 198 | .details { margin-top: 14px; border-left: 2px solid #DDD; } 199 | .details dt { width:100px; float:left; padding-left: 10px; padding-top: 6px; } 200 | .details dd { margin-left: 50px; } 201 | .details ul { margin: 0; } 202 | .details ul { list-style-type: none; } 203 | .details li { margin-left: 30px; padding-top: 6px; } 204 | .details pre.prettyprint { margin: 0 } 205 | .details .object-value { padding-top: 0; } 206 | 207 | .description { 208 | margin-bottom: 1em; 209 | margin-left: -16px; 210 | margin-top: 1em; 211 | } 212 | 213 | .code-caption 214 | { 215 | font-style: italic; 216 | font-family: Palatino, 'Palatino Linotype', serif; 217 | font-size: 107%; 218 | margin: 0; 219 | } 220 | 221 | .prettyprint 222 | { 223 | border: 1px solid #ddd; 224 | width: 80%; 225 | overflow: auto; 226 | } 227 | 228 | .prettyprint.source { 229 | width: inherit; 230 | } 231 | 232 | .prettyprint code 233 | { 234 | font-family: Consolas, 'Lucida Console', Monaco, monospace; 235 | font-size: 100%; 236 | line-height: 18px; 237 | display: block; 238 | padding: 4px 12px; 239 | margin: 0; 240 | background-color: #fff; 241 | color: #000; 242 | border-left: 3px #ddd solid; 243 | } 244 | 245 | .prettyprint code span.line 246 | { 247 | display: inline-block; 248 | } 249 | 250 | .params, .props 251 | { 252 | border-spacing: 0; 253 | border: 0; 254 | border-collapse: collapse; 255 | } 256 | 257 | .params .name, .props .name, .name code { 258 | color: #A35A00; 259 | font-family: Consolas, 'Lucida Console', Monaco, monospace; 260 | font-size: 100%; 261 | } 262 | 263 | .params td, .params th, .props td, .props th 264 | { 265 | border: 1px solid #ddd; 266 | margin: 0px; 267 | text-align: left; 268 | vertical-align: top; 269 | padding: 4px 6px; 270 | display: table-cell; 271 | } 272 | 273 | .params thead tr, .props thead tr 274 | { 275 | background-color: #ddd; 276 | font-weight: bold; 277 | } 278 | 279 | .params .params thead tr, .props .props thead tr 280 | { 281 | background-color: #fff; 282 | font-weight: bold; 283 | } 284 | 285 | .params th, .props th { border-right: 1px solid #aaa; } 286 | .params thead .last, .props thead .last { border-right: 1px solid #ddd; } 287 | 288 | .disabled { 289 | color: #454545; 290 | } 291 | -------------------------------------------------------------------------------- /detail/jsDoc/doc/Book.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | JSDoc: Class: Book 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
    19 | 20 |

    Class: Book

    21 | 22 | 23 | 24 | 25 | 26 |
    27 | 28 |
    29 |

    30 | Book 31 |

    32 | 33 |
    34 | 35 |
    36 |
    37 | 38 | 39 | 40 | 41 |
    42 |

    new Book(title, author, describe) → {Book}

    43 | 44 | 45 |
    46 |
    47 | 48 | 49 |
    50 | Represents a book. 51 |
    52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 |
    Parameters:
    60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 99 | 100 | 101 | 108 | 109 | 110 | 111 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 134 | 135 | 136 | 143 | 144 | 145 | 146 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 172 | 173 | 174 | 183 | 184 | 185 | 186 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 |
    NameTypeArgumentDefaultDescription
    title 92 | 93 | 94 | string 95 | 96 | 97 | 98 | 102 | 103 | 104 | 105 | 106 | 107 | 112 | 113 | The title of the book.
    author 127 | 128 | 129 | string 130 | 131 | 132 | 133 | 137 | 138 | 139 | 140 | 141 | 142 | 147 | 148 | The author of the book.
    describe 162 | 163 | 164 | string 165 | | 166 | 167 | object 168 | 169 | 170 | 171 | 175 | 176 | <optional>
    177 | 178 | 179 | 180 | 181 | 182 |
    187 | 188 | '' 189 | 190 | The describe of the book.
    199 | 200 | 201 | 202 |
    203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 |
    Source:
    223 |
    226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 |
    To Do:
    234 |
    235 |
      236 |
    • add more meta info of the book
    • 237 |
    238 |
    239 | 240 |
    241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 |
    Returns:
    253 | 254 | 255 |
    256 | Book对象 257 |
    258 | 259 | 260 | 261 |
    262 |
    263 | Type 264 |
    265 |
    266 | 267 | Book 268 | 269 | 270 |
    271 |
    272 | 273 | 274 | 275 | 276 |
    277 | 278 | 279 |
    280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 |
    299 | 300 |
    301 | 302 | 303 | 304 | 305 |
    306 | 307 | 310 | 311 |
    312 | 313 |
    314 | Documentation generated by JSDoc 3.2.2 on Tue Jun 10 2014 17:11:03 GMT+0800 (CST) 315 |
    316 | 317 | 318 | 319 | 320 | -------------------------------------------------------------------------------- /detail/iSlider/assets/vendor/islider.css: -------------------------------------------------------------------------------- 1 | .islider-dom { 2 | position: absolute; 3 | margin: 0; 4 | padding: 0; 5 | height: 100%; 6 | overflow: hidden; 7 | } 8 | 9 | .islider-pic { 10 | position: absolute; 11 | margin: 0; 12 | padding: 0; 13 | height: 100%; 14 | overflow: hidden; 15 | display: -webkit-box; 16 | -webkit-box-pack: center; 17 | -webkit-box-align: center; 18 | list-style: none; 19 | } 20 | 21 | .islider-img > img { 22 | max-width: 100%; 23 | max-height: 100%; 24 | } 25 | 26 | .islider-btn-outer { 27 | position: absolute; 28 | width: 3em; 29 | height: 3em; 30 | cursor: pointer; 31 | top: 0px; 32 | bottom: 0px; 33 | margin: auto 0px; 34 | display: block; 35 | background-color: rgb(119, 119, 119); 36 | } 37 | 38 | .islider-btn-outer.left { 39 | left: 5%; 40 | } 41 | 42 | .islider-btn-outer.right { 43 | right: 5%; 44 | } 45 | 46 | .islider-btn-inner { 47 | position: absolute; 48 | width: 50%; 49 | height: 50%; 50 | border-top-width: 2px; 51 | border-top-style: solid; 52 | border-top-color: rgb(255, 255, 255); 53 | border-left-width: 2px; 54 | border-left-style: solid; 55 | border-left-color: rgb(255, 255, 255); 56 | margin: auto; 57 | top: 0px; 58 | bottom: 0px; 59 | left: 0px; 60 | right: 0px; 61 | } 62 | 63 | .islider-btn-outer.left > .islider-btn-inner { 64 | -webkit-transform: rotate(-45deg); 65 | } 66 | 67 | .islider-btn-outer.right > .islider-btn-inner { 68 | -webkit-transform: rotate(135deg); 69 | } 70 | 71 | .islider-dot-wrap { 72 | width: 80%; 73 | height: 10%; 74 | margin: 0px auto; 75 | position: absolute; 76 | padding: 0px; 77 | left: 0px; 78 | right: 0px; 79 | bottom: 0px; 80 | z-index: 10000; 81 | text-align: center; 82 | } 83 | .islider-dot { 84 | position: relative; 85 | display: inline-block; 86 | width: 0.8em; 87 | height: 0.8em; 88 | border-radius: 50%; 89 | border: 1px solid rgb(255, 255, 255); 90 | list-style-type: none; 91 | margin: 5px; 92 | } 93 | 94 | .islider-dot.active { 95 | background-color: #fff; 96 | } 97 | 98 | .islider-loader { 99 | display: none; 100 | font-size: 5px; 101 | margin: auto; 102 | width: 1em; 103 | height: 1em; 104 | border-radius: 50%; 105 | text-indent: -9999em; 106 | position:absolute; 107 | top:50%; 108 | left: 0; 109 | right: 0; 110 | -webkit-animation: isliderload 1.0s infinite linear; 111 | animation: isliderload 1.0s infinite linear; 112 | } 113 | 114 | @-webkit-keyframes isliderload { 115 | 0%, 116 | 100% { 117 | box-shadow: 0em -3em 0em 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 -0.5em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 0em #ffffff; 118 | } 119 | 12.5% { 120 | box-shadow: 0em -3em 0em 0em #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0em 0 0em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 -0.5em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 -0.5em #ffffff; 121 | } 122 | 25% { 123 | box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 0em #ffffff, 3em 0em 0 0.2em #ffffff, 2em 2em 0 0em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 -0.5em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 -0.5em #ffffff; 124 | } 125 | 37.5% { 126 | box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 0em #ffffff, 2em 2em 0 0.2em #ffffff, 0em 3em 0 0em #ffffff, -2em 2em 0 -0.5em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 -0.5em #ffffff; 127 | } 128 | 50% { 129 | box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 0em #ffffff, 0em 3em 0 0.2em #ffffff, -2em 2em 0 0em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 -0.5em #ffffff; 130 | } 131 | 62.5% { 132 | box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 0em #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0em 0 0em #ffffff, -2em -2em 0 -0.5em #ffffff; 133 | } 134 | 75% { 135 | box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 0em #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0em #ffffff; 136 | } 137 | 87.5% { 138 | box-shadow: 0em -3em 0em 0em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 0em #ffffff, -3em 0em 0 0em #ffffff, -2em -2em 0 0.2em #ffffff; 139 | } 140 | } 141 | @keyframes isliderload { 142 | 0%, 143 | 100% { 144 | box-shadow: 0em -3em 0em 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 -0.5em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 0em #ffffff; 145 | } 146 | 12.5% { 147 | box-shadow: 0em -3em 0em 0em #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0em 0 0em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 -0.5em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 -0.5em #ffffff; 148 | } 149 | 25% { 150 | box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 0em #ffffff, 3em 0em 0 0.2em #ffffff, 2em 2em 0 0em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 -0.5em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 -0.5em #ffffff; 151 | } 152 | 37.5% { 153 | box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 0em #ffffff, 2em 2em 0 0.2em #ffffff, 0em 3em 0 0em #ffffff, -2em 2em 0 -0.5em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 -0.5em #ffffff; 154 | } 155 | 50% { 156 | box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 0em #ffffff, 0em 3em 0 0.2em #ffffff, -2em 2em 0 0em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 -0.5em #ffffff; 157 | } 158 | 62.5% { 159 | box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 0em #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0em 0 0em #ffffff, -2em -2em 0 -0.5em #ffffff; 160 | } 161 | 75% { 162 | box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 0em #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0em #ffffff; 163 | } 164 | 87.5% { 165 | box-shadow: 0em -3em 0em 0em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 0em #ffffff, -3em 0em 0 0em #ffffff, -2em -2em 0 0.2em #ffffff; 166 | } 167 | } -------------------------------------------------------------------------------- /detail/jsGrid/assets/vendor/pager/jquery.paging.js: -------------------------------------------------------------------------------- 1 | (function() { 2 | var emptyFn = function() {}; 3 | window.console = window.console || { 4 | log: emptyFn, 5 | error: emptyFn 6 | }; 7 | var template = { 8 | first: '
  • 首页
  • ', 9 | prev: '
  • 上一页
  • ', 10 | next: '
  • 下一页
  • ', 11 | last: '
  • 末页
  • ', 12 | normal: '
  • {index}
  • ' 13 | }; 14 | var config = {}; 15 | var defaultParam = { 16 | 'showPagingNavNum': 10, 17 | 'pageAt': 1, 18 | 'pageNum': 0, 19 | onPageChange: emptyFn 20 | }; 21 | 22 | function Paging($el, param) { 23 | var self = this; 24 | this.isPaging = true; 25 | this.$el = $el; 26 | this.param = $.extend({}, defaultParam, param); 27 | param = this.param; 28 | this.pageNum = param.pageNum; 29 | 30 | var validMsg = validParam(param, $el); 31 | if (validMsg !== true) { 32 | console.error(validMsg); 33 | return; 34 | } 35 | this.pageAt = 1; 36 | this.init(); 37 | 38 | this.$el.on('click', '.normal-page', function(){ 39 | if($(this).closest('li').hasClass('current')){ 40 | return; 41 | } 42 | var pageAt = parseInt($(this).attr('data-id'), 10); 43 | self.setPageAt(pageAt); 44 | }); 45 | 46 | this.$el.on('click', '.first-page', function(){ 47 | if($(this).closest('li').hasClass('disabled')){ 48 | return; 49 | } 50 | self.setPageAt(1); 51 | }); 52 | 53 | this.$el.on('click', '.prev-page', function(){ 54 | if($(this).closest('li').hasClass('disabled')){ 55 | return; 56 | } 57 | var pageAt = self.pageAt - 1; 58 | self.setPageAt(pageAt); 59 | }); 60 | 61 | this.$el.on('click', '.last-page', function(){ 62 | if($(this).closest('li').hasClass('disabled')){ 63 | return; 64 | } 65 | self.setPageAt(self.pageNum); 66 | }); 67 | 68 | this.$el.on('click', '.next-page', function(){ 69 | if($(this).closest('li').hasClass('disabled')){ 70 | return; 71 | } 72 | var pageAt = self.pageAt + 1; 73 | self.setPageAt(pageAt); 74 | }); 75 | } 76 | 77 | Paging.prototype.init = function() { 78 | var pageNum = this.param.pageNum; 79 | var html = []; 80 | html.push('
      '); 81 | html.push(template.first); 82 | html.push(template.prev); 83 | if (pageNum > 0) { 84 | html.push(makePageArray(1, pageNum, this.param.showPagingNavNum).join('')); 85 | } 86 | html.push(template.next); 87 | html.push(template.last); 88 | html.push('
    '); 89 | this.$el.append($(html.join(''))); 90 | this.$el.find('[data-id='+ 1 +']').closest('li').addClass('current'); 91 | this.updatePageNav(); 92 | }; 93 | Paging.prototype.setPageNum = function(pageNum, pageAt) { 94 | this.pageNum = pageNum; 95 | pageAt = pageAt || 1; 96 | this.pageAt = pageAt; 97 | this.update(); 98 | }; 99 | 100 | Paging.prototype.setPageAt = function(pageAt) { 101 | this.pageAt = pageAt; 102 | this.update(); 103 | this.param.onPageChange(pageAt); 104 | }; 105 | 106 | Paging.prototype.update = function() { 107 | this.$el.find('.normal-page').each(function(){ 108 | $(this).closest('li').remove(); 109 | }); 110 | this.$el.find('.prev-page').closest('li').after(makePageArray(this.pageAt, this.pageNum, this.param.showPagingNavNum).join('')); 111 | this.$el.find('[data-id='+ this.pageAt +']').closest('li').addClass('current'); 112 | this.updatePageNav(); 113 | }; 114 | 115 | Paging.prototype.updatePageNav = function() { 116 | var $el = this.$el; 117 | $el.find('.first-page').closest('li').removeClass('disabled'); 118 | $el.find('.prev-page').closest('li').removeClass('disabled'); 119 | $el.find('.next-page').closest('li').removeClass('disabled'); 120 | $el.find('.last-page').closest('li').removeClass('disabled'); 121 | if(this.pageAt === 1){ 122 | $el.find('.first-page').closest('li').addClass('disabled'); 123 | $el.find('.prev-page').closest('li').addClass('disabled'); 124 | } 125 | 126 | if(this.pageAt === this.pageNum){ 127 | $el.find('.next-page').closest('li').addClass('disabled'); 128 | $el.find('.last-page').closest('li').addClass('disabled'); 129 | } 130 | }; 131 | 132 | Paging.prototype.getPageLimit = function(first_argument) { 133 | return this.param.pageLimit; 134 | }; 135 | 136 | Paging.prototype.addListener = function(type, callback) { 137 | switch (type) { 138 | case 'onPageChange': 139 | this.param.pageChange = callback; 140 | break; 141 | default: 142 | console.error('not support event type'); 143 | } 144 | }; 145 | 146 | function makePageArray(pageAt, pageNum, showPagingNavNum) { 147 | var array = []; 148 | var start; 149 | var end; 150 | if (pageNum <= showPagingNavNum) { // 全部显示 151 | start = 1; 152 | end = pageNum + 1; // 因为不包括end 153 | } else { 154 | if (pageAt - parseInt(showPagingNavNum / 2, 10) <= 0) { 155 | start = 1; 156 | } else if (pageAt + parseInt(showPagingNavNum / 2, 10) > pageNum) { 157 | start = pageNum - showPagingNavNum + 1; 158 | } else { 159 | start = pageAt - parseInt(showPagingNavNum / 2, 10); 160 | } 161 | end = start + showPagingNavNum; 162 | if (end >= pageNum + 1) { 163 | end = pageNum + 1; 164 | } 165 | } 166 | 167 | for (var i = start; i < end; i++) { 168 | array.push(template.normal.replace(/{index}/g, i)); 169 | } 170 | return array; 171 | } 172 | 173 | function validParam(param, $el) { 174 | if ($el === undefined) { 175 | return '$el needed!'; 176 | } 177 | if ($el.length === 0) { 178 | return 'not find $el!'; 179 | } 180 | return true; 181 | }; 182 | 183 | $.fn.paging = function(option) { 184 | var paging = new Paging(this, option); 185 | return paging; 186 | }; 187 | })(); 188 | -------------------------------------------------------------------------------- /libs/id-card-uitls.js: -------------------------------------------------------------------------------- 1 | var idCardNoUtil = { 2 | provinceAndCitys: { 3 | 11 : "北京", 4 | 12 : "天津", 5 | 13 : "河北", 6 | 14 : "山西", 7 | 15 : "内蒙古", 8 | 21 : "辽宁", 9 | 22 : "吉林", 10 | 23 : "黑龙江", 11 | 31 : "上海", 12 | 32 : "江苏", 13 | 33 : "浙江", 14 | 34 : "安徽", 15 | 35 : "福建", 16 | 36 : "江西", 17 | 37 : "山东", 18 | 41 : "河南", 19 | 42 : "湖北", 20 | 43 : "湖南", 21 | 44 : "广东", 22 | 45 : "广西", 23 | 46 : "海南", 24 | 50 : "重庆", 25 | 51 : "四川", 26 | 52 : "贵州", 27 | 53 : "云南", 28 | 54 : "西藏", 29 | 61 : "陕西", 30 | 62 : "甘肃", 31 | 63 : "青海", 32 | 64 : "宁夏", 33 | 65 : "新疆", 34 | 71 : "台湾", 35 | 81 : "香港", 36 | 82 : "澳门", 37 | 91 : "国外" 38 | }, 39 | 40 | powers: ["7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"], 41 | 42 | parityBit: ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"], 43 | 44 | genders: { 45 | male: "男", 46 | female: "女" 47 | }, 48 | 49 | checkAddressCode: function(addressCode) { 50 | var check = /^[1-9]\d{5}$/.test(addressCode); 51 | if (!check) return false; 52 | if (idCardNoUtil.provinceAndCitys[parseInt(addressCode.substring(0, 2))]) { 53 | return true; 54 | } else { 55 | return false; 56 | } 57 | }, 58 | 59 | checkBirthDayCode: function(birDayCode) { 60 | var check = /^[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))$/.test(birDayCode); 61 | if (!check) return false; 62 | var yyyy = parseInt(birDayCode.substring(0, 4), 10); 63 | var mm = parseInt(birDayCode.substring(4, 6), 10); 64 | var dd = parseInt(birDayCode.substring(6), 10); 65 | var xdata = new Date(yyyy, mm - 1, dd); 66 | if (xdata > new Date()) { 67 | return false; //生日不能大于当前日期 68 | } else if ((xdata.getFullYear() == yyyy) && (xdata.getMonth() == mm - 1) && (xdata.getDate() == dd)) { 69 | return true; 70 | } else { 71 | return false; 72 | } 73 | }, 74 | 75 | getParityBit: function(idCardNo) { 76 | var id17 = idCardNo.substring(0, 17); 77 | 78 | var power = 0; 79 | for (var i = 0; i < 17; i++) { 80 | power += parseInt(id17.charAt(i), 10) * parseInt(idCardNoUtil.powers[i]); 81 | } 82 | 83 | var mod = power % 11; 84 | return idCardNoUtil.parityBit[mod]; 85 | }, 86 | 87 | checkParityBit: function(idCardNo) { 88 | var parityBit = idCardNo.charAt(17).toUpperCase(); 89 | if (idCardNoUtil.getParityBit(idCardNo) == parityBit) { 90 | return true; 91 | } else { 92 | return false; 93 | } 94 | }, 95 | 96 | checkIdCardNo: function(idCardNo) { 97 | //15位和18位身份证号码的基本校验 98 | var check = /^\d{15}|(\d{17}(\d|x|X))$/.test(idCardNo); 99 | if (!check) return false; 100 | //判断长度为15位或18位 101 | if (idCardNo.length == 15) { 102 | return idCardNoUtil.check15IdCardNo(idCardNo); 103 | } else if (idCardNo.length == 18) { 104 | return idCardNoUtil.check18IdCardNo(idCardNo); 105 | } else { 106 | return false; 107 | } 108 | }, 109 | 110 | //校验15位的身份证号码 111 | check15IdCardNo: function(idCardNo) { 112 | //15位身份证号码的基本校验 113 | var check = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/.test(idCardNo); 114 | if (!check) return false; 115 | //校验地址码 116 | var addressCode = idCardNo.substring(0, 6); 117 | check = idCardNoUtil.checkAddressCode(addressCode); 118 | if (!check) return false; 119 | var birDayCode = '19' + idCardNo.substring(6, 12); 120 | //校验日期码 121 | return idCardNoUtil.checkBirthDayCode(birDayCode); 122 | }, 123 | 124 | //校验18位的身份证号码 125 | check18IdCardNo: function(idCardNo) { 126 | //18位身份证号码的基本格式校验 127 | var check = /^[1-9]\d{5}[1-9]\d{3}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}(\d|x|X)$/.test(idCardNo); 128 | if (!check) return false; 129 | //校验地址码 130 | var addressCode = idCardNo.substring(0, 6); 131 | check = idCardNoUtil.checkAddressCode(addressCode); 132 | if (!check) return false; 133 | //校验日期码 134 | var birDayCode = idCardNo.substring(6, 14); 135 | check = idCardNoUtil.checkBirthDayCode(birDayCode); 136 | if (!check) return false; 137 | //验证校检码 138 | return idCardNoUtil.checkParityBit(idCardNo); 139 | }, 140 | 141 | //香港身份证号验证 142 | checkXiangGangIdCardNo:function(idCardNo){ 143 | var check = /^[A-Z][0-9]{6}\([0-9A]\)$/.test(idCardNo); 144 | if(!check){ 145 | return false; 146 | }else{ 147 | return true; 148 | } 149 | }, 150 | 151 | //澳门身份证号验证 152 | checkAoMenIdCardNo:function(idCardNo){ 153 | var check = /^[157][0-9]{6}\([0-9]\)$/.test(idCardNo); 154 | if(!check){ 155 | return false; 156 | }else{ 157 | return true; 158 | } 159 | }, 160 | 161 | //台湾身份证号验证 162 | checkTaiWanIdCardNo:function(idCardNo){ 163 | var check = /^[A-Z][0-9]{9}$/.test(idCardNo); 164 | if(!check){ 165 | return false; 166 | }else{ 167 | return true; 168 | } 169 | }, 170 | 171 | formateDateCN: function(day) { 172 | var yyyy = day.substring(0, 4); 173 | var mm = day.substring(4, 6); 174 | var dd = day.substring(6); 175 | return yyyy + '-' + mm + '-' + dd; 176 | }, 177 | 178 | //获取信息 179 | getIdCardInfo: function(idCardNo) { 180 | var idCardInfo = { 181 | gender: "", 182 | //性别 183 | birthday: "" // 出生日期(yyyy-mm-dd) 184 | }; 185 | if (idCardNo.length == 15) { 186 | var aday = '19' + idCardNo.substring(6, 12); 187 | idCardInfo.birthday = idCardNoUtil.formateDateCN(aday); 188 | if (parseInt(idCardNo.charAt(14)) % 2 == 0) { 189 | idCardInfo.gender = idCardNoUtil.genders.female; 190 | } else { 191 | idCardInfo.gender = idCardNoUtil.genders.male; 192 | } 193 | } else if (idCardNo.length == 18) { 194 | var aday = idCardNo.substring(6, 14); 195 | idCardInfo.birthday = idCardNoUtil.formateDateCN(aday); 196 | if (parseInt(idCardNo.charAt(16)) % 2 == 0) { 197 | idCardInfo.gender = idCardNoUtil.genders.female; 198 | } else { 199 | idCardInfo.gender = idCardNoUtil.genders.male; 200 | } 201 | 202 | } 203 | return idCardInfo; 204 | }, 205 | 206 | getId15: function(idCardNo) { 207 | if (idCardNo.length == 15) { 208 | return idCardNo; 209 | } else if (idCardNo.length == 18) { 210 | return idCardNo.substring(0, 6) + idCardNo.substring(8, 17); 211 | } else { 212 | return null; 213 | } 214 | }, 215 | 216 | getId18: function(idCardNo) { 217 | if (idCardNo.length == 15) { 218 | var id17 = idCardNo.substring(0, 6) + '19' + idCardNo.substring(6); 219 | var parityBit = idCardNoUtil.getParityBit(id17); 220 | return id17 + parityBit; 221 | } else if (idCardNo.length == 18) { 222 | return idCardNo; 223 | } else { 224 | return null; 225 | } 226 | } 227 | } 228 | 229 | export default idCardNoUtil -------------------------------------------------------------------------------- /detail/jsDoc/doc/scripts/prettify/Apache-License-2.0.txt: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | --------------------------------------------------------------------------------