jquery - 为什么当我尝试淡入时 margin-top 不起作用。当我简单使用显示 block 时它工作得很好

标签 jquery html css

我有一个错误消息跨度,分配了一个类 .error_msg,它的 margin-top 为 5px。当我更改其显示属性以阻止它时,它工作正常,但当我尝试 fadeIn 时,它会忽略边距顶部。

enter image description here

HTML:

<div id=first_name>
First Name<br />
<table cellspacing="0" cellpadding="0" border="0">
<tr><td><img src='images/form_error.png' class="error_image" id="form_first_name_err_img" <?php echo ($error_first_name == true) ? "style='display: block'" : "style='display: none'" ; ?> /></td><td><input align="middle" id="form_first_name" class="form_field1" type="text" name="first_name" /></td></tr>
<tr><td colspan="2"><span class="error_msg" id="form_first_name_err_msg" <?php echo ($error_first_name == true) ? "style='display: block'" : "style='display: none'" ; ?>>This cannot be left blank.</span></td></tr>
</table>
</div><!-- eof first_name -->
<div id=last_name>
Last Name<br />
<table cellspacing="0" cellpadding="0" border="0">
<tr><td><img src='images/form_error.png' class="error_image" id="form_last_name_err_img" <?php echo ($error_last_name == true) ? "style='display: block'" : "style='display: none'" ; ?> /></td><td><input align="middle" id="form_last_name" class="form_field1" type="text" name="last_name" /></td></tr>
<tr><td colspan="2"><span class="error_msg" id="form_last_name_err_msg" <?php echo ($error_last_name == true) ? "style='display: block'" : "style='display: none'" ; ?>>Last name should be of minimum 2 characters.</span></td></tr>
</table>
</div><!-- eof last_name -->

CSS:

.error_msg {
    color: red;
    font-size: 12px;
    margin-top: 5px;
}

jQuery:

    function check_first_name() {

        var first_name_length = $("#form_first_name").val().length;

        if(first_name_length < 1) {
            $("#form_first_name_err_img").fadeIn();
            $("#form_first_name_err_msg").fadeIn();
            error_first_name = true;
        } else {
            $("#form_first_name_err_img").hide();
            $("#form_first_name_err_msg").hide();
        }

    }

function check_last_name() {

    var last_name_length = $("#form_last_name").val().length;

    if(last_name_length < 2) {
        $("#form_last_name_err_img").css( "display", "block" );
        $("#form_last_name_err_msg").css( "display", "block" );
        error_last_name = true;
    } else {
        $("#form_last_name_err_img").css( "display", "none" );
        $("#form_last_name_err_msg").css( "display", "none" );
    }   

}

最佳答案

<span><img> s 不是 block 级元素。之后fadeIn() ,如果你检查它们的显示属性,它们将是 inline 。当您专门将它们设置为 block 时他们会尊重边距,但当自动设置为 inline 时则不会在fadeIn()期间

而不是 fadeIn() ,你可以尝试:

$("#form_first_name_err_img")
    .css({opacity: 0, display: 'block'})
    .animate({opacity: 1}, 'fast');

关于jquery - 为什么当我尝试淡入时 margin-top 不起作用。当我简单使用显示 block 时它工作得很好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21161034/

相关文章:

javascript - jQuery 对象是真正的 DOM 对象吗?给它们添加属性是否正确?

css - 修复了 Bootstrap 导航栏在 768 x 1024 View 下消失的问题

javascript - 如何使用 jQuery 更改插入 HTML 文档中的 JavaScript 变量值

javascript - 将 tumble-bar.html 导入 index.html 的问题

html - css bootstrap 使行中的所有列高度相同

jquery - jqgrid 重新加载时不更新数据

javascript - 选择菜单多个的 session 存储

javascript - 获取javascript中innerHTML为动态值的下一个子元素

html - zend 框架如何避免 html <id> 重复?

javascript - 将结果从 php if 语句传递到 javascript/html