I have 2 nested div's that should be 100% wide. Unfortunately the inner div with the Textbox overflows and is actually larger than the outer div. It has a left margin and overflows by about the size of the margin.
How can I fix that?
<div style="width:100%;">
<div style="margin-left:45px; width:100%;">
<asp:TextBox ID="txtTitle" runat="server" Width="100%"></asp:TextBox><br />
</div>
</div>
If I don't do the 100%, then the textbox is not 100% wide.
I realise this is an old post but this might benefit somebody who, like me, has come to this page from a google search and is at their wits end.
None of the other answers given here worked for me and I had already given up hope, but today I was searching for a solution to another similar problem with divs, which I found answered multiple times on SO. The accepted answer worked for my div, and I had the sudden notion to try it for my previous textbox issue - and it worked! The solution:
add
box-sizing: border-box
to the style of the textbox.To add this to all multi-line textboxes using CSS, add the following to your style sheet:
Thanks to thirtydot for the solution at
width: 100%-padding?
and
Content of div is longer then div itself when width is set to 100%?
Just remove the width from both divs.
A
div
is a block level element and will use all available space (unless you start floating or positioning them) so the outer div will automatically be 100% wide and the inner div will use all remaining space after setting the left margin.I have added an example with a
textarea
on jsfiddle.Updated example with an input.
A div is a block element and by default 100% wide. You should just have to set the textarea width to 100%.
Add some css either in the head or in a external document. asp:TextBox are rendered as input :
Your html should look like : http://jsfiddle.net/c5WXA/
Note this will affect all your textbox : if you don't want this, give the containing div a class and specify the css.
If some other portion of your layout is influencing the
div
width you can setwidth:auto
and thediv
(which is a block element) will fill the spaceIf that's still not working we may need to see more of your layout HTML/CSS