JS元素插入导致意外移位

时间:2013-05-21 20:08:21

标签: javascript jquery css

Here is example

我所说的是,当你模糊了密码字段时(例如这里)JS插入下面的表单错误消息。问题是滑下FB登录链接,我无法弄清楚原因。

此外,它是侧面问题,但是当你将鼠标悬停在提交按钮上(效果使边框更宽)时,FB链接也会向下移动一点。

.new_user_popup {
    position: fixed;
    top: 50%;
    left: 50%;
    margin-top: -105px;
    margin-left: -300px;
    background: #fff;
    width: 600px ;
    height: 210px;
    font-family: Arial,Liberation Sans,DejaVu Sans,sans-serif;
    z-index: 9999999;
    font-size: 14px;



}
.new_user {
    border-right-style: solid;
    border-color:  rgba(80, 140, 255, 0.83);
    border-width: 1px;
    padding-right: 40px;
    margin-top: 30px;
    margin-left: 50px;
    display: inline-block;
    width: 200px;




}
input#user_email{
   width: 180px;
    border-color:  rgba(80, 140, 255, 0.83);
    height: 15px;
    font-size: 13px;
}
input#user_password{
    width: 180px;
    border-color:  rgba(80, 140, 255, 0.83);
    height: 15px;
    font-size: 13px;
}
input#user_password_confirmation{
    width: 180px;
    border-color:  rgba(80, 140, 255, 0.83);
    height: 15px;
    font-size: 13px;
}





.sign_up_submit {
    margin-top: 5px;
    border-style: solid;
    background-color: #ffffff;
    color: rgba(80, 140, 255, 0.93);
    border-width: 2px;
    padding-bottom: 10px;
    height: 25px;
    font-family: Arial,Liberation Sans,DejaVu Sans,sans-serif;
    font-size: 16px;
    border-style: solid;
    border-color:  rgba(80, 140, 255, 0.83);
    font-weight: 500;

}
.sign_up_submit:hover {
       border-width: 3px;
}

.format_error {
    background-color: #d61354;
    font-family: Arial,Liberation Sans,DejaVu Sans,sans-serif;;
    font-weight: 300;
    font-size: 12px;
    color: white;
    padding-right: 0;

    width: 150px;
}
.fb_sign_up{
    display: inline-block;
    vertical-align: 50px;
    margin-left:50px;

}
#facebook_sign_up{

    display: block;
    width: 200px;
    height: 53px;
    background: url(http://static.freepik.com/free-photo/fb-connect-button-vector_630856.jpg) ;
    background-size: 200px 106px;
    background-position: 0 0;




}

2 个答案:

答案 0 :(得分:1)

这是因为您的.fb_sign_up div是内联块,而您设置的vertical-align是相对于父(在错误消息显示时扩展)。来自MDN page on vertical-align

  

<强> <length>

     

将给定长度的元素基线与其父

的基线对齐

我相信只要进行一些小改动,你就可以达到预期的效果:

.fb_sign_up{
    display: inline-block;
    vertical-align: top;
    margin-top: 50px;
    margin-left:50px;
}

http://jsfiddle.net/tHV4W/1/

答案 1 :(得分:0)

看起来像内联块的一般误用。表单元素应该是块元素。 但是为了快速修复,我让它在这里工作。

http://jsfiddle.net/uuyFt/

有了这个,我将float: left添加到.new_user并将vertical-align更改为padding-top上的.fb_signup

您可能需要考虑使用CSS框架来帮助布局列。 Bootstrap CSS是一种流行的选择。