bootstrap(-vue) 中具有响应式设计的小型输入字段
Small input fields with responsive design in bootstrap(-vue)
我尝试创建一个输入表单,其中包含小字段和它们之间的符号。
目前它是结合经典 HTML 和 Bootstrap-Vue 完成的。
正如您在屏幕截图中所见。有用。
但仅限于大屏幕。它没有反应。
在手机上看起来像这样:
最后一个字段被按钮覆盖,字段太小以至于看不到输入。
如果我只使用 bootstrap,字段和间距太大了,我找不到缩小它们的方法。
而且我认为将按钮放在移动设备的新行中是个好主意。
但是我该怎么做呢?
我的代码如下所示:
<b-row>
<b-col class="mt-3" cols="2">
</b-col>
<b-col class="mt-3">
<b>Kundennummer:</b>
</b-col>
</b-row>
<b-row>
<b-col class="mt-3" cols="2">
</b-col>
<b-col class="mt-3 ml-0" cols="4">
<table>
<tr>
<td class="m-0 p-0">
<b-form-input id="case_no_0" ref="case_no_0" type="text" v-model="custNo[0]" :state="state[0]" maxlength="3" @focus="$event.target.select()" @input="formatter(0)"></b-form-input>
</td>
<td class="m-0 p-0">
.
</td>
<td class="m-0 p-0">
<b-form-input id="case_no_1" ref="case_no_1" type="text" v-model="custNo[1]" :state="state[1]" maxlength="3" @focus="$event.target.select()" @input="formatter(1)"></b-form-input>
</td>
<td class="m-0 p-0">
.
</td>
<td class="m-0 p-0">
<b-form-input id="case_no_2" ref="case_no_2" type="text" v-model="custNo[2]" :state="state[2]" maxlength="3" @focus="$event.target.select()" @input="formatter(2)"></b-form-input>
</td>
<td class="m-0 p-0">
-
</td>
<td class="m-0 p-0">
<b-form-input id="case_no_3" ref="case_no_3" type="text" v-model="custNo[3]" :state="state[3]" maxlength="4" @focus="$event.target.select()" @input="formatter(3)" @keyup.enter="validateAndSave()"></b-form-input>
</td>
</tr>
</table>
</b-col>
<b-col class="mt-3">
<b-button class="btn-evm-orange" @click="validateAndSave()">Senden</b-button>
</b-col>
</b-row>
编辑:
对于问我为什么不只使用 bootstrap 的人以及 Sirence 的回答
字段越来越大,我希望它们既漂亮又小,刚好足够容纳 3 个数字。
对比截图如下:
PC-View
移动视图
如果您不需要 table,这是一种使用 bootstrap 响应式列 类 以及一些实用程序 类 来实现响应式表单的方法:
<b-row class="no-gutters">
<b-col class="col-2 col-md-1">
<b-form-input type="text" maxlength="3"></b-form-input>
</b-col>
<b-col class="col-auto align-self-end"> . </b-col>
<b-col class="col-2 col-md-1">
<b-form-input type="text" maxlength="3"></b-form-input>
</b-col>
<b-col class="col-auto align-self-end"> . </b-col>
<b-col class="col-2 col-md-1">
<b-form-input type="text" maxlength="3"></b-form-input>
</b-col>
<b-col class="col-auto align-self-center"> - </b-col>
<b-col class="col-2 col-md-1">
<b-form-input type="text" maxlength="4"></b-form-input>
</b-col>
<b-col class="col-12 col-sm-auto pt-2 pl-sm-3 pt-sm-0">
<b-button class="btn-evm-orange">Button</b-button>
</b-col>
</b-row>
对于 xs 设备上的两行布局:
<b-row class="no-gutters">
<b-col class="col-3 col-sm-2 col-md-1">
<b-form-input type="text" maxlength="3"></b-form-input>
</b-col>
<b-col class="col-auto align-self-end"> . </b-col>
<b-col class="col-3 col-sm-2 col-md-1">
<b-form-input type="text" maxlength="3"></b-form-input>
</b-col>
<b-col class="col-auto align-self-end"> . </b-col>
<div class="w-100 pt-2 d-sm-none"></div><!-- this is a helper class -->
<!-- see https://getbootstrap.com/docs/4.4/layout/grid/#column-breaks for info -->
<b-col class="col-3 col-sm-2 col-md-1">
<b-form-input type="text" maxlength="3"></b-form-input>
</b-col>
<b-col class="col-auto align-self-center"> - </b-col>
<b-col class="col-3 col-sm-2 col-md-1">
<b-form-input type="text" maxlength="4"></b-form-input>
</b-col>
<b-col class="d-block d-sm-none col-auto align-self-center">
<!-- this is just for symmetry -->
</b-col>
<b-col class="col-12 col-sm-auto pt-2 pl-sm-3 pt-sm-0">
<b-button class="btn-evm-orange">Button</b-button>
</b-col>
</b-row>
https://jsfiddle.net/Sirence/1rspht4u/9/
输入将从中型设备向上自动宽度。
对于 xs 和 sm 设备,它们将分成两行。
该按钮在 xs 和 sm 设备的新行中。
如果你想晚点休息,把 md 换成 sm。
我尝试创建一个输入表单,其中包含小字段和它们之间的符号。
目前它是结合经典 HTML 和 Bootstrap-Vue 完成的。 正如您在屏幕截图中所见。有用。 但仅限于大屏幕。它没有反应。 在手机上看起来像这样:
最后一个字段被按钮覆盖,字段太小以至于看不到输入。
如果我只使用 bootstrap,字段和间距太大了,我找不到缩小它们的方法。 而且我认为将按钮放在移动设备的新行中是个好主意。 但是我该怎么做呢?
我的代码如下所示:
<b-row>
<b-col class="mt-3" cols="2">
</b-col>
<b-col class="mt-3">
<b>Kundennummer:</b>
</b-col>
</b-row>
<b-row>
<b-col class="mt-3" cols="2">
</b-col>
<b-col class="mt-3 ml-0" cols="4">
<table>
<tr>
<td class="m-0 p-0">
<b-form-input id="case_no_0" ref="case_no_0" type="text" v-model="custNo[0]" :state="state[0]" maxlength="3" @focus="$event.target.select()" @input="formatter(0)"></b-form-input>
</td>
<td class="m-0 p-0">
.
</td>
<td class="m-0 p-0">
<b-form-input id="case_no_1" ref="case_no_1" type="text" v-model="custNo[1]" :state="state[1]" maxlength="3" @focus="$event.target.select()" @input="formatter(1)"></b-form-input>
</td>
<td class="m-0 p-0">
.
</td>
<td class="m-0 p-0">
<b-form-input id="case_no_2" ref="case_no_2" type="text" v-model="custNo[2]" :state="state[2]" maxlength="3" @focus="$event.target.select()" @input="formatter(2)"></b-form-input>
</td>
<td class="m-0 p-0">
-
</td>
<td class="m-0 p-0">
<b-form-input id="case_no_3" ref="case_no_3" type="text" v-model="custNo[3]" :state="state[3]" maxlength="4" @focus="$event.target.select()" @input="formatter(3)" @keyup.enter="validateAndSave()"></b-form-input>
</td>
</tr>
</table>
</b-col>
<b-col class="mt-3">
<b-button class="btn-evm-orange" @click="validateAndSave()">Senden</b-button>
</b-col>
</b-row>
编辑:
对于问我为什么不只使用 bootstrap 的人以及 Sirence 的回答
字段越来越大,我希望它们既漂亮又小,刚好足够容纳 3 个数字。 对比截图如下:
PC-View
移动视图
如果您不需要 table,这是一种使用 bootstrap 响应式列 类 以及一些实用程序 类 来实现响应式表单的方法:
<b-row class="no-gutters">
<b-col class="col-2 col-md-1">
<b-form-input type="text" maxlength="3"></b-form-input>
</b-col>
<b-col class="col-auto align-self-end"> . </b-col>
<b-col class="col-2 col-md-1">
<b-form-input type="text" maxlength="3"></b-form-input>
</b-col>
<b-col class="col-auto align-self-end"> . </b-col>
<b-col class="col-2 col-md-1">
<b-form-input type="text" maxlength="3"></b-form-input>
</b-col>
<b-col class="col-auto align-self-center"> - </b-col>
<b-col class="col-2 col-md-1">
<b-form-input type="text" maxlength="4"></b-form-input>
</b-col>
<b-col class="col-12 col-sm-auto pt-2 pl-sm-3 pt-sm-0">
<b-button class="btn-evm-orange">Button</b-button>
</b-col>
</b-row>
对于 xs 设备上的两行布局:
<b-row class="no-gutters">
<b-col class="col-3 col-sm-2 col-md-1">
<b-form-input type="text" maxlength="3"></b-form-input>
</b-col>
<b-col class="col-auto align-self-end"> . </b-col>
<b-col class="col-3 col-sm-2 col-md-1">
<b-form-input type="text" maxlength="3"></b-form-input>
</b-col>
<b-col class="col-auto align-self-end"> . </b-col>
<div class="w-100 pt-2 d-sm-none"></div><!-- this is a helper class -->
<!-- see https://getbootstrap.com/docs/4.4/layout/grid/#column-breaks for info -->
<b-col class="col-3 col-sm-2 col-md-1">
<b-form-input type="text" maxlength="3"></b-form-input>
</b-col>
<b-col class="col-auto align-self-center"> - </b-col>
<b-col class="col-3 col-sm-2 col-md-1">
<b-form-input type="text" maxlength="4"></b-form-input>
</b-col>
<b-col class="d-block d-sm-none col-auto align-self-center">
<!-- this is just for symmetry -->
</b-col>
<b-col class="col-12 col-sm-auto pt-2 pl-sm-3 pt-sm-0">
<b-button class="btn-evm-orange">Button</b-button>
</b-col>
</b-row>
https://jsfiddle.net/Sirence/1rspht4u/9/
输入将从中型设备向上自动宽度。
对于 xs 和 sm 设备,它们将分成两行。
该按钮在 xs 和 sm 设备的新行中。
如果你想晚点休息,把 md 换成 sm。