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...
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.
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.
To create extra spaces before, after, or in-between your text, use the (non-breaking space) extended HTML character.
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:
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With