html - 被 CSS 隐藏的元素仍然占用页面空间-如何设置显示 : none conditionally?

标签 html css

我正在开发一个用 VB.net 编写的 Web 应用程序。在应用程序的登录页面上,如果用户在没有在密码框中输入任何内容的情况下单击“登录”按钮,则会有条件地显示一条错误消息:

这一切的功能目前都正常工作,只有在密码字段中没有输入任何内容并且单击表单或“继续”按钮时才会显示消息。

但是,即使没有显示消息,也会留有空间:

我被要求删除此空格,以便在不显示错误消息时“忘记密码”链接直接显示在密码文本框下方。

但是,尽管在 CSS 中设置了错误消息元素的可见性属性,但当消息未显示时,我实际上似乎无法删除空格。

我发现这样做的唯一方法是在 CSS 中将元素的 display 属性设置为 none - 但这显然意味着消息不会显示当密码字段留空时。

字段上设置的CSS是:

.loginarea .loginerror {
    color: Red;
    font-size: 1.8em;
}

表单域显示为:

<body class="login">
    <form id="form1" runat="server">
        ...
        <div id="divLoginBg" runat="server" class="loginbg">
            <div class="loginarea">
                <asp:Panel ID="Step1" CssClass="greyblock" runat="server">
                    <asp:TextBox ID="Password" ValidationGroup="loginpage" autocomplete="off" TextMode="Password" runat="server" /><br />
                    <asp:RequiredFieldValidator ID="Req2" ValidationGroup="loginpage" ControlToValidate="Password" runat="server" CssClass="loginerror" ErrorMessage="Please enter your password" /><br />
                    ...
                </asp:Panel>
                ...
            </div>
        </div>
    </form>
</body>

如何有条件地将元素的 display 属性设置为 none?即当没有在文本框中输入密码时,它的显示应该只有none吗?

最佳答案

使用 display:none 而不是 visibility:hidden 因为使用第一个使有问题的标签根本不会出现在页面上并且不会分配空间为了它。 使用第二个使标签不可见,但在页面上为其分配了空间

这是一个有效的 Fiddle

关于html - 被 CSS 隐藏的元素仍然占用页面空间-如何设置显示 : none conditionally?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54882629/

相关文章:

javascript - 如何使用 UI Bootstrap?

css - 将元素拖放到组件上方

javascript - jQuery 绑定(bind)以切换元素的不透明度

javascript - 我如何使用 jQuery 的 .each() 来替换文本/正则表达式?

javascript - 为什么每次将新条目提交到表单时我的 HTML 页面都会重新加载?

javascript - 如何创建一个将环绕所有其他子 div 的子 div

html - 对齐响应式 div 中心

html - 如何将按钮对齐/放置到两个文本区域之间的空间中?

php - 在 HTML 中自定义 CSS

javascript - 通过数据库创建图像上传/下载功能