好的,这似乎不可能正确。我有一个文本框和一个选择框。我希望它们的宽度完全相同,以便它们在左边距和右边距上对齐。
<!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中进行更好的测试...
有人可以告诉我如何在所有浏览器中排列它们吗?我为什么不能只做宽度:全部为200px,为什么所有浏览器都以不同的方式显示宽度?同样,当我们使用它时,为什么文本框和选择框的高度不同?我们如何使它们达到相同的高度?尝试过的高度和线高没有用。
解:
好的,我从下面的答案中获得了一些帮助,找到了解决方案。关键是使用box-sizing:border-box属性,因此当您指定包含边框和填充。在这里查看出色的解释。然后,浏览器无法填充它。
代码在下面,还将框的高度设置为相同的大小,并在框内缩进了文本,使其对齐。您还需要设置边框,因为Chrome的边框看起来很古怪,它用于选择框,因此会导致对齐问题。这将适用于HTML5网站(例如,支持IE9,Firefox,Chrome,Safari,Opera等)。
<!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']
指定您希望应用于的类型。