Best Jeanist
Best Jeanist

Reputation: 1129

HTML form input width

I have this code below which is a simple html form. What i'm trying to do is make all of the inputs have max widths inside the form-panel and look something like the image below.

I tried setting max-width for all the inputs inside the panel but it doesn't seem to be working. Any help would be greatly appreciated.

enter image description here

input[type="text"],
input[type="email"],
input[type="password"] {
  padding: 4px 20px;
  height: 35px;
  border: 1px solid black;
  margin: 10px;
  border-radius: 3px;
  max-width: 100%;
}

.form-panel {
  display: table;
  background-color: #b7bcbe;
}
<body>
  <div class="form-panel">
    <div class="form-name">
      <input type="text" name="fname" placeholder="First Name">
      <input type="text" name="lname" placeholder="Last Name">
      <br>
    </div>
    <div class="form-email">
      <input type="email" name="email" placeholder="Email Address">
      <br>
    </div>
    <div class="form-password">
      <input type="password" name="password" placeholder="Password">
      <input type="password" name="cpassword" placeholder="Comfirm Password">
    </div>
  </div>
  <input type="submit" class="btn btn-default submit-button" value="Sign up!">


</body>

Upvotes: 3

Views: 6740

Answers (3)

Ehsan
Ehsan

Reputation: 12951

just add this line:

.form-email input {width: calc(100% - 20px);}
                                       ^--------[margin-left + margin-right]

input[type="text"],
input[type="email"],
input[type="password"] {
  padding: 4px 20px;
  height: 35px;
  border: 1px solid black;
  margin: 10px;
  border-radius: 3px;
  max-width: 100%;
}

.form-panel {
  display: table;
  background-color: #b7bcbe;
}

.form-email input {width: calc(100% - 20px);}
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <div class="form-panel">
    <div class="form-name">
      <input type="text" name="fname" placeholder="First Name">
      <input type="text" name="lname" placeholder="Last Name">
      <br>
    </div>
    <div class="form-email">
      <input type="email" name="email" placeholder="Email Address">
      <br>
    </div>
    <div class="form-password">
      <input type="password" name="password" placeholder="Password">
      <input type="password" name="cpassword" placeholder="Comfirm Password">
    </div>
  </div>
  <input type="submit" class="btn btn-default submit-button" value="Sign up!">

Upvotes: 1

Daniel Tran
Daniel Tran

Reputation: 6171

You can use flex-box instead of table.

As you use display: table - the column will have the same width (there is no colspan option)

Use display: flex for each columns and set flex-grow: 1 so that all elements will grow up and fill the parent.

input[type="text"],
input[type="email"],
input[type="password"] {
  padding: 4px 20px;
  height: 35px;
  border: 1px solid black;
  margin: 10px;
  border-radius: 3px;
  flex-grow: 1;
}

.form-row {
  flex-direction: row;
  display: flex;
}

.form-panel {
  background-color: #b7bcbe;
}
<body>
  <div class="form-panel">
    <div class="form-row form-name">
      <input type="text" name="fname" placeholder="First Name">
      <input type="text" name="lname" placeholder="Last Name">
      <br>
    </div>
    <div class="form-row form-email">
      <input type="email" name="email" placeholder="Email Address">
      <br>
    </div>
    <div class="form-row form-password">
      <input type="password" name="password" placeholder="Password">
      <input type="password" name="cpassword" placeholder="Comfirm Password">
    </div>
  </div>
  <input type="submit" class="btn btn-default submit-button" value="Sign up!">


</body>

Upvotes: 6

Sakkeer A
Sakkeer A

Reputation: 1100

You have written common css for all input elements..write separate css for that particular input field and put important.

input[type="text"],
input[type="email"],
input[type="password"] {
  padding: 4px 20px;
  height: 35px;
  border: 1px solid black;
  margin: 10px;
  border-radius: 3px;
  max-width: 100%;
}

.form-panel {
  display: table;
  background-color: #b7bcbe;
}
<body>
  <div class="form-panel">
    <div class="form-name">
      <input type="text" name="fname" placeholder="First Name">
      <input type="text" name="lname" placeholder="Last Name">
      <br>
    </div>
    <div class="form-email">
      <input type="email" name="email" style="width: 100%;max-width: 86%;" placeholder="Email Address">
      <br>
    </div>
    <div class="form-password">
      <input type="password" name="password" placeholder="Password">
      <input type="password" name="cpassword" placeholder="Comfirm Password">
    </div>
  </div>
  <input type="submit" class="btn btn-default submit-button" value="Sign up!">


</body>

Upvotes: 1

Related Questions