A flexbox trick to improve text wrapping

แชร์
ฝัง
  • เผยแพร่เมื่อ 31 พ.ค. 2024
  • Checkout iCodeThis 👉 icodethis.com/?ref=kevin
    🔗 Links
    ✅ My finished version: icodethis.com/modes/design-to...
    ✅ ICodeThis: icodethis.com/?ref=kevin
    ✅ I have a 4-hour long course that deep dives flexbox: flexboxsimplified.com
    Disclaimer: Some of the links above might be affiliate links, which means that I'll receive a commission in case you like and decide to purchase the product or service. This comes at no extra cost for you, and helps support my channel 😊
    ⌚ Timestamps
    00:00 - Introduction
    00:45 - Why flex-grow or flex: 1 don't work
    01:30 - flex-wrap doesn't solve the issue either
    02:00 - min-width to the rescue
    04:05 - more about icodethis
    #css
    --
    Come hang out with other dev's in my Discord Community
    💬 / discord
    Keep up to date with everything I'm up to
    ✉ www.kevinpowell.co/newsletter
    Come hang out with me live every Monday on Twitch!
    📺 / kevinpowellcss
    ---
    Help support my channel
    👨‍🎓 Get a course: www.kevinpowell.co/courses
    👕 Buy a shirt: teespring.com/stores/making-t...
    💖 Support me on Patreon: / kevinpowell
    ---
    My editor: VS Code - code.visualstudio.com/
    ---
    I'm on some other places on the internet too!
    If you'd like a behind the scenes and previews of what's coming up on my TH-cam channel, make sure to follow me on Instagram and Twitter.
    Twitter: / kevinjpowell
    Codepen: codepen.io/kevinpowell/
    Github: github.com/kevin-powell
    ---
    And whatever you do, don't forget to keep on making your corner of the internet just a little bit more awesome!

ความคิดเห็น • 236

  • @KevinPowell
    @KevinPowell  22 วันที่ผ่านมา +142

    Quick note: I mispoke when I said flex: 1; will make it a flex-shrink: 0. It makes it flex-grow: 1; flex-shrink: 1; and flex-basis: 0; You'd almost never notice the difference as long as the flex-basis is 0, but still, I did make a mistake there, sorry about that!

    • @dashx2
      @dashx2 22 วันที่ผ่านมา +4

      I usually use white-space: nowrap; in such scenarios. Is there any difference in this scenario between min-width: fit-content or white-space: nowrap?

    • @eioluseyi
      @eioluseyi 22 วันที่ผ่านมา

      @@dashx2 I wish I could link replies here, but @jenstornell answered this in a reply on this video

    • @detore
      @detore 21 วันที่ผ่านมา +1

      Would setting flex-basis:calc(50% - var(--gap)); fix the small screen being different widths problem without affecting anything else?

    • @ismailcreatvt
      @ismailcreatvt 21 วันที่ผ่านมา

      Yes I did catch that mistake! But I guess we can let it slide as you showed us such amazing trick. 👌

    • @dashx2
      @dashx2 21 วันที่ผ่านมา

      @@eioluseyi I read his comment. Usually these situtations happen for buttons and most of the time buttons dont have long text taking up more than 100px width so white-space-nowrap rarely is problematic on mobile.

  • @stairjoke
    @stairjoke 18 วันที่ผ่านมา +105

    I’ve been writing CSS for like 20 years and I feel like I know nothing.

    • @whyisthiscodenotworking
      @whyisthiscodenotworking 11 วันที่ผ่านมา +4

      Yeah correct 💯 💯💯 this guy knows everything in CSS

    • @1lllllllll1
      @1lllllllll1 5 วันที่ผ่านมา +1

      that's because you've been writing CSS since the dawn of time.
      I'm constantly aghast at the improvements of the cascade behavior and element addressing. Why people still use SCSS is becoming increasingly questionable.
      If you're a skilled front end dev, there really shouldn't need to be a need for any of the frameworks any longer. same for javascript and HTML.

    • @zayne-sarutobi
      @zayne-sarutobi 5 วันที่ผ่านมา

      ​@@1lllllllll1Ease of maintenance is why

    • @kadir572
      @kadir572 4 วันที่ผ่านมา

      ​@@1lllllllll1well I challenge you to write a frontend framework from scratch then, let's see if it makes sense to use it or not

    • @MRJMXHD
      @MRJMXHD 4 วันที่ผ่านมา

      Bruv 😂

  • @KB04
    @KB04 22 วันที่ผ่านมา +228

    Had the same problem, literally never thought of using fit-content on min/max width.

    • @LePhenixGD
      @LePhenixGD 22 วันที่ผ่านมา +5

      Same

    • @peasantlord135
      @peasantlord135 22 วันที่ผ่านมา +4

      Yeah, I just rolled with no text break haha

  • @artneo7
    @artneo7 10 ชั่วโมงที่ผ่านมา

    The "min-width: fit-content;" declaration helped me out on a project, really cool tip when working with the flex layout! Thanks! 🙌🏼

  • @pascalmaranus
    @pascalmaranus 22 วันที่ผ่านมา +55

    This is brilliant! Coincidentally, I had to make a small change to an older website today. And I noticed they have a similar issue with two buttons, because the client's changed the text on the buttons. It's bothered me for years at this point. I'm applying this there right away!

  • @sourabhgupta3811
    @sourabhgupta3811 20 วันที่ผ่านมา +27

    You just saved developers so much time with your solution to this common issue!

  • @Sagan1995
    @Sagan1995 21 วันที่ผ่านมา +21

    Neat! You can also achieve the same results by adding "white-space: nowrap" to the buttons as well.

    • @KlethonioFerreira
      @KlethonioFerreira 20 วันที่ผ่านมา +1

      I think this might even kept the widths the same, I didn't test it

    • @Sagan1995
      @Sagan1995 19 วันที่ผ่านมา +4

      @@KlethonioFerreira it unfortunately doesn't because the minimum width of one button is less than the other. Only giving the buttons a fixed minimum width will keep them equal in size.

    • @jaysonbautista95
      @jaysonbautista95 14 วันที่ผ่านมา

      This is what I usually do when I encounter this issue, just text wrapping.

    • @Pixelarter
      @Pixelarter 7 วันที่ผ่านมา +1

      @@Sagan1995 It's a bit overkill, but I think with a CSS grid instead of flexbox, it's possible to keep them the same size and make them properly wrap.

    • @Sagan1995
      @Sagan1995 6 วันที่ผ่านมา

      @@Pixelarter I am imagining you can only achieve that in grid by providing a fixed minimum width, which can also be done in flexbox. So unless I'm wrong and there's another way to do it in grid, I am not seeing the advantage.

  • @Feedback406
    @Feedback406 21 วันที่ผ่านมา +7

    The best css channel on TH-cam and it’s not even close. Been watching for years Thank you!!!

  • @iamtharunraj
    @iamtharunraj 22 วันที่ผ่านมา +2

    I have had this issue for so long and never knew how to fix them.
    *Thank you so much, Kevin!*

  • @matizbrave
    @matizbrave 17 วันที่ผ่านมา +4

    That's the stuff! A simple, elegant solution to a common problem. Love it!

  • @larrybahr489
    @larrybahr489 22 วันที่ผ่านมา +10

    I love that this solution does not need media queries! Great video as always

  • @marcuszeal
    @marcuszeal 21 วันที่ผ่านมา

    This is clever. I like it! I feel like every video I watch of yours, Kevin, I learn about new CSS variables that I never knew existed or never thought to use the way you're using. Well done and thank you for sharing!

  • @ichiroutakashima4503
    @ichiroutakashima4503 22 วันที่ผ่านมา +1

    I honestly love short contents like these. I had this same issue and your solution was straightforward! I don't have time to watch a 30 minute or 12 hour video and then try to find which chapter and minute is the content I'm looking for. Thanks!

  • @JeremiahKellogg
    @JeremiahKellogg 22 วันที่ผ่านมา

    Nice! How glad am I this popped up as a recommended video right now. This solved a similar problem I was having and couldn't quite solve properly. This did exactly what I wanted. Thanks!

  • @joshuamitchell6204
    @joshuamitchell6204 22 วันที่ผ่านมา +7

    I used this exact trick on this exact iCodeThis challenge! Love it!

    • @FlorinPop
      @FlorinPop 22 วันที่ผ่านมา +1

      Glad to see you in the comments section also! 🤩

  • @alexjagi3448
    @alexjagi3448 22 วันที่ผ่านมา +2

    Bloody hell that's a nice solution. I was literally working on the same problem last night. But this blows my solution out of the water. Gonna use this right away.
    Thanks.

  • @lewybagz
    @lewybagz 6 วันที่ผ่านมา

    Your timing is insane i was literally just struggling with this on a landing page yesterday. The Goat

  • @DevelTime
    @DevelTime 21 วันที่ผ่านมา +1

    I love this format, short gem, one subject, great for archiving for reminding yourself later. Btw. thank you VERY MUCH for being consistent I don't even remember for how long and presenting code and examples in clear way (i.e. big fonts, big pictures, etc) so your viewer don't have to buy new 40" monitor plus pair of new eyes. Thank you!

  • @venomus9286
    @venomus9286 22 วันที่ผ่านมา +11

    I fixed this with white-space: preline; but wasnt a fan how it ended in the end. This solution seems much better. Preline would just force the text not to break, but also had to add prettier ignore so it doesnt break the line. Takes a bit more setup. Thanks a lot Kevin for this solution, much appreciated :D

  • @zenu5344
    @zenu5344 14 วันที่ผ่านมา

    Great sir! I had this issue some days ago and I just remove the space itself by adding -  and got it solved

  • @jiwoo6788
    @jiwoo6788 21 วันที่ผ่านมา

    This came in big time! I'm currently working on something similar! Thanks Kevin!

  • @gasparsigma
    @gasparsigma 22 วันที่ผ่านมา +1

    That's great. Very succinct without skipping the details

  • @fabbahiense
    @fabbahiense 22 วันที่ผ่านมา

    It's a nice way to solve it. I've been using this trick for a while now, and it works on most cases!

  • @FlorinPop
    @FlorinPop 22 วันที่ผ่านมา +5

    New lesson for today! Thanks Kevin! 🤩

  • @samahgad241
    @samahgad241 22 วันที่ผ่านมา +1

    thanks kevin i faced the same issue ,text wrap not satisfied me also . Awsome solution😍

  • @invictuz4803
    @invictuz4803 14 วันที่ผ่านมา

    Love these videos, tackling the real issues!

  • @sanketgawande3667
    @sanketgawande3667 21 วันที่ผ่านมา +2

    I knew this one!
    Also make sure to add text ellipsis in case text is little longer than available width.

  • @pnx1990
    @pnx1990 20 วันที่ผ่านมา

    I needed to do that for a two column layout, and keep content centered, I also found it worked using flex and min-with as fit-content

  • @yarikar
    @yarikar 8 วันที่ผ่านมา

    Amazing! Thank you so much for this tip!

  • @teugene
    @teugene 21 วันที่ผ่านมา

    Thanks for the reminder! Keep forgetting this exists but we kept relying on flex-direction in media queries.

  • @JennyZibreva
    @JennyZibreva 20 วันที่ผ่านมา

    this is so beautiful, thank you Kevin!!!

  • @RahulKumar-te3ob
    @RahulKumar-te3ob 22 วันที่ผ่านมา

    Brilliant! Loved the solution. Going to try this!

  • @irfanMiral
    @irfanMiral 21 วันที่ผ่านมา

    never thought about this could be a workaround. great solution!

  • @Avean
    @Avean 22 วันที่ผ่านมา +2

    Had no idea about min-width: fit-content. Love it!

  • @srsh12345
    @srsh12345 21 วันที่ผ่านมา

    Loved the breakdown. Thank you for the explanation.

  • @orange1890
    @orange1890 19 วันที่ผ่านมา

    to fix the "downside" we could make it so that the texts take the same size by adding a fixed margin. really cool as always

  • @exactzero
    @exactzero 19 วันที่ผ่านมา

    The amount times I encountered this problem. Thanks!

  • @LetsGenocide
    @LetsGenocide 19 วันที่ผ่านมา

    Thank you very much! This one should be taught in all CSS classes >:o

  • @source_out
    @source_out 22 วันที่ผ่านมา

    Nice! Definitely better than a fixed min-width which is what I would normally do to solve this, but that can just get messy, this is cool 👍

  • @hoaxygen
    @hoaxygen 17 วันที่ผ่านมา

    In Tailwind it's "min-w-fit". Super handy!

  • @Dipenparmar12
    @Dipenparmar12 10 วันที่ผ่านมา

    Amazing out the box tutorial ❤❤

  • @binoypatel09
    @binoypatel09 22 วันที่ผ่านมา

    Simply awesome trick, you are the best

  • @thedigitalceo
    @thedigitalceo 20 วันที่ผ่านมา

    Oooo fit-content. This is perfect. Run into this issue all the time ❤

  • @EvestTech
    @EvestTech 18 วันที่ผ่านมา

    0:46 Thanks sooo much for explaining. I finally understand XD

  • @reikooters
    @reikooters 20 วันที่ผ่านมา

    Interesting to see the raw css stuff with flexbox. I started learning HTML 26 years ago, CSS probably been about 20 years and then I never kept up to date or used the newer features like flex and grid etc - by the time I started using those I had switched to tailwind, so I'm used to seeing this type of thing with just a few classes. I must admit if I had to use regular css for flex I wouldn't know what I'm doing. But that fit-content with the width is interesting and will keep it in mind for when it comes in handy one day.

  • @WilliamShrek
    @WilliamShrek 19 วันที่ผ่านมา

    Thanks. This is really cool!

  • @fredhair
    @fredhair 22 วันที่ผ่านมา

    I've done this before, it works well exactly for this sort of case! I think I ended up using it fairly recently in a flexy table where I wanted some columns such as email address column to basically take up more space if needed to prevent the text wrapping but otherwise should try and make the columns even width or at least take up space based on their content, I think I may have also used a min-width: max-content; at one point.

  • @dvillegaspro
    @dvillegaspro 20 วันที่ผ่านมา

    Crazy I was literally dealing with this issue the same day you posted this video

  • @Imperial_Squid
    @Imperial_Squid 22 วันที่ผ่านมา +1

    Oooooh very helpful! I was fiddling around with the youtube CSS the other day because I really hate how it squashes the channel name of there's a join button on the page, had no idea you can tell it like "wrapping text is a last resort, go through all the other rearrangement options first"

  • @jasoncook2715
    @jasoncook2715 22 วันที่ผ่านมา

    Your saving my life there. Thank you

  • @curefilms
    @curefilms 22 วันที่ผ่านมา

    Thanks Kevin. Great Tip

  • @user-kw6sv7kf5l
    @user-kw6sv7kf5l 21 วันที่ผ่านมา

    This is beyond cool. Thanks a lot!

  • @ZiafatAli
    @ZiafatAli 20 วันที่ผ่านมา

    Whooo 🎉 thank you for sharing ❤

  • @Play_Streams
    @Play_Streams 14 วันที่ผ่านมา

    That's genius! Thanks for this

  • @eduardointech
    @eduardointech 4 วันที่ผ่านมา

    Thank you!

  • @stokbrood
    @stokbrood 22 วันที่ผ่านมา +3

    If you have 3 items next to each other, how can you make them all move under each other right when 1 of them hit that annoying break line

    • @yourlocalhuman3526
      @yourlocalhuman3526 22 วันที่ผ่านมา

      media query that changes the organisation of the buttons only to flex-direction column at a certain container width? I assume it would need to be placed after the style that is enabling the linebreak(wrap)

  • @k1mpman
    @k1mpman 21 วันที่ผ่านมา

    Beautiful!

  • @mfrodyma1480
    @mfrodyma1480 22 วันที่ผ่านมา

    Great!!! Good explanation.

  • @GetPsyched6
    @GetPsyched6 22 วันที่ผ่านมา

    Great video! great tip as well!

  • @JacksonDiKey
    @JacksonDiKey 21 วันที่ผ่านมา

    Awesome! Thanks for doing our life easier :)))

  • @everythingnaruto5682
    @everythingnaruto5682 22 วันที่ผ่านมา +4

    I used to do whitespace: nowrap. How does it compare to the one you showed in the video Kevin?

    • @KevinPowell
      @KevinPowell  22 วันที่ผ่านมา +3

      That works, except it has the potential to introduce overflow. I probably should have addressed it in the video, but I prefer this because it'll be basically the same, but if ever there is more text, or less space, the text will wrap instead of causing overflows.

    • @jenstornell
      @jenstornell 22 วันที่ผ่านมา +1

      It's problematic when it's tight, especially on mobile.

  • @CristianKirk
    @CristianKirk 22 วันที่ผ่านมา

    Pretty cool! I've been using fit-content a lot lately for height specially.

  • @xreev0x
    @xreev0x 21 วันที่ผ่านมา

    this was super cool!

  • @Cringe_Username
    @Cringe_Username 9 วันที่ผ่านมา

    woaow super useful, thank you

  • @Javic167
    @Javic167 22 วันที่ผ่านมา

    I didn't knew you could use fit-content in a width propperty, that's some real usefull thing

  • @fexofenadinaGenerica
    @fexofenadinaGenerica 21 วันที่ผ่านมา

    I love these short videos

  • @onio907
    @onio907 22 วันที่ผ่านมา

    this is great solution, thx for sharing

  • @TheLollercaster
    @TheLollercaster 21 วันที่ผ่านมา

    great stuff!

  • @R_Y_Z_E_N
    @R_Y_Z_E_N 3 วันที่ผ่านมา

    Wow i guess im good at css , i figured this out when i heard your problem 😅

  • @rfryanfavour4369
    @rfryanfavour4369 18 วันที่ผ่านมา

    i think you save a lot of us a lot but we just don't find your videos sooner 😂 😂

  • @shahfaisal3923
    @shahfaisal3923 5 วันที่ผ่านมา

    Thanks Kevin

  • @shreejipaliwal1215
    @shreejipaliwal1215 22 วันที่ผ่านมา +1

    Very precious video

  • @kebunkarta6257
    @kebunkarta6257 13 วันที่ผ่านมา

    Thank you

  • @OCEMTechZone
    @OCEMTechZone 22 วันที่ผ่านมา

    Useful fix found thanks 🎉

  • @QwDragon
    @QwDragon 22 วันที่ผ่านมา

    Very cool!

  • @clevermissfox
    @clevermissfox 23 วันที่ผ่านมา +3

    I’m so excited for this. Had the exact same issue on this exact icodethis challenge !

    • @FlorinPop
      @FlorinPop 22 วันที่ผ่านมา +1

      Miss!! 🫡

    • @clevermissfox
      @clevermissfox 22 วันที่ผ่านมา

      @@FlorinPop Pop!!!! Our guy!

  • @rodrigocorvalan4895
    @rodrigocorvalan4895 22 วันที่ผ่านมา

    Nice trick! I use white space but I will try this

  • @amilww
    @amilww 21 วันที่ผ่านมา

    Very handy!

  • @user-pv3rq5ib3y
    @user-pv3rq5ib3y 22 วันที่ผ่านมา

    Wow I learned a new thing Kevin

  • @modi_hemnt77
    @modi_hemnt77 11 วันที่ผ่านมา

    Very helpful

  • @kirstenellis1693
    @kirstenellis1693 16 วันที่ผ่านมา

    fit-content.. what a lovely solution to min-width!

  • @AndyGaskin
    @AndyGaskin 22 วันที่ผ่านมา

    great tip

  • @ernestoj.suarezpons9352
    @ernestoj.suarezpons9352 22 วันที่ผ่านมา

    K, your videos are greater on time!

  • @thelaitas
    @thelaitas 17 วันที่ผ่านมา

    It's kinda funny how exciting did I find this haha

  • @patricknelson
    @patricknelson 15 วันที่ผ่านมา

    Awesome tip! A very rare “ah hah!” moment from me. 😅

  • @AndreaCuchetto
    @AndreaCuchetto 22 วันที่ผ่านมา

    So smart!

  • @jenstornell
    @jenstornell 22 วันที่ผ่านมา +1

    Really nice! I usually solve it with white-space: nowrap but that require a different solution on mobile.

    • @eioluseyi
      @eioluseyi 22 วันที่ผ่านมา

      I'm curious about the different solution for mobile; what it is and why it's needed?

    • @jenstornell
      @jenstornell 22 วันที่ผ่านมา +2

      @@eioluseyi A mobile is not very wide. Nowrap prevent the text from wrapping even when it's tight. With accessible in mind it's recommended to be able to zoom 200%. So nowrap on mobile is a big risk and should probably always be avoided, on mobile.

    • @eioluseyi
      @eioluseyi 22 วันที่ผ่านมา +1

      @@jenstornell hmm.. this is actually something I haven't really thought about.
      Thanks for sharing.
      Now, let me go and revisit all my codebases - CMD + SHIFT + F "no-wrap"

    • @jenstornell
      @jenstornell 22 วันที่ผ่านมา

      @@eioluseyi * "nowrap" 😉

  • @osawereao
    @osawereao 22 วันที่ผ่านมา

    So let me just say " I LOVE YOUR INTELIGENCE"

  • @Applecitylightkiwi
    @Applecitylightkiwi 2 วันที่ผ่านมา

    Didnt know fit content existed until today in figma and css

  • @Omar45
    @Omar45 22 วันที่ผ่านมา +2

    Hi Kevin!
    Wouldn't it be better to use grid here instead of flex?
    To achieve the equal-width columns with the buttons taking the whole cell?
    I think this way it's much easier that way, are there any caveats to this approach?

    • @shaunpatrick8345
      @shaunpatrick8345 22 วันที่ผ่านมา

      Using auto-fill/auto-fit I presume. You'd need to find the right width to move the 2nd button to a new row when the text starts to wrap, and if it's international or using a system font, that's not possible.

  • @colindante5164
    @colindante5164 22 วันที่ผ่านมา

    thanks))

  • @hitmusicworldwide
    @hitmusicworldwide 22 วันที่ผ่านมา

    Are there a transparent characters that can be used to make the length of character lines the same or even them out in some approximate way so that when the boxes themselves are resized due to the length of the text within them the transparent characters will equalise everything out? Back in the old tape setting days when things were printed on paper there were even minor adjustments made between the distances of each letter in a word and between words and a sentence that would be used to justify and even out the amount of space for every container in printing.

  • @mattsmith5856
    @mattsmith5856 22 วันที่ผ่านมา

    Nice!

  • @alexandrepereira6522
    @alexandrepereira6522 22 วันที่ผ่านมา

    I’d love you to cover text ellipsis with flex layouts. It’s always a pain. I can send you some complex cases

  • @keessonnema
    @keessonnema 22 วันที่ผ่านมา

    What are the chances! I ran across this problem last week, this will solve it! Thanks

  • @vilijanac
    @vilijanac 22 วันที่ผ่านมา +2

    Very good, it works, But media is suddenly an large monitor 8K, now need to increase the font too, lol

  • @user-ko1cw6mv4q
    @user-ko1cw6mv4q 9 วันที่ผ่านมา

    Incredible 😛😛

  • @YashG2309
    @YashG2309 22 วันที่ผ่านมา

    Also we can use min-width: max(fit-content,width_of_max_size_button) so the button size will remain always equal. What do you think?

  • @skeleton_craftGaming
    @skeleton_craftGaming 22 วันที่ผ่านมา

    is there a way to dynamically scale the text to the size of the flexbox?

  • @joyofdevotion
    @joyofdevotion 19 วันที่ผ่านมา

    This is great! I was scratching my head how to do it nicely. One issue I found when there are multiple button. The gap breaks it and keeps space on the right in the container. How do you deal with that?