简体   繁体   中英

Firefox, IE and Chrome different whitespace handling

I'm curious why I get different results on Chrome and Firefox with this simple code:

  1. Breaks on Chrome
  2. Works on both Firefox, IE and Chrome

The only difference is in HTML layout:

<div class="container">
  <div class="form-wrapper">
    <input class="email" type="text">
    <button class="send pull-right">Send</button>
  </div>
</div>

versus this:

<div class="container">
  <div class="form-wrapper">
    <input class="email" type="text"><button class="send pull-right">Send</button>
  </div>
</div>

Any recommended fix without ugly hacks and HTML changes?

<input> isn't block elements by default. You must use float:left for them:

.form-wrapper {overflow:hidden;}
input.email, button.send{float:left}

Method 1:

/* CSS used here will be applied after bootstrap.css */
.form-wrapper {
  background-color: #000;
  padding: 10px;
  font-size: 0; /*set font-size to zero*/
}
input.email {
  background-color: #fff;
  border: none;
  height: 50px;
  width: 70%;
  padding-left: 15px;
  padding-right: 15px;
  font-size: 16px; /*reset font-size*/
}

button.send {
  background-color: grey;
  border: none;
  height: 50px;
  width: 30%;
  font-size: 16px; /*reset font-size*/
}

working demo

Method 2:

Use float for inputs and clear the float using overflow:hidden to parent div.

demo

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM