position: absolute and alignSelf

This commit is contained in:
Christopher Chedeau
2014-04-21 14:58:44 -07:00
parent 72e2d959f2
commit 9760cfd323
2 changed files with 32 additions and 18 deletions

View File

@@ -243,27 +243,30 @@ var computeLayout = (function() {
for (var/*int*/ i = 0; i < node.children.length; ++i) {
var/*css_node_t**/ child = node.children[i];
var/*css_align_t*/ alignItem = getAlignItem(node, child);
var/*float*/ remainingCrossDim = node.layout[dim[crossAxis]] -
getDimWithMargin(child, crossAxis) -
getPadding(node, leading[crossAxis]) -
getPadding(node, trailing[crossAxis]);
var/*float*/ leadingCrossDim = getPadding(node, leading[crossAxis]);
if (alignItem == CSS_ALIGN_FLEX_START) {
// Do nothing
} else if (alignItem == CSS_ALIGN_CENTER) {
leadingCrossDim += remainingCrossDim / 2;
} else if (alignItem == CSS_ALIGN_FLEX_END) {
leadingCrossDim += remainingCrossDim;
} else if (alignItem == CSS_ALIGN_STRETCH) {
child.layout[dim[crossAxis]] = node.layout[dim[crossAxis]] -
if (getPositionType(child) === 'relative') {
var/*css_align_t*/ alignItem = getAlignItem(node, child);
var/*float*/ remainingCrossDim = node.layout[dim[crossAxis]] -
getDimWithMargin(child, crossAxis) -
getPadding(node, leading[crossAxis]) -
getPadding(node, trailing[crossAxis]) -
getMargin(child, leading[crossAxis]) -
getMargin(child, trailing[crossAxis]);
getPadding(node, trailing[crossAxis]);
var/*float*/ leadingCrossDim = getPadding(node, leading[crossAxis]);
if (alignItem == CSS_ALIGN_FLEX_START) {
// Do nothing
} else if (alignItem == CSS_ALIGN_CENTER) {
leadingCrossDim += remainingCrossDim / 2;
} else if (alignItem == CSS_ALIGN_FLEX_END) {
leadingCrossDim += remainingCrossDim;
} else if (alignItem == CSS_ALIGN_STRETCH) {
child.layout[dim[crossAxis]] = node.layout[dim[crossAxis]] -
getPadding(node, leading[crossAxis]) -
getPadding(node, trailing[crossAxis]) -
getMargin(child, leading[crossAxis]) -
getMargin(child, trailing[crossAxis]);
}
child.layout[pos[crossAxis]] += leadingCrossDim;
}
child.layout[pos[crossAxis]] += leadingCrossDim;
}
node.layout[leading[mainAxis]] += getMargin(node, leading[mainAxis]) +