2

我在使用填充时有一些奇怪的行为。

我有一个 div 作为包装器。这个包装器的两边都有 25px 的填充:

.wrapper #header #navline #log form .small {
    height: 25px;
    width: 180px;
    padding: 5px 25px;
}

在那个包装器中,我有一个带有以下 css 的输入字段:

input[type="text"],[type="password"] {
    font-size: 10px;
    width: 180px;
    height: 18px;
    line-height: 18px;
    padding-left: 5px;
    padding-right: 5px;
    outline:none;
}

并作为错误类:

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;
}

所以我通过正确的方式设置它变得疯狂。问题是 chrome/safari 和 Firefox 在处理填充属性方面似乎有所不同。例如,当height在 chrome/safari 中保留属性时,会自动将填充顶部/底部填充到输入字段中。在 Firefox 中,输入字段的高度不同。显示图像:

火狐: 火狐

铬合金: 铬合金

主要问题是我想将输入字段放在包装器 div 的中心。输入的宽度应为 180px。这意味着左边每边有 25px。每边的文本填充也是 5px。因此,当使用填充属性时,输入字段的新宽度是宽度减去填充。所以这将是第一个问题。当使用5px 时pading-leftpadding-right这等于 180px(宽度输入字段)减去 10px(填充)还是因为左侧 +5px 和右侧 -5px 而填充 0px?那么输入字段的正确宽度是多少?

第二个问题是关于错误类的。在那我将添加一张图片,并希望将右手边距从 5px 增加到 20px。即使在这里,输入字段的宽度是多少?我认为背后的逻辑是18​​0px减去+5px,-20px是165px?

第三个问题:我尝试了所有方法,但每个浏览器的结果都不同。我的逻辑背后是否存在失败,因为填充是否应该是填充?

4

1 回答 1

5

为每个具有填充的元素添加 css3 框大小。它将解决问题。

 .text {
-moz-box-sizing:border-box;
-webkit-box-sizing:border-box;
box-sizing:border-box;
}
于 2013-03-14T11:23:56.927 回答