我在使用填充时有一些奇怪的行为。
我有一个 div 作为包装器。这个包装器的两边都有 25px 的内边距:
.wrapper #header #navline #log form .small {
height: 25px;
width: 180px;
padding: 5px 25px;
}
Run Code Online (Sandbox Code Playgroud)
在那个包装器中,我有一个带有以下 css 的输入字段:
input[type="text"],[type="password"] {
font-size: 10px;
width: 180px;
height: 18px;
line-height: 18px;
padding-left: 5px;
padding-right: 5px;
outline:none;
}
Run Code Online (Sandbox Code Playgroud)
并作为错误类:
input.error {
background-image: url(../images/error.png);
background-repeat:no-repeat;
background-position: 160px 50%;
width: 165px;
padding-left: 5px;
padding-right: 20px;
position: absolute;
z-index: 3;
}
Run Code Online (Sandbox Code Playgroud)
所以我通过正确的方式设置它变得疯狂。问题是 chrome/safari 和 Firefox 在处理填充属性方面似乎不同。例如,当height在 chrome/safari 中保留属性时,会自动将填充顶部/底部添加到输入字段中。在 Firefox 中,输入字段的高度不同。显示图像:
火狐:

铬合金:

主要问题是我想将输入字段放在包装器 div 中。输入的宽度应为 180px。这意味着左边的每一边都有 25px。文本填充也是每边 5px。所以当使用填充属性时,输入字段的新宽度是宽度减去填充。所以这将是第一个问题。使用时pading-left和padding-right5像素的是这等于180像素(宽度输入栏)减去10px的(填充)或是因为左手侧+ 5像素和右侧-5px的填充0像素?那么输入字段的正确宽度是多少?
第二个问题是关于错误类的。我将添加一张图片,并希望将右手边距从 5px 增加到 20px。即使在这里问题输入字段的宽度是多少?我认为背后的逻辑是 180px 减去 +5px left,-20px 是 165px?
第三个问题:我尝试了所有方法,但每个浏览器的结果都不同。我的逻辑背后是否有失败,因为填充应该填充还是不填充?
将 css3 框大小添加到每个具有填充的元素。它会解决这个问题。
.text {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
}
Run Code Online (Sandbox Code Playgroud)