今天实验室学弟问我 “怎么这个输入、搜索按钮怎么都对不齐啊”
就像这样子:
咦 怎么会 我看看 代码没毛病啊 同样的height、同样的line-height,各有一个width(复习一下,input属于inline-block元素)
倒腾了好久 感觉甚是诡异 现在回想 怎么没有赶紧百度下 踩过这个坑的前辈们也是不少啊
首先要说明的是这个现象只会出现在Chrome中 没想到这次会是Chrome的锅 在Firefox和IE下都比较正常
至于原因呢。。。有人这么说,不过我已经把它们的border、padding都设为0了,还是对不齐,所以不敢苟同,希望知道的大大告知
而解决方案呢 ,这就比较多了
1.包裹+浮动:如span+float:left
主要代码:
.text{
padding:0;
border:0;
width:400px;
height: 30px;
}
.but{
border:0;
padding: 0;
width: 30px;
height: 30px;
background: url(so.svg);
}
span{
float: left;
}
<form>
<span><input class="text" type="text" name="inputext" placeholder="请输入搜索内容"></span>
<span><input class="but" type="button" name="but"></span>
</form>
<form>
<input class="text" type="text" name="inputext" placeholder="请输入搜索内容">
<input class="but" type="button" name="but">
</form>
2.vertical-align
有三种设置方法任君选择:对button的加vertical-align:bottom/middle,或对text的加vertical-align:top
3.用空格value
这是我自己倒腾发现的,当button不设置width的时候,两者是会对齐的,当然是要给button加了value才能反映出来,这确实是挺奇怪的,所以把value内容换成空格也是可以的,当然这只是个小发现,生产中必然不可如此。
最后顺便说一下,button和text之间的空格
原因呢是他们是inline-block,必然带有内联元素的属性 就是内容间的间隔
两个常用的方法;1.在父元素设置font-size:0px;2.去掉代码中两个input间的空格,有种显示上比较优雅的方式,就是用注释(这是从张鑫旭大神那看来的)