firefox绝对定位问题

时间:2011-03-30 04:06:08

标签: css firefox google-chrome stylesheet css-position

我在firefox中正确呈现这个问题。它在chrome和safari中呈现出色。

<div style="" id="login_inline">
    <form accept-charset="utf-8" action="/users/login" method="post" id="UserLoginForm">
    <div style="display:none;">
        <input type="hidden" value="POST" name="_method">
    </div>
    <input type="text" id="UserDummyEmail" tabindex="1" value="Email" name="data[User][dummyEmail]" style="display: block;">
    <input type="text" id="UserDummyPassword" tabindex="2" value="Password" name="data[User][dummyPassword]" style="display: block;">
    <input type="text" id="UserEmail" maxlength="255" tabindex="3" name="data[User][email]">
    <input type="password" id="UserPassword" tabindex="4" name="data[User][password]">
    <div class="submit">
        <input type="submit" value="Login">
    </div>
    </form>
</div>

CSS:

#login_inline {
position:absolute;
right:10px;
top:30px;
width:420px;
}

.submit {
display:inline;
position:absolute;
left:360px;
}

#UserPassword {
position:absolute;
left: 185px;
}

#UserDummyPassword {
position:absolute;
left:185px;
z-index:1;
color:gray;
}

#UserDummyEmail {
position:absolute;
left:10px;
z-index:1;
color:gray;
}

#UserEmail {
position:absolute;
left:10px;
}

Firefox渲染:

Firefox rendering

Chrome呈现:

enter image description here

编辑: Live example (Correct rendering)

2 个答案:

答案 0 :(得分:8)

通过定位绝对值,您将依赖于输入元素的正确宽度。这很难跨浏览器,因为浏览器倾向于使用不一致样式的自定义或本机元素。最好使用内联块或浮动布局来处理不一致的宽度。

如果你真的必须这样做,有一些黑客使用css3 box-sizing属性和/或手动调整属性,如行高和字体大小和填充,以使所有浏览器同意输入大小,但这是比听起来更难。

此问题包含box-sizing的一些信息,并使用百分比/自动宽度来获得一致性:input with display:block is not a block, why not?

编辑:根据您上面的评论,您可能需要设置一些div包装器来设置隐藏元素和可见元素的大小/位置,然后按照说明使用百分比宽度和box-sizing

<div class="input_wrapper" style="width:100px;position:relative">
    <input style="width:100%;box-sizing:border-box;position:absolute">
    <div class="fake_input" style="width:100%;position:absolute">
</div>

这一切的关键是box-sizing:border-box在表单输入的填充和边框计算中不易受浏览器差异的影响。

答案 1 :(得分:0)

我发现通常最好在输入字段上放置字体大小,这会使它们的大小(更多)一致