【发布时间】:2012-11-14 00:41:36
【问题描述】:
我有一个 简单的 html 页面和一个相当 简单的 css,它让我发疯 - 我确实 完全不明白这里发生了什么 em>(最初的任务是创建一个简单的联系表格,使用modernizr,但我已经剥离了所有内容):
<html>
<head>
<style>
body {
font-size: 16px;
line-height: 26px;
}
label {
float: left;
margin-top: 4px;
}
input {
border: 1px solid #ccc;
margin: 4px;
}
input:focus {
border: 2px solid #900;
}
</style>
</head>
<body>
<label>1:</label><input id="1" /><br />
<label>2:</label><input id="2" /><br />
<label>3:</label><input id="3" /><br />
</body>
</html>
带有标签的三行和输入框的左边距增加,如果我将焦点设置到任何输入,下面的会跳回(至少在 Chrome 和 FF 中)。 为什么?
现在,如果我删除几乎 任何 css 属性,事情就会变得陌生:
- 上面的原文可以在here找到。
- 如果我删除 body 行 (甚至只删除 line-height: 26px; 部分!!),左边距消失(为什么?),检查here。
- 如果我删除 input:focus 行,跳转不再发生(为什么?),请检查 here。
- 如果我从 input 中删除 border: 1px solid #ccc;,边距消失(为什么???),请检查 here。
还有其他的相互依赖关系。这在 jsfiddle 和其他在线工具中不会发生,但可以在本地轻松复制。
底线:整个行为对我来说似乎完全陌生,我希望 CSS Sherlock Holmes 可以阐明这里发生的事情。
【问题讨论】:
-
我建议使用
<ul>和<li>作为联系表单,而不是大量的<br />,这样既可以解决问题,又可以使您的页面更具语义 -
@Andy,谢谢,没错,但我仍然想了解我的 html/css 的奇怪行为。
-
你想用
font: 16px/26px Arial;做什么?我不明白 16px/26px 部分。 -
@Magus size-in-css-with-slash
-
移除焦点上的 2px 而不是 1px。它解决了你的问题,它与项目之间的间距有关。