Set flex-basis to 0% when omitted in flex shorthand.

This commit is contained in:
Xidorn Quan 2017-05-29 14:24:07 +10:00
parent aca09436b7
commit acb7242304
4 changed files with 34 additions and 4 deletions

View file

@ -1099,9 +1099,14 @@
/// Returns a value representing a `0` length.
pub fn zero() -> Self {
use values::specified::length::{LengthOrPercentageOrAuto, NoCalcLength};
SpecifiedValue(MozLength::LengthOrPercentageOrAuto(
LengthOrPercentageOrAuto::Length(NoCalcLength::zero())))
use values::specified::length::LengthOrPercentageOrAuto;
SpecifiedValue(MozLength::LengthOrPercentageOrAuto(LengthOrPercentageOrAuto::zero()))
}
/// Returns a value representing a `0%` length.
pub fn zero_percent() -> Self {
use values::specified::length::LengthOrPercentageOrAuto;
SpecifiedValue(MozLength::LengthOrPercentageOrAuto(LengthOrPercentageOrAuto::zero_percent()))
}
}
% endif

View file

@ -92,7 +92,11 @@
Ok(expanded! {
flex_grow: grow.unwrap_or(Number::new(1.0)),
flex_shrink: shrink.unwrap_or(Number::new(1.0)),
flex_basis: basis.unwrap_or(longhands::flex_basis::SpecifiedValue::zero()),
// Per spec, this should be SpecifiedValue::zero(), but all
// browsers currently agree on using `0%`. This is a spec
// change which hasn't been adopted by browsers:
// https://github.com/w3c/csswg-drafts/commit/2c446befdf0f686217905bdd7c92409f6bd3921b
flex_basis: basis.unwrap_or(longhands::flex_basis::SpecifiedValue::zero_percent()),
})
}

View file

@ -735,6 +735,12 @@ impl Percentage {
Self::parse_with_clamping_mode(input, AllowedNumericType::NonNegative)
}
/// 0%
#[inline]
pub fn zero() -> Self {
Percentage(0.)
}
/// 100%
#[inline]
pub fn hundred() -> Self {
@ -999,6 +1005,11 @@ impl LengthOrPercentageOrAuto {
pub fn zero() -> Self {
LengthOrPercentageOrAuto::Length(NoCalcLength::zero())
}
/// Returns a value representing `0%`.
pub fn zero_percent() -> Self {
LengthOrPercentageOrAuto::Percentage(Percentage::zero())
}
}
impl Parse for LengthOrPercentageOrAuto {
@ -1157,6 +1168,11 @@ impl LengthOrPercentageOrAutoOrContent {
pub fn zero() -> Self {
LengthOrPercentageOrAutoOrContent::Length(NoCalcLength::zero())
}
/// Returns a value representing `0%`.
pub fn zero_percent() -> Self {
LengthOrPercentageOrAutoOrContent::Percentage(Percentage::zero())
}
}
impl ToCss for LengthOrPercentageOrAutoOrContent {