代码之家  ›  专栏  ›  技术社区  ›  Wes

最小内容和最大内容是如何工作的?

  •  20
  • Wes  · 技术社区  · 6 年前

    你好吗 min-content max-content 用css计算的值?

    内在维度意味着什么?

    1 回复  |  直到 6 年前
        1
  •  42
  •   Wes    6 年前

    注意:本文中的“宽度”指的是“逻辑宽度”,而不是CSS width ;也就是说,这些值对CSS的 height 如果语言方向是垂直的(如东亚语言),或在flexbox或网格中。 min-content max-content 是的有效值 宽度 , 高度 , min-width , min-height , max-width , max-height 还有更多的属性(比如 flex-basis )

    盒子的内在尺寸是多少?

    CSS尺寸级别3引入了 内在的 尺寸-与 外在的 . 安 外在的 框的尺寸是在框的父框上计算的。例如 width: 80% 据说是 外在维度 作为 宽度 主题取决于 宽度 它的容器。

    与此相反, width: min-content 据说 内在的 因为盒子的宽度是根据盒子本身所包含内容的尺寸来计算的。

    内在的 维度是框本身的属性,只有将框放置在文档中并允许计算这些值的上下文中时,外部维度才可用。例如,在CSS流(经典的CSS布局模式)中,您可能知道, height: 20% 只有当 高度 在父元素中定义(即它是可继承的);这是 外在的 不可计算的维度(当外部值不可用时,CSS将回退到其内部等效值)。相反 height: min-content 总是可以计算的 内在的 不管方框在文档中的位置(或方框不在),它始终是相同的。


    定义 最小含量 最大含量 这些年来已经改变了很多次,但是结果总是保持不变,而且很容易掌握。他们最初是被社区要求作为 宽度 ,当框为 float 惯性导航与制导。实际上,这两个属性的定义最初是基于 浮动 ;现在更一般地定义如下:

    最小含量

    https://www.w3.org/TR/css-sizing-3/#min-content

    一个盒子可以采用的最小尺寸不会导致溢出,选择较大的尺寸可以避免溢出。

    换句话说, 盒子的最小宽度,盒子的内容不会溢出盒子本身。 .

    一个很好的可视化方法是,事实上, 浮动 .

    /* the computed width of #red in this example 
       equals to specifying #red { width: min-content } */
    #blue        { width: 0px; }
    #blue > #red { float: left; }
    

    min-content

    (GIF来源: http://jsfiddle.net/6srop4zu/ )

    在上面的gif中, 红盒子的 最小内容宽度 等于蓝框宽度为0px时的红框宽度 (在gif中的234px,在jfiddle中可能不同)。

    如你所见,如果红盒子变小了,这个词 supercalifragilisticexpialidocious 会溢出红盒,因此在这种情况下 最小含量 等于该特定单词的宽度,因为它是水平占用最多空间的单词。

    最大含量

    https://www.w3.org/TR/css-sizing-3/#max-content

    当给定无限的可用空间时,框在给定轴上的理想大小。通常情况下,这是盒子在仍然适合其内容的情况下可以在该轴中采用的最小尺寸,即在避免溢出的同时最小化未填充的空间。

    /* the computed width of #red in this example
       equals to specifying #red { width: max-content } */
    
    #blue        { width: 99999999999999999px; } /* ~infinite */
    #blue > #red { float: left; }
    

    max-content

    (GIF来源: http://jsfiddle.net/nktsrzvg/ )

    在上面的gif中, 红盒子的 最大内容宽度 当蓝色框的宽度为无穷大时,等于红色框的宽度 (在GIF中为386px,在JSfiddle中可能不同)。

    在这里,红框充分利用了蓝框中X轴上的可用空间,但不会浪费空间。允许内容在相关轴上无限制地展开,红框将其包裹在最大展开点。


    怎么样 fit-content , stretch 其他人呢?这些地产目前正在重新评估,因此不稳定(日期:2018年7月)。当它们变得更成熟时(希望很快)就会添加到这里。

    推荐文章