Html 将边距扩展到未知宽度

Html 将边距扩展到未知宽度,html,css,Html,Css,我有一些文本元素显示为内联块,每个元素都有固定数量的填充,比如10个像素。所有这些文本元素都位于宽度未知的容器内的text align中心。以下是一个JSFIDLE示例: HTML: <div class="outer"> <div class="inner"> <span style="background:#0f0;">A</span> <span style="background:#00f;"&

我有一些文本元素显示为
内联块
,每个元素都有固定数量的
填充
,比如10个像素。所有这些文本元素都位于宽度未知的容器内的
text align
中心。以下是一个JSFIDLE示例:

HTML

<div class="outer">
    <div class="inner">
        <span style="background:#0f0;">A</span>
        <span style="background:#00f;">B</span>
        <span style="background:#ff0;">C</span>
        <span style="background:#0ff;">D</span>
        <span style="background:#f0f;">E</span>
    </div>
</div>
.outer {width:500px;}
.inner {
    background:#f00;
    font-size:0; /* To avoid white space width */
    text-align:center;
}
.inner span {
    display:inline-block;
    font-size:20px;
    padding:10px;
}

我希望第一个元素的
背景
/
填充
尽可能向左延伸,最后一个元素的
背景
/
填充
尽可能向右延伸。如果可以在不填充
的情况下完成,那很好,只要
背景
具有所描述的行为。

如果您不介意牺牲一些浏览器支持,CSS flexbox是最简单的方法:

此方法的主要优点是不需要显式设置
.outer
的宽度,因此非常灵活(因此称为flex display):

您需要在
flex
属性中添加适当的供应商前缀,以启用跨浏览器支持。

我们在这里所做的基本上是给父元素
.internal
,一个flex显示属性。这允许我们微调其
子级的维度。由于您只希望第一个和最后一个子项增长以填充所有剩余空间,因此我们允许它们增长以填充所有可用空间
flex grow:1
(默认值为
flex grow:0
),然后将第一个子项上的文本对齐设置为右侧,以实现所需的文本对齐

有关CSS flexbox的全面指南,您可以查看


<强> Update <强>:如果CSS FLUBBOX支持在目标受众的浏览器中缺乏,则可以考虑设置背景梯度。诀窍是设置一个中间色调的双色调背景,左边颜色对应最左边的<代码> >代码>右边的颜色对应最右边的颜色。< /P> 同样,这种方法的优点是它不需要明确说明

.outer
的宽度。然而,主要的缺点是,第一个和最后一个跨度的背景颜色必须是已知的,并且是静态的,否则您将不得不依靠JS来嗅出(动态)背景颜色并动态创建新的背景渐变

.outer {
    width:500px;
    background-image: linear-gradient(90deg, #0f0 0%, #0f0 50%, #f0f 50%, #f0f 100%);
}
此解决方案的侵入性较小,因为您的所有代码都已被保留,我只添加了
背景图像
声明:)


如果您不介意牺牲一些浏览器支持,CSS flexbox是最简单的方法:

此方法的主要优点是不需要显式设置
.outer
的宽度,因此非常灵活(因此称为flex display):

您需要在
flex
属性中添加适当的供应商前缀,以启用跨浏览器支持。

我们在这里所做的基本上是给父元素
.internal
,一个flex显示属性。这允许我们微调其
子级的维度。由于您只希望第一个和最后一个子项增长以填充所有剩余空间,因此我们允许它们增长以填充所有可用空间
flex grow:1
(默认值为
flex grow:0
),然后将第一个子项上的文本对齐设置为右侧,以实现所需的文本对齐

有关CSS flexbox的全面指南,您可以查看


<强> Update <强>:如果CSS FLUBBOX支持在目标受众的浏览器中缺乏,则可以考虑设置背景梯度。诀窍是设置一个中间色调的双色调背景,左边颜色对应最左边的<代码> >代码>右边的颜色对应最右边的颜色。< /P> 同样,这种方法的优点是它不需要明确说明

.outer
的宽度。然而,主要的缺点是,第一个和最后一个跨度的背景颜色必须是已知的,并且是静态的,否则您将不得不依靠JS来嗅出(动态)背景颜色并动态创建新的背景渐变

.outer {
    width:500px;
    background-image: linear-gradient(90deg, #0f0 0%, #0f0 50%, #f0f 50%, #f0f 100%);
}
此解决方案的侵入性较小,因为您的所有代码都已被保留,我只添加了
背景图像
声明:)


如果您不介意牺牲一些浏览器支持,CSS flexbox是最简单的方法:

此方法的主要优点是不需要显式设置
.outer
的宽度,因此非常灵活(因此称为flex display):

您需要在
flex
属性中添加适当的供应商前缀,以启用跨浏览器支持。

我们在这里所做的基本上是给父元素
.internal
,一个flex显示属性。这允许我们微调其
子级的维度。由于您只希望第一个和最后一个子项增长以填充所有剩余空间,因此我们允许它们增长以填充所有可用空间
flex grow:1
(默认值为
flex grow:0
),然后将第一个子项上的文本对齐设置为右侧,以实现所需的文本对齐

有关CSS flexbox的全面指南,您可以查看


<强> Update <强>:如果CSS FLUBBOX支持在目标受众的浏览器中缺乏,则可以考虑设置背景梯度。诀窍是设置一个中间色调的双色调背景,左边颜色对应最左边的<代码> >代码>右边的颜色对应最右边的颜色。< /P> 同样,这种方法的优点是,它不需要

.outer
的宽度