我要使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%
答案 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>