一行中写两个input,按钮的高会比设置的少2px,而且输入框会向下偏移一点,这是为什么?

<!doctype html>
<html>
    <head>
    <meta charset="utf-8">
    <title>无标题文档</title>
    <style>
        input{
        padding:0;
        }
        div{
        height:40px;
        font-size:0;
        }
        #text{
        width:100px;
        height:40px;
        border:1px solid black;
        }
        #btn{
        width:60px;
        height:40px;
        line-height:40px;
        text-align:center;
        background:red;
        border:1px solid black;
        }
    </style>
    </head>
    <body>
        <div>
            <input type="text" id="text" />
            <input type="button" id="btn" value="按钮"/>
        </div>
    </body>
</html>

做出来是这样的,我在chrome跟firefox弄过都这样,图片描述

阅读 5.7k
2 个回答

差别的原因是box-sizing,button默认的是box-sizing: border-box;

首先,input是行内元素,你设置的padding:0起不到任何作用,然后就是楼上说的box-sizing设置为border-box,这涉及到标准盒子的宽高怎么计算,垂直居中的话,针对单行文本而言,将高度和行高设置成一样的已经是很简单兼容性也比较好的做法了。

1 篇内容引用
推荐问题
宣传栏