您的位置:首页 > 其它

enyo官方开发入门教程翻译一Layout之Fittables

2013-02-25 21:52 429 查看
Fittables

Fittable包帮助你创建布局更合理的使用可用空间(app都有这样的布局需求,但使用以前的web技术很难做到这一点)。个人观点,现在移动Web开发框架中有很多都支持自适应布局,如senchatouch,但是enyo的这种方式在创建复杂的页面时依旧很容易实现。

FittableColumns and FittableRows

FittableColumnsFittableRows control 使你可以定义视图的各子部分的行列布局。在一个view中你可以使用可用空间来扩展一个child,而它的兄弟保留原来的大小样式。

要标记一个child control的大小范围,须将它的fit属性设置为true,例如:

enyo.kind({

kind: "FittableColumns",

components: [

{content: "1"},

{content: "2", fit: true},

{content: "3"}

]

});

FittableColumnsLayout and FittableRowsLayout

另一种使用fittable布局策略的方法是将kind的layoutkind属性设置为"FittableColumnsLayout" 或 "FittableRowsLayout":

enyo.kind({

kind: enyo.Control,

layoutKind: "FittableColumnsLayout",

components: [

{content: "1"},

{content: "2", fit: true},

{content: "3"}

]

});

FittableColumnsLayout和FittableRowsLayout都是直接从 enyo.FittableLayout继承来的( 它提供了基本的定位和边界逻辑)

Nested Fittables

由于需要,fittable view有时需要嵌套,如下例:

enyo.kind({

name: "NestedFittablesExample",

kind: "FittableRows",

components: [

{content: "Top", allowHtml: true, classes: "outer-box"},

{content: "Middle", allowHtml: true, classes: "outer-box"},

{kind: "FittableColumns", fit: true, classes: "outer-box", components: [

{content: "Left", classes: "inner-box"},

{content: "Fits!", fit: true, classes: "inner-box"},

{content: "Right", classes: "inner-box"}

]}

]

});

出于完整性,给出css样式:

.outer-box {

border: 2px solid orange;

padding: 4px;

white-space: nowrap;

overflow: hidden;

margin-top: 3px;

margin-bottom: 3px;

}

.inner-box {

border: 2px solid lightblue;

padding: 4px;

white-space: nowrap;

overflow: hidden;

margin: 2px;

}

Parting Thoughts

如果你认为fittables听起来很像一个有限的版本的CSS灵活箱模型,你是对的。我们的主要目标是提供一种功能像Flex并且跨浏览器的fittables布局模型。我们也要让尽可能少的限制在CSS样式的子组件,并谨慎使用JavaScript(我们使用它来计算fittable高度的元素,否则将由浏览器来决定布局样式)。

我们想强调,你应该只使用fittables当你需要视图来扩张和收缩来适合可用的空间。如果你只是想安排元素水平或垂直,你最好使用标准的Web布局技术。

你可以在Sampler app 中看到enyo fittables自适应布局的一些示例程序。你也可以在enyo的解压包lib\layout\fittable\samples下找到一些示例并查看完整的代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: