【问题标题】:Label and input box are reversed in form标签和输入框在表单中颠倒
【发布时间】:2015-07-12 08:08:36
【问题描述】:

我有一个联系我们表格,对于姓名和电子邮件地址,标签和输入框显示得很好,垂直对齐并且具有相同的边距。但是,稍后在表单中(以“主题”开头),输入框首先出现,然后是标签,不知何故它被颠倒了(?)。如何解决它看起来与姓名和电子邮件地址相同的结构?

附上我的小提琴...Fiddle

HTML:

    <form>

        <div class="contactus-name">
            <label accesskey="n" for="Name">Name</label> <input maxlength=
            "60" name="name" type="text">
        </div>

        <div class="contactus-email">
            <label accesskey="e" for="email">Email addressing</label>
            <input maxlength="40" name="email" size="40" type="text">
        </div>

        <div class="contactus-subject">
            <label accesskey="s" for="reason">Subject</label> <select name=
            "reason">
                <option value="1">
                    One
                </option>

                <option value="2">
                    Two
                </option>

                <option value="3">
                    Three
                </option>
            </select>
        </div>

        <div class="contactus-comments">
            <label accesskey="c" for="comments">Comments</label> 
            <textarea cols="50" name="comments" rows="8">
</textarea>
        </div>

        <div class="contactus-antispam">Enter anti-spam code:<br>
        <img alt="verification code" border="1" src="image"></div>

        <div class="contactus-antispam-code">
            <label accesskey="c" for="vericode">Code</label> <input name=
            "vericode" size="20" type="text">
        </div>

        <div class="contactus-submit">
            <input name="submit" type="submit" value="Send">
        </div>
    </form>

CSS

.contactus {
    position:relative;
    display:block;
    text-align:left;
    border-style:dashed;
}

.contactus-name {
    padding-left:40px;
    padding-bottom:5px;
}

.contactus-name label {
    float:left;
    margin-right:4.0em;
    display: block;
    width:10em;
}

.contactus-email {
    padding-left:40px;
    padding-bottom:5px;
}

.contactus-email label {
    float:left;
    margin-right:4.0em;
    display: block;
    width:10em;
}

.contactus-subject {
    padding-left:40px;
    padding-bottom:5px;
}

.contactus-subject select {
    float:left;
    display:block;
    width:10em;
    margin-right:4.0em;
}

.contactus-comments {
    padding-left:40px;
    padding-bottom:5px;
}

.contactus-comments textarea {
    float:left;
    display:block;
    width:10em;
    margin-right:4.0em;
}

.contactus-antispam {
    padding-left:40px;
    padding-bottom:5px;
}

.contactus-antispam-code {
    padding-left:40px;
    padding-bottom:5px;
}

.contactus-antispam-code label {
    float:left;
    display:block;
    width:10em;
    margin-right:4.0em;
}

【问题讨论】:

    标签: html css


    【解决方案1】:

    因为.contactus-subject selectfloat:left 而它的label 没有。

    添加这个css类:

    .contactus-subject label{
        float:left;
        width: 10em;
        width:10em;
        margin-right:4.0em;
    }
    

    也许删除旧的

    【讨论】:

      【解决方案2】:

      你错误地将 css 应用到了错误的元素上。

      代替:

      .contactus-subject select {
      

      你需要做的

      .contactus-subject label{
      

      等等所有颠倒的元素。

      在这些类的其余样式属性中,您有float:left,您将其应用于文本框并选择而不是描述标签。

      float:left 将元素浮动到最左侧,并且由于您已将其应用于 select/textarea,因此它将它们发送到最左侧。

      【讨论】:

      • 谢谢,我纠正了我的错误,但我无法让“验证码图像”与其余部分垂直对齐。由于“contactus-antispam”没有标签,我尝试了“contactus-antispam img {”,但没有成功。你能帮忙多一点吗? [链接]jsfiddle.net/rabas007/va5tehkt/10
      • @raulbaros 好吧,所有标签的宽度都是 10em 并且它们有一个 4em 边距。所以由于contactus-antispam没有标签,你可以通过应用margin-left:14emFixed Fiddle来推动它与其余部分对齐 - 注意红色/蓝色框,红色有一个标签,将文本框推到对,蓝色的只是有足够大的边距
      猜你喜欢
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多