css 文本输入响应宽度- Bootstrap 3

lsmd5eda  于 2023-05-19  发布在  Bootstrap
关注(0)|答案(1)|浏览(189)

设置:

我有一个input type="text",一个label和一个自定义的checkbox,在span中有自己的label来封装它们,在li上的div中。

样式:

  • input type="text"仅具有美学样式。
  • labelmargin-left:5px;
  • spandisplay: inline-block; float: right;
  • div有来自Bootstrap 3.3的类form-groupform-inline

问题:

label最初是空的,但一旦我在input中键入内容,就会运行一个脚本,用文本填充相同的label
我一直在尝试将inputwidth设置为auto,使它的宽度与它所在的容器相同,达到span,以便当label出现时,它会缩短自己。
相反,input仍然很小。我想我做错了什么,但即使做了一些研究,我也不明白到底是什么。
我试过从div中删除类(这只是破坏了它),应用width=100%;,这使它变大,但将它和label推到下面的一行。
有人能提供一些帮助吗?
下面是它的样子:

  • 无文本 *


with text added by js
链接到Codepen

rhfm7lfc

rhfm7lfc1#

你需要一个 Package 器来 Package 输入和标签,使用calc来设置宽度100% -(允许复选框的任意数量),例如。

.listWrapper {
  width: calc(100% - 75px);
}

然后你可以设置这个.listWrapper来显示:flex,并给予输入flex:11自动,使得输入将根据需要增长/收缩,以占用所有可用的内部空间减去标签所需的任何空间。您可以将flex-wrap设置为nowrap,以便所有内容都保留在一行上。
下面是一个更新的codepen:
https://codepen.io/anon/pen/ZXwxKz
相关的更新样式在这里,所以你不必在所有东西中挑选:

.listWrapper {
  width: calc(100% - 75px);
  float:left;
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
}
.listWrapper .listInput {
  flex: 1 1 auto;
}

由于浮动,您可能还需要在 Package 器上使用clearfix。如果你已经有了一个clearfix样式,将它应用到“.form-group.form-inline”,如果没有,将这个样式添加到你的CSS中:

.form-group.form-inline:after {
    content: "";
    display: table;
    clear: both;
}

相关问题