【问题标题】:Why is the width of the submit button smaller than the other input fields? [duplicate]为什么提交按钮的宽度小于其他输入字段的宽度? [复制]
【发布时间】:2021-09-21 09:06:03
【问题描述】:

我创建了这个注册表单。所有字段都应该是相同的长度。但是,由于某种原因,提交按钮的宽度比输入字段的宽度窄,即使我对所有输入字段都应用了 350 像素的宽度。下面是注册表单的代码:

:root {
    --main-color: #00308f;
    --secondary-color: #7cb9e8;
    --dark-color: #444;
    --light-color: #fafafa;
}

body {
    font-family: Montserrat,sans-serif;
    background-color: var(--light-color);
    color: var(--dark-color);
    text-align: justify;
    margin-top: 70px;
    margin-left: 0;
    margin-right: 0;
    margin-bottom: 0;
    padding: 1em;
}

.button {
    margin: 0 .5em;
    border-radius: .5em;
    padding: .5em 1.25em;
    font-weight: 700;
    min-width: 80px;
}

.button-submit {
    margin: 1.25em 0 0;
    padding: .6em 1.25em;
    width: 100%;
    background-image: linear-gradient(-45deg,var(--main-color),var(--secondary-color),var(--secondary-color),var(--secondary-color),var(--main-color));
    border: solid 1.5px var(--main-color);
    color: var(--main-color);
}

.button-submit:hover {
    background-image: linear-gradient(-45deg,var(--secondary-color),var(--main-color),var(--main-color),var(--main-color),var(--secondary-color));
    border: solid 1.5px var(--secondary-color);
    color: var(--light-color);
    transition-duration: .4s;
}

.input-field {
    margin: .5em 0;
    border: solid 1px var(--secondary-color);
    border-radius: .5em;
    padding: 0 1em;
    height: 35px;
}

.registration-field {
    width: 350px;
}

.registration-form {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
}

@media screen and (max-width:565px) {
    body {
        margin-top: 130px;
    }
}
<form class="registration-form">
      <h2>Create an account</h2>
      <input
        class="input-field registration-field"
        type="text"
        name="name"
        placeholder="Name"
      />
      <input
        class="input-field registration-field"
        type="email"
        name="email"
        placeholder="Email"
      />
      <input
        class="input-field registration-field"
        type="password"
        name="password"
        placeholder="Enter a password"
      />
      <input
        class="input-field registration-field"
        type="password"
        name="passwordConfirmation"
        placeholder="Confirm your password"
      />
      <input
        class="button button-submit registration-field"
        type="submit"
        value="Register"
      />
    </form>

所有的填充和边距都是相同的,所以我不知道发生了什么。 知道问题出在哪里吗?

【问题讨论】:

    标签: html css frontend


    【解决方案1】:

    您的文本字段两侧有额外的填充 (1em)。如果您希望它们的宽度正好为 350 像素,您可以将 box-sizing: border-box 添加到您的输入中。

    变化:

    .input-field {
      box-sizing: border-box;
    }
    

    片段:

    :root {
        --main-color: #00308f;
        --secondary-color: #7cb9e8;
        --dark-color: #444;
        --light-color: #fafafa;
    }
    
    body {
        font-family: Montserrat,sans-serif;
        background-color: var(--light-color);
        color: var(--dark-color);
        text-align: justify;
        margin-top: 70px;
        margin-left: 0;
        margin-right: 0;
        margin-bottom: 0;
        padding: 1em;
    }
    
    .button {
        margin: 0 .5em;
        border-radius: .5em;
        padding: .5em 1.25em;
        font-weight: 700;
        min-width: 80px;
    }
    
    .button-submit {
        margin: 1.25em 0 0;
        padding: .6em 1.25em;
        width: 100%;
        background-image: linear-gradient(-45deg,var(--main-color),var(--secondary-color),var(--secondary-color),var(--secondary-color),var(--main-color));
        border: solid 1.5px var(--main-color);
        color: var(--main-color);
    }
    
    .button-submit:hover {
        background-image: linear-gradient(-45deg,var(--secondary-color),var(--main-color),var(--main-color),var(--main-color),var(--secondary-color));
        border: solid 1.5px var(--secondary-color);
        color: var(--light-color);
        transition-duration: .4s;
    }
    
    .input-field {
        margin: .5em 0;
        border: solid 1px var(--secondary-color);
        border-radius: .5em;
        padding: 0 1em;
        height: 35px;
        box-sizing: border-box;
    }
    
    .registration-field {
        width: 350px;
    }
    
    .registration-form {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 100%;
    }
    
    @media screen and (max-width:565px) {
        body {
            margin-top: 130px;
        }
    }
    <form class="registration-form">
          <h2>Create an account</h2>
          <input
            class="input-field registration-field"
            type="text"
            name="name"
            placeholder="Name"
          />
          <input
            class="input-field registration-field"
            type="email"
            name="email"
            placeholder="Email"
          />
          <input
            class="input-field registration-field"
            type="password"
            name="password"
            placeholder="Enter a password"
          />
          <input
            class="input-field registration-field"
            type="password"
            name="passwordConfirmation"
            placeholder="Confirm your password"
          />
          <input
            class="button button-submit registration-field"
            type="submit"
            value="Register"
          />
        </form>

    【讨论】:

      【解决方案2】:

      :root {
          --main-color: #00308f;
          --secondary-color: #7cb9e8;
          --dark-color: #444;
          --light-color: #fafafa;
      }
      
      body {
          font-family: Montserrat,sans-serif;
          background-color: var(--light-color);
          color: var(--dark-color);
          text-align: justify;
          margin-top: 70px;
          margin-left: 0;
          margin-right: 0;
          margin-bottom: 0;
          padding: 1em;
      }
      
      .button {
          margin: 0 .5em;
          border-radius: .5em;
          padding: .5em 1.25em;
          font-weight: 700;
          min-width: 80px;
      }
      
      .button-submit {
          margin: 1.25em 0 0;
          padding: .6em 1.25em;
          width: 100%;
          background-image: linear-gradient(-45deg,var(--main-color),var(--secondary-color),var(--secondary-color),var(--secondary-color),var(--main-color));
          border: solid 1.5px var(--main-color);
          color: var(--main-color);
      }
      
      .button-submit:hover {
          background-image: linear-gradient(-45deg,var(--secondary-color),var(--main-color),var(--main-color),var(--main-color),var(--secondary-color));
          border: solid 1.5px var(--secondary-color);
          color: var(--light-color);
          transition-duration: .4s;
      }
      
      .input-field {
          margin: .5em 0;
          border: solid 1px var(--secondary-color);
          border-radius: .5em;
          padding: 0 1em;
          height: 35px;
          width: 100%;
          box-sizing: border-box;
      }
      
      .registration-field {
          width: 350px;
      }
      
      .registration-form {
          display: flex;
          flex-direction: column;
          align-items: center;
          width: 100%;
      }
      
      @media screen and (max-width:565px) {
          body {
              margin-top: 130px;
          }
      }
      <form class="registration-form">
            <h2>Create an account</h2>
            <div class="registration-field">
              <input
                class="input-field "
                type="text"
                name="name"
                placeholder="Name"
              />
            </div>
            <div class="registration-field">
            <input
              class="input-field "
              type="email"
              name="email"
              placeholder="Email"
            />
            </div>
            <div class="registration-field">
            <input
              class="input-field"
              type="password"
              name="password"
              placeholder="Enter a password"
            />
            </div>
            <div class="registration-field">
            <input
              class="input-field "
              type="password"
              name="passwordConfirmation"
              placeholder="Confirm your password"
            />
            </div>
            <div class="registration-field">
            <input
              class="button button-submit"
              type="submit"
              value="Register"
            />
            </div>
          </form>

      您的“.input-field”有额外的填充。从“.input-field”中删除填充,或者您可以使用“box-sizing:border-box;”在“.input-field”中

      【讨论】:

      • 第二个选项有效。
      • 现在检查,将每个输入包装到一个“div”中。我认为这会对你有所帮助
      猜你喜欢
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      • 2011-03-24
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 2019-02-18
      相关资源
      最近更新 更多