javascript - CSS 在不使用 flexbox 的情况下在固定宽度元素旁边使输入宽度响应

标签 javascript jquery html css

如何使用 CSS 使输入灵活,同时靠近 2 个固定宽度的按钮?

我有 2 个固定宽度的按钮,在同一行的输入旁边,我需要灵活地使用它并始终占用该行中剩余的可用空间。

需要IE10时代的大部分浏览器支持。

我附上了下面的屏幕截图来说明我的意思。

flexible buttons issue displayed

您可以在此处查看站点:http://helenshill.com.au/beta3/shop/

HTML 标记:

<form class="cart-num" action="index.html" method="post">
  <input type="text" name="quantity" class="form-control input-number quantity" id="quantity-box" value="1" min="1" max="100">
  <span class="input-group-btn">
      <button id="minus-btn-small" type="button" class="quantity-left-minus quantity-increment btn btn-number" data-type="minus" data-field="">
        <span class="glyphicon glyphicon-minus"></span>
      </button>
  </span>
  <span class="input-group-btn">
      <button id="plus-btn-small" type="button" class="quantity-right-plus quantity-increment btn btn-number" data-type="plus" data-field="">
          <span class="glyphicon glyphicon-plus"></span>
      </button>
  </span>
</form>

最佳答案

下面的代码通过使用 display:table 而不是 flexbox 来工作,这将根据内容的大小进行调整,因此通过将 2 个按钮设置为固定宽度,其余空间将是分配给输入并将随屏幕大小而变化。

工作片段:

  section {
  width: 100%;
  display: table;
  padding: 1em 0 0;
}

div.col {
  display: table-cell;
  width: 100%;
  box-sizing: border-box;
  vertical-align: middle;
  border: 1px solid #AAAAAA;
}

input {
  width: 100%;
  padding: .5em 1em;
  height: 40px;
  box-sizing: border-box;
  border: none;
}

.col.button {
  height: 40px;
  padding: 0 15px;
  text-align: center;
}

.button:hover {
  background: #EEEEEE;
<section>
  <div class="col">
    <input type="text" />
  </div>
  <div class="col button">+</div>
  <div class="col button">-</div>

</section>

使用您的 HTML 片段
请注意,您需要在文本框周围添加一个容器元素,但这是 HTML 所需的唯一更改。
此外,+ 和 - 不会在此处显示,因为我没有您正在使用的任何库。

form {
  width: 100%;
  display: table;
}

span.col {
  display: table-cell;
  width: 100%;
  box-sizing: border-box;
  vertical-align: middle;
  border: 1px solid #AAAAAA;
}

input {
  width: 100%;
  padding: .5em 1em;
  height: 40px;
  box-sizing: border-box;
  border: none;
}

.input-group-btn {
  display: table-cell;
  width: 100%;
  box-sizing: border-box;
  vertical-align: middle;
  border: 1px solid #AAAAAA;
}

button {
  height: 40px;
  width: 40px;
  padding: 0;
  text-align: center;
  display: block;
  background: #FFF;
  border: none;
  box-sizing: border-box;
  vertical-align: middle;
}

button:hover {
  background: #EEEEEE;
}
<form class="cart-num" action="index.html" method="post">
  <span class="col"> 
  <input type="text" name="quantity" class="form-control input-number quantity" id="quantity-box" value="1" min="1" max="100">
  </span>
  <span class="input-group-btn">
      <button id="minus-btn-small" type="button" class="quantity-left-minus quantity-increment btn btn-number" data-type="minus" data-field="">
        <span class="glyphicon glyphicon-minus"></span></button>
  </span><span class="input-group-btn">
      <button id="plus-btn-small" type="button" class="quantity-right-plus quantity-increment btn btn-number" data-type="plus" data-field="">
          <span class="glyphicon glyphicon-plus"></span>
  </button>
  </span>
</form>

关于javascript - CSS 在不使用 flexbox 的情况下在固定宽度元素旁边使输入宽度响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46512624/

相关文章:

javascript - JSX 元素类型 'void' 不是 JSX 元素的构造函数

javascript - Ext JS数据转换

javascript - 调整图像大小时轮播下方的空白

jquery - 如何删除内容下方的空白

javascript - 防止复选框更改时触发事件

javascript - SASS中基于类名的计算

jquery - 单击时更改 img src

html - 如何在文本中设置div?

Javascript 悬停函数

javascript - 使用 jquery 和 ajax 将 json 对象发布到 mvc Controller