Css 提交按钮旁边的输入字段(未知宽度和空格)

Css 提交按钮旁边的输入字段(未知宽度和空格),css,Css,我试图设置我的表单,使其在左侧有一个输入字段,在右侧有一个提交按钮。但是,我需要输入字段获取所有剩余空间减去1个em的空间 我已尝试使用此代码: <aside class="widget-area"> <section class="widget-search"> <form class="search-form"> <label class="search-label">

我试图设置我的表单,使其在左侧有一个输入字段,在右侧有一个提交按钮。但是,我需要输入字段获取所有剩余空间减去1个em的空间

我已尝试使用此代码:

<aside class="widget-area">
    <section class="widget-search">
        <form class="search-form">
            <label class="search-label">
                <span class="search-reader-text">Search for:</span>
                <input type="search" class="search-field" placeholder="Search..." />
            </label>
            <input type="submit" class="search-submit" />
        </form>
    </section>
</aside>

.search-form {
    display: table;
    table-layout: fixed;
    width: 100%;
}

.search-label {
    display: table-cell;
}

.search-input {
    display: table-cell;
}

现在,按钮位于输入字段旁边,但它已从容器中取出…

您可以在容器上使用Flexbox,以便您的输入能够占用任何剩余空间

有两个示例,其中按钮的宽度不同,但输入自动适应每种情况

相关CSS为:

.form-line {
  display: flex;
}
.search-input {
  flex: 1 0 auto;
}
其中flex的3个组件表示:“可以增长,不能收缩,
flex基础
设置为自动”(与此处的起始宽度有些关联)

兼容性:IE9+
备忘单:


注意:我在标签/输入中添加了
for/id
,这样所有屏幕阅读器都可以将它们关联起来,并将标签读出给用户

您可以在容器上使用Flexbox,这样您的输入就可以占用任何剩余空间

有两个示例,其中按钮的宽度不同,但输入自动适应每种情况

相关CSS为:

.form-line {
  display: flex;
}
.search-input {
  flex: 1 0 auto;
}
其中flex的3个组件表示:“可以增长,不能收缩,
flex基础
设置为自动”(与此处的起始宽度有些关联)

兼容性:IE9+
备忘单:


注意:我在label/input上添加了
for/id
,这样所有屏幕阅读器都可以将它们关联起来,并将标签读给他们的用户

为什么不这样做呢

。搜索表单{
显示:表格;
表布局:固定;
宽度:100%;
}
.搜索标签{
浮动:左;
宽度:200px;
背景:浅蓝色;
}
.搜索提交{
宽度:计算(100%-200px);
框大小:边框框;
}

你好

为什么不这样做呢

。搜索表单{
显示:表格;
表布局:固定;
宽度:100%;
}
.搜索标签{
浮动:左;
宽度:200px;
背景:浅蓝色;
}
.搜索提交{
宽度:计算(100%-200px);
框大小:边框框;
}

你好

您的HTML代码中没有搜索输入,输入没有类型。你能改进你的例子吗?考虑使用1CH空间代替1ReM来分离你的输入和按钮。REM是垂直相对单位,而ch是内联相对单位,因此在这种情况下它们更有意义。@ragdoll一旦将1(r)em定义为某个参考的高度,您就可以将其用于水平和/或垂直方向。它是在垂直引用之后定义的相对单位,不是特别的“垂直相对单位”。你的按钮在哪里?好的,我添加了输入类型以改进我的示例。你的HTML代码中没有搜索输入,输入没有类型。你能改进你的例子吗?考虑使用1CH空间代替1ReM来分离你的输入和按钮。REM是垂直相对单位,而ch是内联相对单位,因此在这种情况下它们更有意义。@ragdoll一旦将1(r)em定义为某个参考的高度,您就可以将其用于水平和/或垂直方向。这是一个垂直参考后定义的相对单位,不是特别的“垂直相对单位”。你的按钮在哪里?好的,我添加了输入类型以改进我的示例。如果标签在德语/芬兰语/法语翻译中短于“名称”,或者比原始英语标签长,怎么办?200px的宽度是一个你不需要的假设(如果我可以避免的话,我也不希望这样)是的,如果你想要它是动态的,你必须用jquery计算它,或者读入Flexbox如果标签短如“Name”,或者在德语/芬兰语/法语翻译中比原始的英语标签长呢?200px的宽度是一个假设,你不需要(如果我可以避免的话,我也不希望)是的,如果你想要它是动态的,你必须用jquery计算它,或者读入Flexbox你的例子正是我想做的,但是,我不能让它与字体sizeOk一起工作,所以在玩了一段时间代码之后,似乎通过将最小宽度:0和宽度:100%添加到我的搜索字段,它现在甚至可以使用字体大小。我还必须将shrink属性设置为1:)您的示例正是我想要做的,但是,我无法让它与字体大小OK一起工作,因此在玩了一段时间的代码之后,似乎通过在我的搜索字段中添加min-width:0和width:100%,它现在甚至可以与字体大小一起工作。我还必须将shrink属性设置为1:)