好吧,这是看似不可能得到正确的。 我有一个文本框和选择框。 我希望他们能够准确地让他们排队在左侧距和右边距的宽度相同。
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
input, select {
width: 200px;
}
</style>
</head>
<body>
<input type="text" value="ABC"><br>
<select>
<option>123</option>
</select>
</body>
</html>
这将做到这一点,你想,对不对? 不。 该选择框是在Firefox 6个像素短。 见截图。
好所以让我们编辑的代码,使两种风格。
<style type="text/css">
input {
width: 200px;
}
select {
width: 206px;
}
</style>
好了的作品!
哦,等等,更好的测试在Chrome ...
谁能告诉我如何在所有浏览器排队这些吗? 为什么我不能只是做宽:在所有200像素,为什么所有的浏览器显示不同呢? 另外虽然我们在它为什么是文本框,选择框不同的高度? 我们如何让他们到相同的高度? 试过高度和行高没有无济于事。
解:
好,我发现从下面的答案一定帮助解决。 关键是要使用箱大小:当您指定, 其中包括边界和填充宽度边界框属性,因此。 见这里优秀的解释 。 然后,浏览器可以没有的东西它。
代码如下,还设置框的高度,以相同的尺寸和缩进箱子中的文本,因此排队。 您还需要设置边框为Chrome浏览器有它使用选择框将抛出对准一个非常怪异的边界。 这将为HTML5网站的工作(如支持IE9,火狐,Chrome,Safari浏览器,歌剧等)。
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
input, select {
width: 200px;
border: 1px solid #000;
padding: 0;
margin: 0;
height: 22px;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
input {
text-indent: 4px;
}
</style>
</head>
<body>
<input type="text" value="ABC"><br>
<select>
<option>123</option>
<option>123456789 123123123123</option>
<option>123456789 123123123123 134213721381212</option>
</select>
</body>
</html>
只是一个最后的警告,你可能不希望输入按钮,复选框等被列入这个造型所以使用input:not([type='button'])
不把它应用到某些类型或使用input[type='text'], input[type='password']
指定你想它适用于那些。