position: absolute and alignSelf
This commit is contained in:
@@ -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]) +
|
||||
|
@@ -493,6 +493,17 @@ describe('Layout', function() {
|
||||
);
|
||||
});
|
||||
|
||||
it('should layout node with position: absolute, padding and alignSelf: center', function() {
|
||||
testLayout(
|
||||
{style : {}, children : [
|
||||
{style: {paddingRight: 12, alignSelf: 'center', position: 'absolute'}}
|
||||
]},
|
||||
{width: 0, height: 0, top: 0, left: 0, children: [
|
||||
{width: 12, height: 0, top: 0, left: 0}
|
||||
]}
|
||||
);
|
||||
})
|
||||
|
||||
it('should layout randomly', function() {
|
||||
function RNG(seed) {
|
||||
this.state = seed;
|
||||
|
Reference in New Issue
Block a user