flex item overflows container due to long word even after using word-wrap
flex item overflows container due to long word even after using word-wrap
CSS The main issue with the above code is , You can check the code here http://jsfiddle.net/vbj10x4k/ I need to know why it happens and how to solve it without using Instead of setting a max-width for your flex item, use a min-width declaration. By default, if no min-width is set, the item's content min-width is assumed and the flex item's width will never be smaller. By setting a min-width of e.g. 50%, the item will shrink to at most 50% of the flex parent. See the code snippet above or the external demo: http://jsfiddle.net/vbj10x4k/5/ Instead of CSS here is the working fiddle link http://jsfiddle.net/yudi/vbj10x4k/3/ Thanks to the Gaurav Aggarwal's answer, I've been able to solve the same kind of issue by using the CSS property:
question
somethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomething
question
somethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomething
</div>.parent{
width:100%;
display:flex;
flex-direction:row;
flex-wrap:nowrap;
padding:1em;
background-color:red;
box-sizing:border-box;
}
.child1{
background-color:mistyrose;
padding:1em;
}
.child2{
background-color:powderblue;
padding:.5em;
word-wrap:break-word;
max-width:500px;
}
.child3{
background-color:powderblue;
padding:.5em;
word-wrap:break-word;
}child3 overflows but if I give a max-width in child2it will not overflow the parent. In both cases I used word-wrap: break-word;child3max-widthchild2parentword-wrap: break-word;max-width/width to fixed pixel values.I need it to be responsive.max-width/width
3 Answers
3
.child2, .child3 {
min-width: 50%;
}.parent{
width:100%;
display:flex;
flex-direction:row;
flex-wrap:nowrap;
padding:1em;
background-color:red;
box-sizing:border-box;
}
.child1{
background-color:mistyrose;
padding:1em;
}
.child2{
background-color:powderblue;
padding:.5em;
word-wrap: break-word;
overflow-wrap: break-word;
min-width: 50%;
}
.child3{
background-color:powderblue;
padding:.5em;
word-wrap: break-word;
overflow-wrap: break-word;
min-width: 50%;
}
question
somethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomething
</div>
Awesome, works.
– zakjan
Aug 3 '17 at 7:42
You can also set it to something very small like min-width: 1%; on the element with word-wrap: break-word; and it works.
– adriaan
May 7 at 11:02
min-width: 1%;word-wrap: break-word;
Thanks, I've been looking for the solution for a while. But I don't get why min-width keeps the inbox item from exceeding the container size...
– Niko
May 25 at 15:53
min-widthword-wrap:break-word use word-break:break-allword-wrap:break-wordword-break:break-all.child1{
background-color:mistyrose;
padding:1em;
word-break:break-all;
}
.child2{
background-color:powderblue;
padding:.5em;
max-width:500px;
word-break:break-all;
}
.child3{
background-color:powderblue;
padding:.5em;
word-break:break-all;
}
This solution will even break the word "question" in child1 elements which is probably not intended. And you are still using a fixed max-width which doesn't go well with a responsive design.
– Paul
Mar 22 '16 at 9:39
please add some reason ? why it doesn't work.
– Sachin
Mar 22 '16 at 9:48
I didn't say it doesn't work, it's just too much. Just take a look at the demo and the .child1 elements. The word "question" is split into lines for each character. I just assume this is not intended. Also, .child2 still has a maximum width set which will break your layout in devices with screen sizes below that value.
– Paul
Mar 22 '16 at 9:54
.child1.child2
because word wrap works when there is spaces between words of there is no space between words you should use word break
– Gaurav Aggarwal
Mar 22 '16 at 9:59
Out of all solutions I've seen, such as setting min-width: 0, this is the only one that worked for me. Thanks
– Drew
Feb 8 at 22:45
min-width: 0word-break: break-word
By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

perfect solution .
– Sachin
Mar 22 '16 at 9:51