您可以通过绝对定位来实现这一点。它将跨度从流中取出并将它们放在输入之上。您还应该将输入放在一个 div 中来执行此操作,因为在其上设置 display:block 时它不会自然获得 100% 的宽度。
HTML
<div class="wrapper">
<span class="span-one">span</span>
<div class="input"><input type="text" class="input"></div>
<span class="span-two">span</span>
</div>
CSS
.wrapper { position: relative; }
div.input { margin: 0 20px; }
input {
width: 100%;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box; }
span.span-one {
position: absolute;
width:20px; height:20px;
left:0; top:0;
background-color: red; }
span.span-two {
position: absolute;
width:20px; height:20px;
right:0; top:0;
background-color: red; }
这是小提琴:http: //jsfiddle.net/ywUeu/1/
当然,跨度中的“跨度”一词比 20px 长,因此它超出了跨度。正如我所做的那样,最好将“box-sizing”添加到输入中。