【发布时间】:2018-05-28 16:45:06
【问题描述】:
我在 react 应用中有一个表单
- 左侧的标签
- 右侧的值 + 单位输入
所有元素默认使用 display:flex。
我需要输入尺寸具有最小宽度 30px,但如果 输入数字较长(即 8 位),我需要输入 >将自身拉伸至最大宽度 80 像素,同时仍保持在右侧对齐。
这是一个形式的小提琴 https://codepen.io/anon/pen/MrweLQ
行的HTML:
<div class="formRow formRowEven">
<div class="label">Long value</div>
<div class="valueWrapper">
<div class="value">
<input value="12345678"/>
</div>
<div class="unit">min</div>
</div>
</div>
CSS:
.formRow {
display: flex;
flex-direction: row;
flex: 1 1;
}
.label {
flex: 1 1;
}
.valueWrapper {
display: flex;
flex-direction: row;
}
.value {
display: flex;
margin-right: 5px;
min-width: 0;
max-width: 80px;
display: flex;
justify-content: flex-end;
}
input {
color: #fff;
min-width: 0;
display: flex;
flex: 1 0 30px;
border-width: 0 0 1px;
border-color: #ccc;
border-style: solid;
}
这是理想状态的图像。
我无法弄清楚输入/单位左侧的设置,有人帮忙吗?
【问题讨论】:
-
虽然大多数 HTML 元素会根据其内容进行缩放,但也有一些例外,包括大多数表单组件(文本区域、输入字段和选择是最流行的)。您必须使用 dom
onInput事件处理程序在输入文本时动态增加输入。
标签: css reactjs input layout flexbox