Files
ant-design/docs/spec/direct.html
T
2017-01-21 00:48:58 +08:00

85 lines
23 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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="description" content="An enterprise-class UI design language and React-based implementation">
<meta name="description" content="A set of high-quality React components">
<meta name="description" content="One of best React UI library for enterprise background">
<title>Ant Design - A UI Design Language</title>
<link rel="icon" href="https://t.alipayobjects.com/images/T1QUBfXo4fXXXXXXXX.png" type="image/x-icon">
<link rel="stylesheet" type="text/css" href="https://fonts.googleapis.cnpmjs.org/css?family=Lato:400,700|Raleway"/>
<link rel="stylesheet" type="text/css" href="/index.css"/>
<style id="nprogress-style">
#nprogress { display: none }
</style>
<!--[if lte IE 10]>
<script
src="https://as.alipayobjects.com/g/component/??console-polyfill/0.2.2/index.js,media-match/2.0.2/media.match.min.js"></script>
<![endif]-->
<script>
if (!window.Intl) {
document.writeln('<script src="https://as.alipayobjects.com/g/component/intl/1.0.1/??Intl.js,locale-data/jsonp/en.js,locale-data/jsonp/zh.js">' + '<' + '/script>');
}
if (!window.Promise) {
document.writeln('<script src="https://as.alipayobjects.com/g/component/es6-promise/3.2.2/es6-promise.min.js"' + '>' + '<' + '/' + 'script>');
}
</script>
<script>
// Enable Google Analytics
if (!location.port) {
/* eslint-disable */
(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');
/* eslint-enable */
}
</script>
</head>
<body>
<div id="react-content">
<div class="page-wrapper" data-reactroot="" data-reactid="1" data-react-checksum="-616005339"><header id="header" class="clearfix" data-reactid="2"><div class="ant-row" data-reactid="3"><div class="ant-col-xs-24 ant-col-sm-24 ant-col-md-6 ant-col-lg-4" data-reactid="4"><a id="logo" href="/" data-reactid="5"><img alt="logo" src="https://t.alipayobjects.com/images/rmsweb/T1B9hfXcdvXXXXXXXX.svg" data-reactid="6"/><span data-reactid="7">Ant Design</span></a></div><div class="ant-col-xs-0 ant-col-sm-0 ant-col-md-18 ant-col-lg-20" data-reactid="8"><div id="search-box" data-reactid="9"><div class="ant-select ant-select-combobox ant-select-enabled" data-reactid="10"><div class="ant-select-selection
ant-select-selection--single" role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-expanded="false" data-reactid="11"><div class="ant-select-selection__rendered" data-reactid="12"><div style="display:block;user-select:none;-webkit-user-select:none;" unselectable="unselectable" class="ant-select-selection__placeholder" data-reactid="13">Search Components...</div><ul data-reactid="14"><li class="ant-select-search ant-select-search--inline" data-reactid="15"><div class="ant-select-search__field__wrap" data-reactid="16"><input value="" class="ant-select-search__field" data-reactid="17"/><span class="ant-select-search__field__mirror" data-reactid="18"></span></div></li></ul></div><span class="ant-select-arrow" style="user-select:none;-webkit-user-select:none;" unselectable="unselectable" data-reactid="19"><b data-reactid="20"></b></span></div></div></div><button type="button" class="ant-btn ant-btn-ghost ant-btn-sm lang" data-reactid="21"><span data-reactid="22">中文</span></button><ul class="ant-menu ant-menu-horizontal ant-menu-light ant-menu-root" role="menu" aria-activedescendant="" id="nav" tabindex="0" data-reactid="23"><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="24"><a href="/" data-reactid="25"><span data-reactid="26">Home</span></a></li><li class="ant-menu-item-selected ant-menu-item" role="menuitem" aria-selected="true" data-reactid="27"><a href="/docs/spec/introduce" data-reactid="28"><span data-reactid="29">Specification</span></a></li><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="30"><a href="/docs/react/introduce" data-reactid="31"><span data-reactid="32">Components</span></a></li><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="33"><a href="/docs/pattern/navigation" data-reactid="34"><span data-reactid="35">Pattern</span></a></li><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="36"><a href="/docs/practice/cases" data-reactid="37"><span data-reactid="38">Practice</span></a></li><li class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="39"><a href="/docs/resource/download" data-reactid="40"><span data-reactid="41">Resource</span></a></li></ul></div></div></header><div class="main-wrapper" data-reactid="42"><div class="ant-row" data-reactid="43"><div class="ant-col-xs-24 ant-col-sm-24 ant-col-md-6 ant-col-lg-4" data-reactid="44"><ul class="ant-menu ant-menu-inline aside-container ant-menu-light ant-menu-root" role="menu" aria-activedescendant="" tabindex="0" data-reactid="45"><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="46"><a href="/docs/spec/introduce" data-reactid="47">Ant Design</a></li><li style="padding-left:24px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="48"><a href="/docs/spec/feature" data-reactid="49">Features</a></li><li class="ant-menu-submenu-inline ant-menu-submenu-open ant-menu-submenu-selected ant-menu-submenu" data-reactid="50"><div style="padding-left:24px;" class="ant-menu-submenu-title" aria-expanded="true" aria-owns="Principles$Menu" aria-haspopup="true" data-reactid="51"><h4 data-reactid="52">Principles</h4></div><ul class="ant-menu ant-menu-inline ant-menu-sub" role="menu" aria-activedescendant="" id="Principles$Menu" data-reactid="53"><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="54"><a href="/docs/spec/principle" data-reactid="55">Introduction</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="56"><a href="/docs/spec/proximity" data-reactid="57">Proximity</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="58"><a href="/docs/spec/alignment" data-reactid="59">Alignment</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="60"><a href="/docs/spec/contrast" data-reactid="61">Contrast</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="62"><a href="/docs/spec/repetition" data-reactid="63">Repetition</a></li><li style="padding-left:48px;" class="ant-menu-item-selected ant-menu-item" role="menuitem" aria-selected="true" data-reactid="64"><a href="/docs/spec/direct" data-reactid="65">Make it Direct</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="66"><a href="/docs/spec/stay" data-reactid="67">Stay on the Page</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="68"><a href="/docs/spec/lightweight" data-reactid="69">Keep it Lightweight</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="70"><a href="/docs/spec/invitation" data-reactid="71">Provide an Invitation</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="72"><a href="/docs/spec/transition" data-reactid="73">Use Transition</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="74"><a href="/docs/spec/reaction" data-reactid="75">React Immediately</a></li></ul></li><li class="ant-menu-submenu-inline ant-menu-submenu-open ant-menu-submenu" data-reactid="76"><div style="padding-left:24px;" class="ant-menu-submenu-title" aria-expanded="true" aria-owns="Design Fundamental$Menu" aria-haspopup="true" data-reactid="77"><h4 data-reactid="78">Design Fundamental</h4></div><ul class="ant-menu ant-menu-inline ant-menu-sub" role="menu" aria-activedescendant="" id="Design Fundamental$Menu" data-reactid="79"><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="80"><a href="/docs/spec/font" data-reactid="81">Font</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="82"><a href="/docs/spec/typography" data-reactid="83">Typography</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="84"><a href="/docs/spec/colors" data-reactid="85">Colors</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="86"><a href="/docs/spec/layout" data-reactid="87">Layout</a></li><li style="padding-left:48px;" class="ant-menu-item" role="menuitem" aria-selected="false" data-reactid="88"><a href="/docs/spec/motion" data-reactid="89">Motion</a></li></ul></li></ul></div><div class="main-container ant-col-xs-24 ant-col-sm-24 ant-col-md-18 ant-col-lg-20" data-reactid="90"><article class="markdown" data-reactid="91"><h1 data-reactid="92"><!-- react-text: 93 -->Make it Direct<!-- /react-text --><a class="edit-button" href="https://github.com/ant-design/ant-design/blob/master/docs/spec/direct.en-US.md" data-reactid="94"><i class="anticon anticon-edit" data-reactid="95"></i></a></h1><section class="markdown" data-reactid="96"><p data-reactid="97"><!-- react-text: 98 -->As Alan Cooper states:『Where there is output, let there be input』. This is the principle of direct manipulation. egInstead of editing content on a separate page, do it directly in context. <!-- /react-text --></p></section><section class="toc" data-reactid="99"><ul data-reactid="100"><li data-reactid="101"><a class="bisheng-toc-h2" href="#In-Page-Editing" data-reactid="102"><!-- react-text: 103 -->In-Page Editing<!-- /react-text --></a></li><li data-reactid="104"><a class="bisheng-toc-h2" href="#Drag-and-Drop" data-reactid="105"><!-- react-text: 106 -->Drag and Drop<!-- /react-text --></a></li><li data-reactid="107"><a class="bisheng-toc-h2" href="#Direct-SelectionComing-Soon" data-reactid="108"><span class="waiting" data-reactid="109"><!-- react-text: 110 -->Direct SelectionComing Soon<!-- /react-text --></span></a></li></ul></section><section class="markdown" data-reactid="111"><h2 id="In-Page-Editing" data-reactid="112"><span data-reactid="113"><!-- react-text: 114 -->In-Page Editing<!-- /react-text --></span><a href="#In-Page-Editing" class="anchor" data-reactid="115">#</a></h2><div class="preview-image-boxes clearfix" data-reactid="116"><div class="preview-image-box" data-reactid="117"><div class="preview-image-wrapper false false" data-reactid="118"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/PmVuUUKeamHdveT.png" alt="Example of click to edit" data-reactid="119"/></div><div class="preview-image-title" data-reactid="120">Example of click to edit</div><div class="preview-image-description" data-reactid="121">Status 1: Common browsing mode, do not distinguish between editable and non-editable lines<br>Status 2: On mouse hover, the background is backlit with yellow. A tool tip invites the user to “Click to edit”;<br>Status 3: Once the user clicks on the title, the form elements 『Input box』, 『Ok』 and 『Cancel』 appear, and the cursor is positioned in the 『input box』.</div><!-- react-empty: 122 --></div></div><p data-reactid="123"><!-- react-text: 124 -->Single-Field Inline Edit<!-- /react-text --></p><p data-reactid="125"><!-- react-text: 126 -->If 『readability』 is more important than 『editability』, 『click to edit』 can be used.<!-- /react-text --></p><p data-reactid="127"><br data-reactid="128"/></p><div class="preview-image-boxes clearfix" data-reactid="129"><div class="preview-image-box" data-reactid="130"><div class="preview-image-wrapper false false" data-reactid="131"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/ZmRlahliUbCurhu.png" alt="Example of Text link/Icon Edit" data-reactid="132"/></div><div class="preview-image-title" data-reactid="133">Example of Text link/Icon Edit</div><div class="preview-image-description" data-reactid="134">Status 1: Text link/icon appears near the editable line.<br>Status 2: Once the mouse clicks 『edit』,the form elements 『Input box』, 『Ok』 and 『Cancel』 appear, and the cursor is positioned in the 『input box』.
</div><!-- react-empty: 135 --></div></div><p data-reactid="136"><!-- react-text: 137 -->If the priority is given to 『readability』 and the 『editability』 of operation lines need to be highlighted at the same time, 『text link/icon edit』can be used.<!-- /react-text --></p><p data-reactid="138"><br data-reactid="139"/></p><div class="preview-image-boxes clearfix" data-reactid="140"><div class="preview-image-box" data-reactid="141"><div class="preview-image-wrapper false false" data-reactid="142"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/hGXGErepBnrwqzj.png" alt="Example of Multi-Field Inline Edit" data-reactid="143"/></div><div class="preview-image-title" data-reactid="144">Example of Multi-Field Inline Edit</div><div class="preview-image-description" data-reactid="145">Edit mode without destroying integrity can enlarge the space in order to put down the 『Input box』 and other form elements. Besides, when switching the edit mode in the Table, it is necessary to ensure that each column does not beat.</div><!-- react-empty: 146 --></div></div><p data-reactid="147"><!-- react-text: 148 -->Multi-Field Inline Edit<!-- /react-text --></p><blockquote data-reactid="149"><p data-reactid="150"><!-- react-text: 151 -->NoteIn『Multi-Field Inline Edit』,there are huge different between the content and required fieldSo it is more needed to use the <!-- /react-text --><a href="../spec/transition#解释刚刚发生了什么" data-reactid="152">『Explain What Just Happened』</a><!-- react-text: 153 --> in 『Use Transition』to eliminate this visual effects.<!-- /react-text --></p></blockquote><p data-reactid="154"><br data-reactid="155"/></p><p data-reactid="156"><!-- react-text: 157 -->More mode of 『In-page Edit』 please visit <!-- /react-text --><a href="/docs/pattern/table#模块编辑" data-reactid="158">『ModeTableInteraction』</a></p><p data-reactid="159"><br data-reactid="160"/></p><hr data-reactid="161"/><h2 id="Drag-and-Drop" data-reactid="162"><span data-reactid="163"><!-- react-text: 164 -->Drag and Drop<!-- /react-text --></span><a href="#Drag-and-Drop" class="anchor" data-reactid="165">#</a></h2><div class="preview-image-boxes clearfix" data-reactid="166"><div class="preview-image-box" data-reactid="167"><div class="preview-image-wrapper false false" data-reactid="168"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/DjMFcqSxZrulbGF.png" alt="Example of Drag and Drop List" data-reactid="169"/></div><div class="preview-image-title" data-reactid="170">Example of Drag and Drop List</div><div class="preview-image-description" data-reactid="171">Status 1: On mouse hover,a removable 『icon』 appears.<br>Status 2 When hovering over the 『icon』,the pointer changes into a 『hand』, click-and-drag operation can be used<br>Status 3Drag target to the placeable block. When blue stroke appears, inform user that object can be placed in the block.</div><!-- react-empty: 172 --></div></div><p data-reactid="173"><!-- react-text: 174 -->Drag and Drop List<!-- /react-text --></p><p data-reactid="175"><!-- react-text: 176 -->Drag and Drop can only limited in one dimensionupper/down or left/right<!-- /react-text --></p><p data-reactid="177"><br data-reactid="178"/></p><div class="preview-image-boxes clearfix" data-reactid="179"><div class="preview-image-box" data-reactid="180"><div class="preview-image-wrapper false false" data-reactid="181"><img class="preview-img" src="https://os.alipayobjects.com/rmsportal/KVhqdSoLUjXPXuN.png" alt="Example of Drag and Drop picture/file" data-reactid="182"/></div><div class="preview-image-title" data-reactid="183">Example of Drag and Drop picture/file</div><div class="preview-image-description" data-reactid="184"></div><!-- react-empty: 185 --></div></div><p data-reactid="186"><!-- react-text: 187 -->Drag and Drop picture/file<!-- /react-text --></p><p data-reactid="188"><br data-reactid="189"/></p><p data-reactid="190"><span class="waiting" data-reactid="191"><!-- react-text: 192 -->Drag and Drop ObjectComing Soon<!-- /react-text --></span></p><p data-reactid="193"><span class="waiting" data-reactid="194"><!-- react-text: 195 -->Drag and Drop Multi-ObjectsComing Soon<!-- /react-text --></span></p><p data-reactid="196"><br data-reactid="197"/></p><hr data-reactid="198"/><h2 id="Direct-SelectionComing-Soon" data-reactid="199"><span data-reactid="200"><span class="waiting" data-reactid="201"><!-- react-text: 202 -->Direct SelectionComing Soon<!-- /react-text --></span></span><a href="#Direct-SelectionComing-Soon" class="anchor" data-reactid="203">#</a></h2></section></article></div></div><div class="ant-row" data-reactid="204"><div class="ant-col-xs-24 ant-col-sm-24 ant-col-md-18 ant-col-md-offset-6 ant-col-lg-20 ant-col-lg-offset-4" data-reactid="205"><section class="prev-next-nav" data-reactid="206"><a class="prev-page" href="/docs/spec/repetition" data-reactid="207">Repetition</a><a class="next-page" href="/docs/spec/stay" data-reactid="208">Stay on the Page</a></section></div></div></div><footer id="footer" data-reactid="209"><ul data-reactid="210"><li data-reactid="211"><h2 data-reactid="212">GitHub</h2><div data-reactid="213"><a target="_blank " href="https://github.com/ant-design/ant-design" data-reactid="214"><span data-reactid="215">Repository</span></a></div><div data-reactid="216"><a target="_blank" rel="noopener noreferrer" href="https://github.com/dvajs/dva" data-reactid="217">dva</a><!-- react-text: 218 --> - <!-- /react-text --><span data-reactid="219">Framework</span></div><div data-reactid="220"><a target="_blank" rel="noopener noreferrer" href="https://github.com/dvajs/dva-cli" data-reactid="221">dva-cli</a><!-- react-text: 222 --> -<!-- /react-text --><span data-reactid="223">Scaffold</span></div><div data-reactid="224"><a target="_blank" rel="noopener noreferrer" href="http://ant-tool.github.io" data-reactid="225">ant-tool</a><!-- react-text: 226 --> - <!-- /react-text --><span data-reactid="227">Developer Tools</span></div></li><li data-reactid="228"><h2 data-reactid="229"><span data-reactid="230">Links</span></h2><div data-reactid="231"><a href="http://mobile.ant.design" data-reactid="232">Ant Design Mobile</a><span data-reactid="233"> - </span><span data-reactid="234">Mobile</span></div><div data-reactid="235"><a href="https://g2.alipay.com/" data-reactid="236">G2</a><span data-reactid="237"> - </span><span data-reactid="238">Data Visualization</span></div><div data-reactid="239"><a href="https://antv.alipay.com/" data-reactid="240">AntV</a><span data-reactid="241"> - </span><span data-reactid="242">Data Visualization Specification</span></div><div data-reactid="243"><a href="http://motion.ant.design" data-reactid="244">Ant Motion</a><span data-reactid="245"> - </span><span data-reactid="246">Motion</span></div><div data-reactid="247"><a href="http://library.ant.design/" data-reactid="248">AntD Library</a><span data-reactid="249"> - </span><span data-reactid="250">Axure library of Ant Design</span></div><div data-reactid="251"><a href="http://ux.ant.design" data-reactid="252">Ant UX</a><span data-reactid="253"> - </span><span data-reactid="254">Sitemap Template</span></div></li><li data-reactid="255"><h2 data-reactid="256"><span data-reactid="257">Community</span></h2><div data-reactid="258"><a rel="noopener noreferrer" href="/changelog" data-reactid="259"><span data-reactid="260">Change Log</span></a></div><div data-reactid="261"><a target="_blank" rel="noopener noreferrer" href="https://github.com/ant-design/ant-design/issues" data-reactid="262"><span data-reactid="263">Feedback</span></a></div><div data-reactid="264"><a target="_blank" rel="noopener noreferrer" href="https://gitter.im/ant-design/ant-design" data-reactid="265"><span data-reactid="266">Chat Room</span></a></div><div data-reactid="267"><a target="_blank" rel="noopener noreferrer" href="https://github.com/ant-design/ant-design/issues/new" data-reactid="268"><span data-reactid="269">Bug Report</span></a></div></li><li data-reactid="270"><div data-reactid="271"><!-- react-text: 272 -->©2016 <!-- /react-text --><span data-reactid="273">Created by Ant UED</span></div><div data-reactid="274"><!-- react-text: 275 -->Powered by <!-- /react-text --><a href="https://github.com/benjycui/bisheng" data-reactid="276">BiSheng</a></div><div style="margin-top:10px;" data-reactid="277"><span data-reactid="278">Version: </span><div class="ant-select-sm ant-select ant-select-enabled" data-reactid="279"><div class="ant-select-selection
ant-select-selection--single" role="combobox" aria-autocomplete="list" aria-haspopup="true" aria-expanded="false" tabindex="0" data-reactid="280"><div class="ant-select-selection__rendered" data-reactid="281"><div class="ant-select-selection-selected-value" title="2.6.4" style="display:block;opacity:1;" data-reactid="282">2.6.4</div></div><span class="ant-select-arrow" style="user-select:none;-webkit-user-select:none;" unselectable="unselectable" data-reactid="283"><b data-reactid="284"></b></span></div></div></div></li></ul></footer></div>
</div>
<script>
function isZhCN(pathname) {
return /-cn\/?$/.test(pathname);
}
function getLocalizedPathname(path, zhCN) {
var pathname = path.startsWith('/') ? path : '/' + path;
if (!zhCN) { // to enUS
return /\/?index-cn/.test(pathname) ? '/' : pathname.replace('-cn', '');
} else if (pathname === '/') {
return '/index-cn';
} else if (pathname.endsWith('/')) {
return pathname.replace(/\/$/, '-cn/');
}
return pathname + '-cn';
}
var queryString = location.search;
if (queryString) {
var pathname = location.pathname;
var isZhCNConfig = queryString.indexOf('zh-CN') > -1;
if (isZhCNConfig !== isZhCN(pathname)) {
location.pathname = getLocalizedPathname(pathname, isZhCNConfig)
}
}
</script>
<script src="/common.js"></script>
<script src="/index.js"></script>
</body>
</html>