Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I make an input element occupy all remaining horizontal space?

Tags:

html

css

Here's the code:

<div style="width:400px">     some text..     <input type="text" />     <button value="click me" /> </div> 

How can I make the input element expand to fill all the remaining space, while staying on the same line? If I put 100% it goes to a line of its own...

like image 850
luca Avatar asked Aug 25 '11 11:08

luca


People also ask

How do you make a div fill a remaining horizontal space?

The width property is used to fill a div remaining horizontal space using CSS. By setting the width to 100% it takes the whole width available of its parent.

How do you make an element occupy full width?

With no height value provided for the HTML element, setting the height and/or min-height of the body element to 100% results in no height (before you add content). However, with no width value provided for the HTML element, setting the width of the body element to 100% results in full page width.

How do you make a space horizontal in HTML?

To create extra spaces before, after, or in-between your text, use the &nbsp; (non-breaking space) extended HTML character.


1 Answers

See: http://jsfiddle.net/thirtydot/rQ3xG/466/

This works in IE7+ and all modern browsers.

.formLine {      overflow: hidden;      background: #ccc;  }  .formLine input {      width: 100%;  }  .formLine label {      float: left;  }  .formLine span {      display: block;      overflow: hidden;      padding: 0 5px;  }  .formLine button {      float: right;  }  .formLine input, .formLine button {      box-sizing: border-box;  }
<div class="formLine">      <button>click me</button>      <label>some text.. </label>      <span><input type="text" /></span>  </div>

The button must go first in the HTML. Slightly distasteful, but c'est la vie.

The key step is using overflow: hidden;: why this is necessary is explained at:

  • http://colinaarts.com/articles/the-magic-of-overflow-hidden/#making-room-for-floats
  • How does the CSS Block Formatting Context work?

The extra span around input is necessary because display:block; has no effect for input: What is it in the CSS/DOM that prevents an input box with display: block from expanding to the size of its container

like image 66
thirtydot Avatar answered Oct 04 '22 05:10

thirtydot