HTML输入栏边距

时间:2018-11-20 01:45:02

标签: html css

我要使3/4个输入字段彼此相邻,并在其间留一个空白。但是,使用边距会使最后一个输入字段太大/太短(使用calc)。

曾经试图弄清楚该怎么做,但似乎找不到解决方法

我当前的CSS代码如下:

input {
    background-color: darkgreen;
    border: none;
    color: white;
    padding: 5px;
    border-radius: 8px;
    width: calc(33% - 20px);
    box-sizing: border-box;
    margin-right: 20px;
}

背景的宽度和填充为75%

here

Current result

2 个答案:

答案 0 :(得分:1)

问题在于,您的所有三个元素均已应用完整的margin-right。如果您希望最后一个<input>元素延伸到容器的边缘,则只想将margin-right应用于前两个<input>元素。

做到这一点的最佳方法是将:not:last-of-type伪类组合在一起,如下所示:

input {
  background-color: darkgreen;
  border: none;
  color: white;
  padding: 5px;
  border-radius: 8px;
  width: calc(33% - 20px);
  box-sizing: border-box;
}

input:not(:last-of-type) {
  margin-right: 20px;
}
<input />
<input />
<input />

请注意,这将具有使所有三个<input>元素略宽的附加效果,因为它们的width计算现在是从较大的容器中得出的。

答案 1 :(得分:1)

希望这项工作有效,但仅适用于一行

input {
   background-color: darkgreen;
   border: none;
   color: white;
   flot:left:
   padding: 5px;
   border-radius: 8px;
   width: calc(33.333333% - 20px);
   box-sizing: border-box;
}

input + input{
   margin-left: 30px;
}

如果要用于多行,则可以在结构下方使用。

  

* {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
  }

  :after,
  :before {
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
  }

  .form-row {
    margin-right: -15px;
    margin-left: -15px;
  }

  .form-row:before,
  .form-row:after {
    display: table;
    content: " ";
  }

  .input-box {
    position: relative;
    min-height: 1px;
    padding-right: 15px;
    padding-left: 15px;
    width: 33.3333333%;
    float: left;
  }

  .input-field {
    display: block;
    width: 100%;
    height: 34px;
    padding: 6px 12px;
    font-size: 14px;
    line-height: 1.42857143;
    color: white;
    background-color: darkgreen;
    border: none;
    border-radius: 8px;
  }
  <div class="form-row">
    <div class="input-box">
      <input type="text" class="input-field" value="input 01">
    </div>
    <div class="input-box">
      <input type="text" class="input-field" value="input 02">
    </div>
    <div class="input-box">
      <input type="text" class="input-field" value="input 03">
    </div>
  </div>