基于avalon的组件库,由去哪儿网前端架构组倾力打造
当前进度表
- UI组件,有界面的,通过ms-widget调用
- 功能组件,没有界面的,添加辅助性功能的
名称 | 类别 | 状态 | 说明 |
---|---|---|---|
第1期 | |||
hotkeys | 功能组件 | 完成 | 钟,组合键 |
position | 功能组件 | 完成 | 杨,定位 |
draggable | 功能组件 | 完成 | 钟,拖拽 |
resizable | 功能组件 | 完成 | 钟,缩放 |
checkboxlist | UI组件 | 完成 | 田,全选非全选 |
textbox+suggest | UI组件 | 完成 | 田,文本域及智能提示 |
at | UI组件 | 完成 | 钟,@提示列表 |
pager | UI组件 | 完成 | 钟,分页栏 |
dialog | UI组件 | 完成 | 田,弹出层 |
grid | UI组件 | 完成 | 钟, 表格 |
according | UI组件 | 完成 | 田, 手风琴 |
slider | UI组件 | 完成 | 田,滑动条 |
flipswitch | UI组件 | 完成 | 杨, 拖动切换 |
tabs | UI组件 | 完成 | 杨, 切换卡 |
spinner | UI组件 | 完成 | 田,数字输入框 |
progressbar | UI组件 | 完成 | 杨, 进度条 |
dropdown | UI组件 | 完成 | 姚,下拉框 |
switchdropdown | UI组件 | 完成 | 姚,切换下拉框(图标加提示) |
miniswitch | UI组件 | 完成 | 姚, 迷你下拉框(只有图标) |
tooltip | UI组件 | 完成 | 杨,气泡提示(有小三角,围绕元素的任意位置出现) |
notice | UI组件 | 完成 | 田,信息提示(能并排出现) |
doublelist | UI组件 | 完成 | 姚,角色选择 |
datepicker | UI组件 | 完成 | 田, 日期选框器 |
scrollbar | UI组件 | 完成 | 杨, 滚动条 |
第2期 | |||
json | 功能组件 | 完成 | 钟,json2 |
cookie | 功能组件 | 完成 | 钟,cookie |
store | 功能组件 | 完成 | 钟,本地储存 |
promise | 功能组件 | 完成 | 钟, es6的Promise组件 |
colorpicker | UI组件 | 完成 | 王,颜色选择器 |
lazyload | 功能组件 | 完成 | 懒加载 |
editor | UI组件 | 富文本编辑器 | |
menu | UI组件 | 完成 | 多级菜单 |
tree | UI组件 | 开发中 | 树 |
waterfall | UI组件 | 瀑布流 | |
button | UI组件 | 完成 | 按钮 |
carousel | UI组件 | 完成 | 单个照片http://owlgraphic.com/owlcarousel/demos/custom.html |
rating | UI组件 | 完成 | 林 星级评分 |
uploader | UI组件 | 完成 | 上传 |
preview | UI组件 | 完成 | 钟, 图片预览 |
scrollspy | UI组件 | 完成 | 杨, 滚动监听 |
imagecropper | UI组件 | 图片剪切 | |
validator | 功能组件 | 完成 | 验证框架 |
- 将项目下载地本地
- 如果有netBeans的同学,可以直接新建一个项目,将它放在里面,然后点击上方的运行(R)菜单,设置项目浏览器,然后在IDE左方找到index.html文件,右键运行
- 其他同学可以到avalon项目,将它的server.exe(一个迷你的.Net服务器)文件拷过来,然后运行它,选中index.html打开
define(["avalon", "text!./avalon.simplegrid.html", "pager/avalon.pager", "scrollbar/avalon.scrollbar", "css!../chameleon/oniui-common.css", "css!./avalon.simplegrid.css" ], function(avalon, tmpl) { //....
})
oniui-theme.scss是用于每个组件对应的scss文件引用的,如avalon.simplegrid.js
肯定与一个叫avalon.simplegrid.scss文件放在一块,这scss里开头就是这样写的:
```css
@charset "utf-8";
@import "../chameleon/oniui-theme";
$uiname : "ui-simplegrid";
.#{$uiname}{
width:100%;
border: 1px solid $ui-state-default-border-color;
@extend %oniui-font-setting;
.#{$uiname}-scroll-wrapper{
width:100%;
overflow:auto;
position: relative;
}
//....
}
正通过这样严格的组件,我们的OniUI就可以修改两处实现全库的换肤功能 第一处位于chameleon/compass/_config.scss文件中,里面有 @import "themes/smoothness" ; $oinui-theme: smoothness !global; 这两个地方修改
第二处是chameleon/compass/theme目录中,因为我们现在的皮肤叫smoothness, 那么就在它里面建一个叫smoothness.scss文件 以后你要添加一个叫sunny的皮肤,那么对应处改成 @import "themes/sunny" ; $oinui-theme: sunny !global; 自己再建一个sunny.scss文件就行了
我们再看一下这皮肤里面的规则是怎么搞的
@charset "utf-8";
// 两种主色调 银灰浅蓝
// 激活的蓝色为天蓝色 #3775c0
// hover上去为浅灰色 #f8f8f8
// 普通的底色为银灰色 #d9d9d9
// 银灰底色对应的边框色为深灰色:#cccccc;
//两个用到的绿色 #3e973e(深) #68c969(浅)
// 正常的字体颜色为黑色: #000;
// slider的激活蓝色为 #22dddd;
// input[type=text],input[type=password],textarea的样式
//┌───┬────┬────┬────┬────┬────┐
//│状态 │default │ hover │active │diabled │error │
//├───┼────┼────┼────┼────┼────┤
//│边框 │#cccccc │#999999 │active │#3775c0 │#ff8888 │
//├───┼────┼────┼────┼────┼────┤
//│背景 │#ffffff │#ffffff │#ffffff │#f5f5f5 │#fffff │
//├───┼────┼────┼────┼────┼────┤
//│文字 │#000000 │#000000 │#000000 │#999999 │#ff8888 │
//└───┴────┴────┴────┴────┴────┘
//字体设置
$oniui-font-size: 1em;
$oniui-font-weight: normal;
$oniui-font-family: Helvetica,Arial,Sans-serif;
$oniui-icon-start-color: #58b359;
$oniui-icon-pause-color: #333;
$oniui-icon-state-hover-color: #fff;
$oniui-icon-state-active-color: #fff;
//通用阴影
$oniui-shadow-box: 2px 2px 3px 0 rgba(0, 0, 0, 0.1);
$ui-widget-content-border-color:#3e973e!global;
$ui-widget-content-background-color:#68c969!global;
$ui-widget-content-color:#fff!global;
$ui-widget-header-border-color: #aaa!global;
$ui-widget-header-background-color: rgb(223,223,223)!global;
$ui-widget-header-color: #fff!global;
$ui-state-default-background-color: #e6e6e6!global;
$ui-state-default-border-color: #d4d4d4!global;
$ui-state-default-color: #555!global;
//移上去时
$ui-state-hover-background-color: #f8f8f8!global;
$ui-state-hover-border-color: #f8f8f8!global;
$ui-state-hover-color: #000!global;
//激活状态(蓝色)
$ui-state-active-background-color:#3775c0 !global;
$ui-state-active-border-color: #3775c0!global;
$ui-state-active-color: #fff!global;
//禁用(灰色)
$ui-state-disabled-background-color: #F5F5F5!global;
$ui-state-disabled-border-color: #D9D9D9!global;
$ui-state-disabled-color: #999!global;
//出错(红色)
$ui-state-error-background-color: #ff8888!global;
$ui-state-error-border-color: #ff8888!global;
$ui-state-error-color: #ff8888!global;
你只要将对应位置的颜色值改一下就行了。avalon的组件是分成高亮区,底色区与可变区。
高亮区通过添加.ui-widget-content类名标识,底色区添加.ui-widget-header类名标识; 可变区通过添加不同的类名来判定它的状态实现,一般分正常,hover, 激活,禁用,禁用,出错这几种状态。 它们分别添加.ui-state-default, .ui-state-hover, .ui-state-active, .ui-state-disabled, .ui-state-error类名实现。 悄悄话一句,这其实是抄自jquery ui的皮肤系统。 如果有的组件比较奇特,需要区别对待,那么我们可以在对应的scss文件中,如
@if($oinui-theme == smoothness){
$ui-state-hover-background-color:#E8F5FD;
}
改成这些,重新编译一下就行了。
Oni日语为鬼, 可以美化一下叫英灵 在fate/Zero这部动画中, 最强大的英灵就是"金闪闪"吉尔伽美什 而吉尔伽美什对应的咒令就是 远坂时臣的那个
http://baike.baidu.com/view/2850010.htm http://baike.baidu.com/subview/666734/7383298.htm?fromtitle=FateZero&fromid=5097473&type=syn#6_4https://github.com/jxnblk/loading http://touch.code.baidu.com/
移动端上的皮肤 http://goratchet.com/components/