javascript - 使用 css 创建具有(最小)自动大小标签和灵活输入字段的表单行

标签 javascript css

我正在尝试创建一个具有以下 3 个属性的简单表单行。

  • 允许在一行中使用多个标签和输入
  • 标签会自动调整大小以适合其文本
  • 输入 flex 以填充剩余空间

我有以下 CSS:

.fill-field {
    display: table;
    width: 100%;
}
.fill-field label {
    display: table-cell;
    width: 1%;
    padding: 5px;
    white-space: nowrap;
}
.fill-field input {
    display: table-cell;
    width: 100%;
    box-sizing: border-box;
}

它在以下 html 上运行良好:

<div class="fill-field">
    <label>My name is</label><input placeholder="name"/>
    <label>I live in</label><input placeholder="city"/>
</div>

但是由于某些原因,如果我的输入没有标签

<div class="fill-field">
    <label>My name is</label><input placeholder="name"/>
    <label>I live in</label><input placeholder="city"/>
    <input placeholder="state"/>
</div>

或者我尝试专门给输入一个宽度:

<style>
    input.year {
        width: 40px;
    }
</style>
<div class="fill-field">
    <label>My name is</label><input placeholder="name"/>
    <label>I was born in</label><input class="year" placeholder="year"/>
</div>

失去了预期的效果。

这是一个JSFiddle ,关于如何使我的 css 处理所有 3 个布局示例的任何想法?

最佳答案

这个 flexbox CSS 可能满足您的所有条件:

.fill-field {
  display: flex;
  flex-direction: row;
}

.fill-field label {
  padding: 5px;
}

.fill-field input {
  flex: 1;
  box-sizing: border-box;
}

Fiddle

这是第三个示例所需的额外 css,该示例具有显式宽度的输入:

input.year {
  width: 40px;
  flex: none;
}  

关于javascript - 使用 css 创建具有(最小)自动大小标签和灵活输入字段的表单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29836647/

相关文章:

javascript - CSS:淡出完成时如何隐藏?

javascript - Jquery 日期选择器在母版页中不起作用

javascript - Meteor - 来自多个集合的模板

javascript - 在 HTML5 音频标签上使用 javascript 寻找栏处理

jquery - 用另一个 div 的内容替换一个 div

javascript - 无法使用 javascript 替换和正则表达式删除 "C:\fakepath\"

CSS 变量和不透明度

html - 将 <td> 内绝对定位的 <div> 的高度设置为 <table> 的高度?

html - CSS3 - 将背景图片变成 CD

android - 在哪里可以找到适用于 Android 的移动网络应用程序的 CSS 主题?