我有一个标准的dojox.mobile.EdgeToEdge
列表,里面有一组dojox.mobile.ListItem
个。我需要确保每个列表项具有相同的高度。请参阅下面的绘制不佳的表示:
标准EdgeToEdgeList
与ListItem
s:
+-------------------+
| Standard ListItem |
|-------------------|
| Standard ListItem |
|-------------------|
| Standard ListItem |
|-------------------|
| Standard ListItem |
+-------------------+
标准EdgeToEdgeList
,可变高度列表项;通过在列表项上设置variableHeight
属性来实现:
+-------------------+
| Standard ListItem |
|-------------------|
| Standard ListItem |
|-------------------|
| Standard ListItem |
| with some long |
| text and variable |
| height that wraps |
| to next line |
|-------------------|
| Standard ListItem |
+-------------------+
EdgeToEdgeList
具有相同的高度列表项(较小的列表项“取”最大的高度):
+-------------------+
| |
| |
| Standard ListItem |
| |
| |
|-------------------|
| |
| |
| Standard ListItem |
| |
| |
|-------------------|
| Standard ListItem |
| with some long |
| text and variable |
| height that wraps |
| to next line |
|-------------------|
| |
| |
| Standard ListItem |
| |
| |
+-------------------+
我正在尝试复制第三种解决方案。有没有标准的方法来做到这一点?
编辑:我没有提到我正在以编程方式构建列表,所以我不知道手头最大项目的高度。这样的事情能起作用吗?
var largest = 0;
array.forEach(list.getChildren(), function(child) {
var childHeight = domStyle.get(child.domNode, 'height');
largest = (childHeight > largest) ? childHeight : largest;
});
array.forEach(list.getChildren(), function(child) {
domStyle.set(child.domNode, 'height', largest + 'px');
});
这似乎有点“黑客”。
答案 0 :(得分:0)
覆盖.mblListItem
CSS类中的height属性。
我相信默认高度是43px。
编辑:我认为您的代码可以运行,但您需要将ListItem
设置为variableHeight,以便Dojo计算每个代码的高度,然后取最大并将其应用于每个。与您编写的内容类似,但添加了variableHeight,然后在应用最大高度时将其删除。
var largestHeight = 0;
var list = dijit.byId("list");
dojo.forEach(data, function(record) {
var listItem = new dojox.mobile.ListItem({
label: data.label
variableHeight: true,
});
list.addChild(listItem);
var currentHeight = (dojo.style(listItem.domNode, 'height');
largestHeight = (currentHeight > largestHeight ? currentHeight : largestHeight);
});
dojo.query('.mblListItem', dojo.byId('list')).forEach(function(node) {
dojo.removeClass(node, 'mblVariableHeight');
dojo.style(node, 'height', largestHeight + 'px');
});