原文地址:http://ajaxpatterns.org/Microcontent
问题:如何让用户改变内容?
动机:
- Web不仅仅是提供消息的地方。管理者和一般用户花很多时间在添加和编辑内容上。
- 所有用户,不管角色如何,都需要知道可以修改什么。
- 为了鼓励贡献和提升用户体验,编辑应该是简单的。
- 可编辑的内容页面通常很难看。它们在贡献者和阅读者之间制造了鸿沟,在编辑的时候,很难想象阅读者看到的样子。
解决:Compose the page of “Malleable Content” blocks - small chunks of content that can be edited in-page.
以少量内容的块为单位来组织结构,每个可编辑的区域是分离的。
这样的解决方式已经应用在传统的Web应用中,但是问题是页面的重新加载。重新加载的问题是传统网站有很大的表单的原因之一。这是一种模式(modal)的交互过程,要么编辑要么阅读。
Ajax使得编辑过程更加的平滑。在多数情况下,一个微内容(microcontent)是一个div元素。当该微内容可编辑的时候,另外一个可编辑的div可以被交换进来,或者原来的div变成可以编辑的。另外的一个技巧是使用没有边框的text field和text area,使它们看起来像是只读状态。
决策:
用户如何定位Malleable Content,并打开它进行编辑?
用户需要知道哪些区域是可以编辑的。有两种方式,静态的外观可以提供一些线索;事件处理可以进行进一步的细化。
静态的页面外观使得很容易识别出哪些是可编辑的。很多的做法都是基于Highlight模式的。
- 增加相继的Malleable Content的间隔。
- 改变相继的Malleable Content的字体。
- 为Malleable Content提供不同的背景。
- 为Malleable Content提供显式的边框。
- 暴露编辑控件。
- 在Malleable Content的周围添加标签和辅助信息。
这些都提供了足够的信息,不过这些做法会破坏连续性而且并不适合阅读。另外一个可以依靠的是动态行为。鼠标移动是需要监视的最重要的活动。当鼠标滑过的时候,控件可以改变以声明它们是可编辑的。上面所有的静态线索都可以作为动态线索。比如鼠标滑过Malleable Content的时候改变其背景颜色。
Malleable Content需要标签吗?提供什么样的辅助信息?
很多时候,可以为Malleable Content提供一个显式的名称。名称可以出现在上方和旁边,或是tooltip。
辅助信息可以包括:
- 创建内容的用户
- 最后编辑该内容的用户
- 编辑的次数
- 创建日期
- 最后编辑日期
哪些内容将被作为Malleable Content?Malleable Content可以有多大?
任何可以编辑的信息都可以包括在Malleable Content中。如果某些数据的组合是无效的,最好让用户一次编辑所有的数据。Malleable Content应该足够大,从而形成内容上紧密联系的单元。最好足够小,从而编辑的时候不需要滚动条。
用户如何停止编辑?
有如下的选择:
- 当失去焦点的时候,内容被保存同时变成只读的。
- 添加显式的控件,比如保存按钮。
考虑如下:
- 同一时间是否允许多个Malleable Content可以编辑。
- 用户需要可以取消编辑。
实例: