Files
ant-design/docs/spec/feature.html
T
2016-03-21 18:15:15 +08:00

516 lines
19 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<meta name="description" content="一个 UI 设计语言"/>
<title>
三大特性 - Ant Design
</title>
<link rel="icon" href="https://t.alipayobjects.com/images/T1QUBfXo4fXXXXXXXX.png" type="image/x-icon">
<link rel="shortcut icon" href="https://t.alipayobjects.com/images/T1QUBfXo4fXXXXXXXX.png" type="image/x-icon">
<link rel="stylesheet" href="../../dist/demo.css">
<script src="https://as.alipayobjects.com/g/component/??console-polyfill/0.2.2/index.js,es5-shim/4.5.7/es5-shim.min.js,es5-shim/4.5.7/es5-sham.min.js,html5shiv/3.7.2/html5shiv.min.js,media-match/2.0.2/media.match.min.js,jquery/1.11.3/jquery.min.js,bluebird/3.1.1/bluebird.min.js"></script>
<script>
(function() {
window.ANT_COMPONENTS = [];
window.InstantClickChangeFns = [];
ANT_COMPONENTS.push({
title: 'Pagination',
desc: '分页'
});
ANT_COMPONENTS.push({
title: 'Affix',
desc: '固钉'
});
ANT_COMPONENTS.push({
title: 'Badge',
desc: '徽标数'
});
ANT_COMPONENTS.push({
title: 'Breadcrumb',
desc: '面包屑'
});
ANT_COMPONENTS.push({
title: 'Button',
desc: '按钮'
});
ANT_COMPONENTS.push({
title: 'Calendar',
desc: '日历'
});
ANT_COMPONENTS.push({
title: 'Carousel',
desc: '走马灯'
});
ANT_COMPONENTS.push({
title: 'Cascader',
desc: '级联选择'
});
ANT_COMPONENTS.push({
title: 'Checkbox',
desc: '多选框'
});
ANT_COMPONENTS.push({
title: 'Collapse',
desc: '折叠面板'
});
ANT_COMPONENTS.push({
title: 'DatePicker',
desc: '日期选择框'
});
ANT_COMPONENTS.push({
title: 'Dropdown',
desc: '下拉菜单'
});
ANT_COMPONENTS.push({
title: 'Form',
desc: '表单'
});
ANT_COMPONENTS.push({
title: 'Icon',
desc: '图标'
});
ANT_COMPONENTS.push({
title: 'InputNumber',
desc: '数字输入框'
});
ANT_COMPONENTS.push({
title: 'Layout',
desc: '布局'
});
ANT_COMPONENTS.push({
title: 'Menu',
desc: '导航菜单'
});
ANT_COMPONENTS.push({
title: 'Message',
desc: '全局提示'
});
ANT_COMPONENTS.push({
title: 'Modal',
desc: '对话框'
});
ANT_COMPONENTS.push({
title: 'Notification',
desc: '通知提醒框'
});
ANT_COMPONENTS.push({
title: 'Alert',
desc: '警告提示'
});
ANT_COMPONENTS.push({
title: 'Popconfirm',
desc: '气泡确认框'
});
ANT_COMPONENTS.push({
title: 'Popover',
desc: '气泡卡片'
});
ANT_COMPONENTS.push({
title: 'Progress',
desc: '进度条'
});
ANT_COMPONENTS.push({
title: 'QueueAnim',
desc: '进出场动画'
});
ANT_COMPONENTS.push({
title: 'Radio',
desc: '单选框'
});
ANT_COMPONENTS.push({
title: 'Select',
desc: '选择器'
});
ANT_COMPONENTS.push({
title: 'Slider',
desc: '滑动输入条'
});
ANT_COMPONENTS.push({
title: 'Spin',
desc: '加载中'
});
ANT_COMPONENTS.push({
title: 'Steps',
desc: '步骤条'
});
ANT_COMPONENTS.push({
title: 'Switch',
desc: '开关'
});
ANT_COMPONENTS.push({
title: 'Table',
desc: '表格'
});
ANT_COMPONENTS.push({
title: 'Tabs',
desc: '标签页'
});
ANT_COMPONENTS.push({
title: 'Tag',
desc: '标签'
});
ANT_COMPONENTS.push({
title: 'TimePicker',
desc: '时间选择框'
});
ANT_COMPONENTS.push({
title: 'Timeline',
desc: '时间轴'
});
ANT_COMPONENTS.push({
title: 'Tooltip',
desc: '文字提示'
});
ANT_COMPONENTS.push({
title: 'Transfer',
desc: '穿梭框'
});
ANT_COMPONENTS.push({
title: 'Tree',
desc: '树形控件'
});
ANT_COMPONENTS.push({
title: 'TreeSelect',
desc: '树选择'
});
ANT_COMPONENTS.push({
title: 'Upload',
desc: '上传'
});
// fix ie location origin
// http://stackoverflow.com/questions/22564167/window-location-origin-gives-wrong-value-when-using-ie
if (!window.location.origin) {
window.location.origin = window.location.protocol + "//"
+ window.location.hostname
+ (window.location.port ? ':' + window.location.port : '');
}
var i = location.pathname.split('/').lastIndexOf('ant-design');
if (i > 0) {
window.rootUrl = location.origin + location.pathname.split('/').slice(0, 2+1).join('/');
} else {
window.rootUrl = location.origin;
}
})();
</script>
<script>
window.antdVersion = {
latest: '0.12.12'
};
</script>
<script src="../../dist/demo.js"></script>
</head>
<body >
<header id="header" class="clearfix">
<a class="logo" href="../..">
<img width="60" src="https://t.alipayobjects.com/images/rmsweb/T1B9hfXcdvXXXXXXXX.svg">
Ant Design
</a>
<div class="search">
<div id="autoComplete"></div>
</div>
<nav class="nav" tabindex="-1">
<span class="bar"></span>
<ul>
<li class="">
<a href="../..">首页</a>
</li>
<li class="">
<a href="../practice/cases">实践</a>
</li>
<li class="">
<a href="../pattern/navigation">模式</a>
</li>
<li class="">
<a href="../react/introduce">组件</a>
</li>
<li class="current">
<a href="./introduce">语言</a>
</li>
<li class="">
<a href="../resource/download">资源</a>
</li>
</ul>
</nav>
<div class="nav-phone-icon"></div>
</header>
<div class="main-wrapper">
<aside class="aside-container">
<ul>
<li class="">
<a href="introduce"
class="">
Ant Design
<span class="chinese"></span>
</a>
</li>
<li class="current">
<a href="feature"
class="">
三大特性
<span class="chinese"></span>
</a>
</li>
<li open="open">
<h4>十大原则</h4>
<ul class="">
<li class="">
<a href="principle"
class="">
引言
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="proximity"
class="">
亲密性
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="alignment"
class="">
对齐
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="contrast"
class="">
对比
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="repetition"
class="">
重复
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="direct"
class="">
直截了当
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="lightweight"
class="">
简化交互
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="stay"
class="">
足不出户
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="invitation"
class="">
提供邀请
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="transition"
class="">
巧用过渡
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="reaction"
class="">
即时反应
<span class="chinese"></span>
</a>
</li>
</ul>
</li>
<li open="open">
<h4>设计基础</h4>
<ul class="">
<li class="">
<a href="font"
class="">
字体
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="typography"
class="">
排版
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="colors"
class="">
色彩
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="layout/"
class="">
常用布局
<span class="chinese"></span>
</a>
</li>
</ul>
</li>
<li open="open">
<h4>动画</h4>
<ul class="">
<li class="">
<a href="easing"
class="">
自然运动
<span class="chinese"></span>
</a>
</li>
<li class="">
<a href="motion"
class="">
组件动画
<span class="chinese"></span>
</a>
</li>
</ul>
</li>
</ul>
</aside>
<section class="main-container">
<article class="markdown">
<h1>三大特性 <span class="subtitle"></span></h1>
<p>与众不同的是,Ant Design 不但追求『用户』的使用体验,还追求『设计者』的使用体验,真真正正贯彻和践行『以人为本』的设计理念。</p>
<div style="margin-left:-40px;margin-right:-40px;overflow:hidden;">
<div class="col-8 features">
<img src="https://os.alipayobjects.com/rmsportal/OVirOHTeAdzDBuQ.png">
<h5>微小</h5>
<div>致力于微小而美好的改变,力求在细节上精益求精,不仅让业务产品更加实用和可靠,而且还能让『用户』感到小惊喜。</div>
</div>
<div class="col-8 features">
<img src="https://os.alipayobjects.com/rmsportal/iJbUiLYpuPBXUhV.png">
<h5>确定</h5>
<div>制定通俗而科学的设计原则、运用面向对象的方法、使用一致的文档沟通机制,给予研发团队一种高确定性、低熵值的研发状态。</div>
</div>
<div class="col-8 features">
<img src="https://os.alipayobjects.com/rmsportal/uSOjjlCRjRIhtIY.png">
<h5>幸福</h5>
<div>不苛求简单,但是力求让『用户』和『设计者』流畅的完成目标,并带着成功和满足离开。</div>
</div>
</div>
<style>
.features {
padding: 0 40px;
font-size: 12px;
}
.features h5 {
font-size: 14px;
margin-top: 16px;
}
@media only screen and (min-width: 320px) and (max-width: 767px) {
.features {
width: 100%;
text-align: center;
margin-bottom: 20px;;
}
.features img {
width: 80%;
}
}
</style>
<div class="toc"><ul><li><a href="#微小">微小</a><ul><li><a href="#微创新">微创新</a></li><li><a href="#集成创新">集成创新</a></li></ul></li><li><a href="#确定">确定</a><ul><li><a href="#面向对象的方法">面向对象的方法</a></li><li><a href="#通俗而科学的设计原则">通俗而科学的设计原则</a></li></ul></li><li><a href="#幸福">幸福</a><ul><li><a href="#用户的幸福">用户的幸福</a></li><li><a href="#设计者的幸福">设计者的幸福</a></li></ul></ul></div>
<h2 id="微小">微小<a href="#微小" class="anchor">#</a> </h2><h3 id="微创新">微创新<a href="#微创新" class="anchor">#</a> </h3><p><img class="preview-img" align="right" alt="数值输入框示例" description="鼠标『悬停』时,可点击区域会放大。" src="https://os.alipayobjects.com/rmsportal/GGXdyrOtvUtOKXe.png"></p>
<p><img class="preview-img" align="right" alt="分页示例" description="鼠标点击省略符,可以实现批量切换。" src="https://os.alipayobjects.com/rmsportal/UEYPnVhQsOjytSa.png"></p>
<p><img class="preview-img" align="right" alt="字数校验框示例" description="使用颜色和下划线标注超出的文案,系统即时反应,以便用户进行调整。" src="https://os.alipayobjects.com/rmsportal/JxzQIRfMCtMjuaH.png"></p>
<p>『不同』不一定『更好』,但是『更好』一定『不同』。不断追求细节上的『更好』,使得我们的组件和同类产品都不一样,自然而然的『不同』。</p>
<h3 id="集成创新">集成创新<a href="#集成创新" class="anchor">#</a> </h3><p><img class="preview-img" align="right" alt="填空示例" description="组合了标签和输入项,可以帮助用户理解当前的状况,以及需要提供什么数据。" src="https://os.alipayobjects.com/rmsportal/RGFMJRSgCAVCKOl.png"></p>
<p><img class="preview-img" align="right" alt="带图表的表格" description="组合了 Table 和 Chart ,鼠标『悬停』时展现更多详情内容。" src="https://os.alipayobjects.com/rmsportal/hjHOMRIbvIUUBXS.png"></p>
<p>选择合适的组件进行组合和集成,形成优势互补的创新过程,来满足多变的业务需求。</p>
<hr>
<h2 id="确定">确定<a href="#确定" class="anchor">#</a> </h2><h3 id="面向对象的方法">面向对象的方法<a href="#面向对象的方法" class="anchor">#</a> </h3><p><img class="preview-img" align="right" alt="色值换算工具示例" description="定义『原色』后,用『加黑』和『加白』的方式快速、科学的得出 Normal、Hover 等多个『状态色』。" src="https://os.alipayobjects.com/rmsportal/MqsXoBBSDmoEDqn.png"></p>
<p><img class="preview-img" align="right" alt="排版规则示例" description="运用『亲密性』原则,只需定义 n 的值,就可以得出确定的间距。" src="https://os.alipayobjects.com/rmsportal/WNEbRORxzEvvFKy.png"></p>
<p><img class="preview-img" noPadding align="right" alt="操作反馈 - 正确示例" description="将可被通用的文案抽象成『确定』、『操作』等通用术语,集中进行调用和维护。虽然『用户』体验 -1 分,但是『设计者』体验 +5 分。" good src="https://os.alipayobjects.com/rmsportal/rtbYGKfPOpWRJID.png"></p>
<p><img class="preview-img" noPadding align="right" alt="操作反馈 - 错误示例" bad description="这是体验更好的反馈方式,但是对『设计者』来说是灾难。因为这些『删除』文案只能通过人肉维护,难免产生遗漏和错别字,增大了系统的不确定性,这在多人合作和需求变更时尤为明显。" src="https://os.alipayobjects.com/rmsportal/OWLtvGCGmqawyPt.png"></p>
<p>探索设计规律,并将其抽象成『对象』,增强界面设计的灵活性和可维护性,同时也减少『设计者』的主观干扰,从而降低系统的不确定性。</p>
<h3 id="通俗而科学的设计原则">通俗而科学的设计原则<a href="#通俗而科学的设计原则" class="anchor">#</a> </h3><p>详见<a href="./principle">『十大原则』</a></p>
<hr>
<h2 id="幸福">幸福<a href="#幸福" class="anchor">#</a> </h2><h3 id="用户的幸福">用户的幸福<a href="#用户的幸福" class="anchor">#</a> </h3><p><img class="preview-img" noPadding align="right" alt="用户的幸福示例" description="想了解更多内容,可阅读唐纳德•A•诺曼所著的 《设计心理学 3》。" src="https://os.alipayobjects.com/rmsportal/sBjNEGgHEpNfqTs.png"></p>
<p>漂亮的组件、精致的排版、流畅的动画等的元素,使用户在『本能层次』中产生积极反应;</p>
<p>良好的功能、性能和可用性,使用户在『行为层次』中产生积极反应;</p>
<p>自我形象、个人满足和美好记忆,使用户在『反思层次』中体验思想和情感的交融。</p>
<h3 id="设计者的幸福">设计者的幸福<a href="#设计者的幸福" class="anchor">#</a> </h3><p><img class="preview-img" noPadding align="right" alt="设计者的幸福示例" description="Ant Design 无法保证业务产品能否成功,但是能帮助业务产品『正确的成功』或者『正确的失败』。" src="https://os.alipayobjects.com/rmsportal/eMcdBWuZxRbvlvW.png"></p>
<p>从『无』到『有』时,提供一整套设计解决方案,帮助『设计者』将商业想法快速形成产品并推向市场,快速、低成本试错。</p>
<p>从『有』到『优』时,提供一系列自定义建议,帮助『设计者』塑造产品个性并提升整体体验,服务海量用户。</p>
</article>
</section>
</div><footer id="footer">
<ul>
<li>
<h2>GitHub</h2>
<a target="_blank "href="https://github.com/ant-design/ant-design">仓库</a>
<a target="_blank" href="https://github.com/ant-design/antd-init">脚手架</a>
<a target="_blank" href="http://ant-tool.github.io/">开发工具</a>
</li>
<li>
<h2>关于我们</h2>
<a target="_blank" href="https://github.com/ant-ued/blog">博客 - Ant UED</a>
</li>
<li>
<h2>联系我们</h2>
<a target="_blank" href="https://github.com/ant-design/ant-design/issues">反馈和建议</a>
<a target="_blank" href="https://gitter.im/ant-design/ant-design">讨论</a>
<a target="_blank" href="http://dwz.cn/2AF9ao">报告 Bug</a>
</li>
<li>
<div>©2015 蚂蚁金服体验技术部出品</div>
<div>文档版本:<span id="versions-select"></span></div>
</li>
</ul>
</footer>
<script data-no-instant>
if (!location.port) {
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-72788897-1', 'auto');
ga('send', 'pageview');
InstantClick.on('change', function() {
ga('send', 'pageview', location.pathname + location.search);
});
}
</script>
<script data-no-instant>
InstantClick.on('change', function() {
InstantClickChangeFns.forEach(function(fn) {
fn();
});
});
InstantClick.init();
</script>
</body>
</html>