<div class="left_top">
<label>用户名:</label><input class="topinput" type="text" />
<label>密码:</label><input class="topinput" type="text" />
<input class="loginbtn" value="" type="button" />
<a class="toplink" href="">5秒注册</a><span>|</span><a class="toplink" href="">忘记密码</a>
</div>
.left_top{float: left;color: #6C6B6B;line-height: 34px;height: 34px;}
.topinput{border: 1px solid #CFCFCF;width: 93px;clear: both;}
.loginbtn{background: url(../images/loginbtn.jpg) left center no-repeat;width: 52px;height: 29px;}
这里登陆btn是一个图片,因我设置了height和line-height后,元素都垂直剧中了,这很好,但我插入这张背景图片后是顶格的,
我设置margin-top后却发现整行都下移了,
请问这是为什么,遇到这种情况该如何处理呢?
由于
.loginbtn
是一个行内元素,而且它的高度(height: 29px;
)比起另外几个行内元素要高。你又没有设置.loginbtn
相对于其他行内元素的垂直对齐方式(默认是vertical-align: baseline;
),所以导致没有像你想象的方式对齐。 加一个vertical-align: middle;
可以达到你期望的效果:DEMO:http://jsbin.com/qekibeteni/edit?output
另外,例子中,在inline-block中设置margin肯定会影响同行元素,因为它们存在某种对齐方式。
附上:张鑫旭对css-vertical-align的一些理解与认识