为什么这不会对齐中间或底部?

时间:2011-11-12 19:08:45

标签: css inline vertical-alignment

好的,所以我的愚蠢的小登录表几乎看起来我想要它看起来。 (这基本上是我的第一个CSS项目和第一个HTML项目,因为更新试图更新我15年的HTML技能。)对于我的生活,我无法弄清楚如何获得“忘记密码?”链接向下移动,或者与“登录”按钮的中间或底部对齐。我已经尝试将display: inline;vertical-align: middle;移动到各种不同的选择器,但它们都不起作用!我甚至尝试设置锚点和/或<li>元素的高度。我不明白这笔交易是什么!非常感谢任何帮助!

这是我的代码:

form.login {
    margin: 10px 10px 20px 20px;
    padding: 0 0 0 0;
}
form.login fieldset{
    margin: 0 0 0 0;
    padding: 2px 2px 2px 2px;
    border:2px solid;
    border-radius: 5px;
    width: 348px;
    height: 90px;
}
form.login fieldset legend {
    font-weight: bold;
    font-size: 1.2em;
    margin-left: 10px;
}
form.login fieldset ul {
    margin: 0;
    padding:0;
}
form.login fieldset fieldset {
    border: 0;
    width: 100%;
    height: 40%;
    display: inline;
    vertical-align: middle;
}
form.login fieldset fieldset li{
    float: left;
    list-style: none;
    width: 165px;
    margin: 0 4px 0 4px;
}
form.login input {
    width: 165px;
}
form.login label {
    display: none;
}
form.login a:link, 
form.login a:visited {
    color: black;
    font-size: 0.8em;
}
form.login a:hover {
    color: blue;
}
form.login a:active {
    color: blue;
}
form.login fieldset ul fieldset li button#submitLogin {
    float: right;
}

和HTML:

<html>

<head>
<link rel="stylesheet" type="text/css" href="formstyle.css" />
</head>

<body>
 <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>" class="login">
        <fieldset>
        <legend>Login</legend>
        <ul>
            <fieldset>
                <li>
                    <label for="email">Email Address</label>
                </li>
                <li>
                    <input id="email" type="text" name="email">
                </li>
                <li>
                    <label for="password">Password</label>
                </li>
                <li>
                    <input id="password" type="password" name="password">
                </li>
            </fieldset>
            <fieldset>
                <li>
                    <a href="resetpass.php">Forgot Password?</a>
                </li>
                <li>
                     <button id="submitLogin" value="submit" name="submitLogin" type="submit">Login</button>
                </li>
            </fieldset>
        </ul>
        </fieldset>
 </form>
</body>

</html>

编辑: Here's a screen shot of what it looks like with the code above.

4 个答案:

答案 0 :(得分:1)

尝试更改:

<li class="middle">
     <a href="resetpass.php">Forgot Password?</a>
</li>
<li class="middle">
     <button id="submitLogin" value="submit" name="submitLogin" type="submit">Login</button>
</li>

并将其添加到您的css:

.middle {
    height: 22px;
    line-height: 22px;
}

这明确地给它一个设定高度,然后通过line-height属性告诉它将文本居中并在li中垂直形成对象。

答案 1 :(得分:0)

你想要它在登录按钮旁边,但你在登录按钮之前在'li'标签中定义它吗?你试过把那个锚放在同一个'li'中吗?使用'table'并将它们放在同一'tr'中肯定会有效。

答案 2 :(得分:0)

这是一个快速修复。 http://jsfiddle.net/xNAnz/

我从顶部偏移了li 10px。

答案 3 :(得分:0)

我重写了你的标记以删除fieldset并使样式更加一致。我在这里做的是让li成为width的{​​{1}}和height的一半。这样,如果您想要更改UL的{​​{1}}和/或fieldset,您只需更改一个位置,然后调整其他样式。

我还压缩并删除了一些其他不必要的属性声明(heightwidth)。如果您有任何问题,请告诉我。

修改

我努力使其在Chrome和Firefox之间更加一致。

我实际上认为你最好把高度放在padding: 0 0 0 0元素上:

http://jsfiddle.net/QRNBg/13/

尝试查看上述内容并在注释掉CSS padding: 0类声明中的li时运行它。

<强> CSS

display: none

<强> HTML

.hide

http://jsfiddle.net/QRNBg/11/