W3C home > Mailing lists > Public > www-style@w3.org > April 2015

[css-align][css-flexbox]

From: Javier Fernandez <jfernandez@igalia.com>
Date: Wed, 01 Apr 2015 13:49:52 +0200
Message-ID: <551BDB60.5080805@igalia.com>
To: "www-style@w3.org" <www-style@w3.org>
Last version of CSS Flexbox specification still defines the align-self,
align-items, justify-content and align-content properties independently
of the new CSS Box Alignment specification. However, the Alignment
section headline makes a explicit reference to this spec in order to
define the alignment behavior for Flexbox. This situation causes some
contradictions, or at least, misunderstandings of what values are valid
and what not for Flexbox.

In the last Flexbox Editor's draft (2 March 2015) the alignment
properties are defined as follows:

- align-items
  + value:  flex-start | flex-end | center | baseline | stretch
  + initial: 'stretch'
  + computed value: specified value

- align-self:
  + value: auto | flex-start | flex-end | center | baseline | stretch
  + initial: 'auto'
  + computed value: 'auto' computes to parent’s align-items value;
otherwise as specified

- justify-content/align-content:
  + value: flex-start | flex-end | center | space-between | space-around
  + initial: 'flex-start'
  + computed value: specified value

In the last Alignment Editor's draft (18 December 2014) the same
alignment properties are defined as follows:

- align-items:
  + value: auto | stretch | <baseline-position> | [ <self-position> &&
<overflow-position>? ]
  + initial: 'auto'
  + computed value: specified value, except for auto (see prose)
     * 'stretch' for flex containers and grid containers
     * 'start' for everything else

- align-self:
   + value:  auto | stretch | <baseline-position> | [
<overflow-position>? && <self-position> ]
   + initial: 'auto'
   + Computed value: specified value, except for 'auto' (see prose)
       * The 'auto' keyword computes to itself on absolutely-positioned
elements, and to the computed value of align-items on the parent on all
other boxes, or 'start' if the box has no parent.

- justify-content/align-content:
  + value: auto | <baseline-position> | <content-distribution> || [
<overflow-position>? && <content-position> ]
  + initial: 'auto'
  + computed value: specified value, except for auto (see prose)
       * Flex containers: 'auto' computes to 'stretch'.
       * Gird containers: 'auto' computes to 'start'.
       * Block containers: For table cells the behavior of the 'auto'
depends on the computed value of vertical-align, otherwise it behaves as
'start'.

First of all, I think it's confusing to state that Flexbox spec "respect
the alignment properties from CSS Box Alignment" and then re-define
those properties with a subset of the allowed values and a different
initial and computed values behavior.

The most problematic case is 'start' as initial value, since it'd
declared as invalid when using as reference just the Flexbox
specification. The Flexbox item's align-items property will be resolved
to 'start' when using the 'auto' value as initial, according to the Box
Alignment specification, however, this is not a valid value according to
the Flexbox specification.

I think one way to solving these conflicts and avoid confusion would be
to just rely all the Flexbox Alignment behavior to the Box Alignment
specification, as the Gird Layout spec already does.

I understand that Box Alignment specification is not as stable and
Flexbox, but I wonder about the plans for the future regarding its
integration with the Flexbox spec.

BR.

--
javi
Received on Wednesday, 1 April 2015 12:09:23 UTC

This archive was generated by hypermail 2.3.1 : Monday, 2 May 2016 14:39:30 UTC