How To Limit Lines Of Text With CSS Only

Doing vertical text overflow in CSS is incredibly difficult and many people think it is impossible, but that is not true. In this video I will show you 2 different ways to limit the number of lines of text in a box. I will also show you how to expand/collapse those lines of text using only CSS with no JavaScript.
📚 Materials/References:
Kevin’s Video: • How to set a maximum n...
:has Selector Video: • This Is So Much More T...
:has Selector Article: blog.webdevsimplified.com/202...
CSS Max Lines Article: blog.webdevsimplified.com/202...
🌎 Find Me Here:
My Blog: blog.webdevsimplified.com
My Courses: courses.webdevsimplified.com
Patreon: / webdevsimplified
Twitter: / devsimplified
Discord: / discord
GitHub: github.com/WebDevSimplified
CodePen: codepen.io/WebDevSimplified
⏱️ Timestamps:
00:00 - Introduction
00:48 - Webkit Technique
03:35 - My Technique
07:44 - Expand/Collapse Buttons
#CSSExpandCollapse #WDS #CSS

Пікірлер: 199

  • @beinyourguard
    @beinyourguard Жыл бұрын

    what I like about Kyle's videos is that he does not edit the parts where he messes up. he acknowledges and looks for the error instead of recording it again

  • @ontheruntonowhere

    @ontheruntonowhere

    Жыл бұрын

    Agreed, and I like that he messes up a lot. Makes me feel better about my own mistakes.

  • @BGdev305

    @BGdev305

    Жыл бұрын

    you're 100% correct.. his mistakes and corrections actually help me understand things even more.

  • @MrOmaromran

    @MrOmaromran

    Жыл бұрын

    and he rubs his nose immediately when he messes up.

  • @shreekharr3940

    @shreekharr3940

    Жыл бұрын

    I am glad you and plenty others like it, but for me, especially in long learning sessions, can be distracting and even irritating at points.

  • @ontheruntonowhere

    @ontheruntonowhere

    Жыл бұрын

    @@shreekharr3940 It's free, whatcha gonna do?

  • @ilovelctr
    @ilovelctr Жыл бұрын

    Both you and Kevin and excellent, and so is the content of both of you! This is such an eye-opener. CSS is becoming such that with it it's possible to implement features which were previously only possible using JavaScript.

  • @Crispypoyo
    @Crispypoyo Жыл бұрын

    I literally searched this up about two weeks ago because I needed it for a project. Thank you for this vid!

  • @SrinivasReddy07
    @SrinivasReddy07 Жыл бұрын

    Kyle, you simply nailed it as you do always. So much thank you.

  • @MarlonEnglemam
    @MarlonEnglemam Жыл бұрын

    this is EXACTLY the task I've been working on and was having some trouble with because I had a lot of different scenarios and eventually one of them would just mess everything up, thank you!

  • @kaylemaclou
    @kaylemaclou Жыл бұрын

    Brilliant! Thanks Kyle ... and Kevin.

  • @EvertJunior
    @EvertJunior Жыл бұрын

    That line limit is very nice, but the css only expand button I'm not sure is WCAG compliant and might be confusing for screen readers users so It's probably best to give it an aria-hidden prop since the entire text will be readable because screen readers don't consider css styles.

  • @ontheruntonowhere

    @ontheruntonowhere

    Жыл бұрын

    I was wondering about this myself, but I think aria-hidden is unnecessary in this case since the collapsed state is purely visual decoration. The complete content should always be available to assistive devices, letting the user decide whether to skip on to the next. It's a bit different than an accordion where the entire content block is hidden.

  • @EvertJunior

    @EvertJunior

    Жыл бұрын

    @@ontheruntonowhere but the input is a focusable element so it might confuse the user because checking the input won’t do / announce anything

  • @ontheruntonowhere

    @ontheruntonowhere

    Жыл бұрын

    @@EvertJunior Yes, great point. I yield!

  • @PhilLesh69

    @PhilLesh69

    Ай бұрын

    This also has a very limited use case. Maybe on some sort of dashboard. You wouldn't want this as an index of articles because it creates a distraction click that might reduce the amount of clicks to the actual content. If your abstract needs to be expanded before someone clicks on the link to read your article, the solution is a better written excerpt, not a fancier design pattern and more things for the user to interact with and get lost or distracted by.

  • @djondavid
    @djondavid Жыл бұрын

    Best/most useful mini CSS tutorial yet. Thank you so much for your great content.

  • @wazzadev7209
    @wazzadev7209 Жыл бұрын

    You have no idea how much I needed this, thanks so much man.

  • @studyingasyouwere
    @studyingasyouwere Жыл бұрын

    Thank you for the tips as always!

  • @FunBSDpami
    @FunBSDpami5 ай бұрын

    Great job! Thanks

  • @___Kevin
    @___Kevin Жыл бұрын

    Well explained and very useful. Thank you

  • @wayneswildworld
    @wayneswildworld Жыл бұрын

    Love this. Thanks for sharing

  • @abrotherinchrist
    @abrotherinchrist11 ай бұрын

    Your videos are a rabbit hole of information that I can't stop watching.

  • @NoName-1337
    @NoName-1337 Жыл бұрын

    You can add "text-overflow: ellipsis;" to your styles to add the 3 dots for the overflow text if you want to.

  • @boring91

    @boring91

    Жыл бұрын

    That's not gonna work.

  • @opjoter

    @opjoter

    Жыл бұрын

    You misunderstood the problem

  • @HorsiMusic

    @HorsiMusic

    Жыл бұрын

    This limits to only 1 line.

  • @atchaukhac7731

    @atchaukhac7731

    Жыл бұрын

    @@boring91 it will if use it with "-webkit-box-oriented: vertical;"

  • @mykalimba
    @mykalimba Жыл бұрын

    I thought I was experiencing déjà vu, but I wasn't... I was thinking of the video just like this that Kevin Powell released about a week ago! Same thumbnail concept, too!

  • @ay2s389
    @ay2s389 Жыл бұрын

    Wow nice tips! Thanks!

  • @shneornagar6147
    @shneornagar6147 Жыл бұрын

    Great content! Thanks a lot 🙏

  • @kuoyulu6714
    @kuoyulu67147 ай бұрын

    this is so cool and useful !

  • @moherna3323
    @moherna3323 Жыл бұрын

    Great content bro, very useful!

  • @PickleRiiiiiiick
    @PickleRiiiiiiick Жыл бұрын

    Great video as always. Keep going.

  • @GstarYen
    @GstarYen Жыл бұрын

    You are my life saver! Thank you!

  • @zeyouR
    @zeyouR Жыл бұрын

    thankyou for teaching. amazing content

  • @thienthuannguyenlong6830
    @thienthuannguyenlong6830 Жыл бұрын

    tks u verry much about your knowledge

  • @mind_of_a_darkhorse
    @mind_of_a_darkhorse Жыл бұрын

    Great tips!

  • @marufmarzuq
    @marufmarzuq Жыл бұрын

    Kyle this is d best video on this topic 💜💜

  • @shivshankarshejwal6728
    @shivshankarshejwal6728 Жыл бұрын

    This was good one , got to learn a lot

  • @aneliayacheva6671
    @aneliayacheva6671 Жыл бұрын

    oh I so needed this in one of my recent projects.. thank you, I will use it :))))))))))

  • @webartem
    @webartem Жыл бұрын

    Wonderful solution! The only thing I would do another way is the text into the button - I would use instead CSS prop "content" because it keeps all text content in markup and lets a developer use variables here (from CMS or a translation). I suppose the label is better for accessibility as well.

  • @broadshare
    @broadshare Жыл бұрын

    Thank you. The kings of css, we want a css framework from Kyle and Kevin.

  • @paulthomas1052
    @paulthomas1052 Жыл бұрын

    Excellent little trick. Thanks :)

  • @gioba4912
    @gioba4912 Жыл бұрын

    You're a genius! Thanks for the tutorial.

  • @midhakhan3295
    @midhakhan3295 Жыл бұрын

    Great tip

  • @pablitocodes
    @pablitocodes Жыл бұрын

    Great content. Congrats on your success.

  • @avneet12284
    @avneet12284 Жыл бұрын

    This was so amazing

  • @poopumpthekids4208
    @poopumpthekids4208 Жыл бұрын

    Very Cool idea for my project

  • @GermanEmmanuel
    @GermanEmmanuel Жыл бұрын

    Just what I needed

  • @aram5642
    @aram5642 Жыл бұрын

    Yes yes yes: for the vendor-prefix-free clamping technique! No no no: for text in css content (not localizable, poorly adoptable by framework components). A great video as always!

  • @GabrielSoldani

    @GabrielSoldani

    10 ай бұрын

    Use together with content: attr(data-label-expand); and content: attr(data-label-collapse); if you want to keep it localizable and outside your CSS.

  • @isfaharuddinnishan
    @isfaharuddinnishan Жыл бұрын

    Whatever! I still watch your videos. Love you bro ❣️

  • @-d3d9ex97
    @-d3d9ex97 Жыл бұрын

    great work

  • @Solo_playz
    @Solo_playz4 ай бұрын

    What a dynamic creativity with just CSS 🤯

  • @e-benz
    @e-benz Жыл бұрын

    cool tutorial, tnx

  • @MetuAmarachi
    @MetuAmarachi Жыл бұрын

    he does not edit the parts where he messes up. he acknowledges and looks for the error and he is so handsome

  • @Tony.Nguyen137
    @Tony.Nguyen137 Жыл бұрын

    Using input checkbox as button is really a cool approach that I didnt know. I always hided the checkbox and used a label inside a button ❤😊

  • @nomad100hd

    @nomad100hd

    Жыл бұрын

    Using a checkbox is bad practice because it is not accessibility friendly.

  • @Tony.Nguyen137

    @Tony.Nguyen137

    Жыл бұрын

    @@nomad100hd yeah. You‘Re right. Besides accessibility I tried the code on my ipad and didn‘t get the same result.

  • @edgarsilvax
    @edgarsilvax Жыл бұрын

    Thanks!

  • @WebDevSimplified

    @WebDevSimplified

    Жыл бұрын

    You're very welcome!

  • @kyrill19
    @kyrill19 Жыл бұрын

    Kyle is so good with this. Thnx!

  • @codeWithMete

    @codeWithMete

    Жыл бұрын

    Hello, I just create my channel, can you support?😊

  • @stillready6405
    @stillready6405 Жыл бұрын

    Damn after years of CSS I still can learn new things from you or Kevin :D

  • @alexshel8578
    @alexshel8578 Жыл бұрын

    this is awesome

  • @pritampodder12
    @pritampodder12 Жыл бұрын

    Wow! That's really some advanced level CSS 😘😘

  • @theDanielJLewis
    @theDanielJLewis Жыл бұрын

    I'd love to see a full tutorial!

  • @kelvinclark3474
    @kelvinclark3474 Жыл бұрын

    Awesome 👍

  • @slim_shdy
    @slim_shdy Жыл бұрын

    You are a wizard ❤

  • @7heMech
    @7heMech Жыл бұрын

    I was just about to search for how to do that!

  • @FireGames25
    @FireGames25 Жыл бұрын

    Btw you can add lorem as a language to your code spell extension, so it stops detecting it as errors

  • @ngochunglongnguyen4523
    @ngochunglongnguyen4523 Жыл бұрын

    This is awesome, make me want to this, add transition animation, it'll be smooth and look modern.

  • @abinjoseph5028
    @abinjoseph50289 ай бұрын

    great!

  • @AveLenivius
    @AveLenivius Жыл бұрын

    Really cool

  • @mrbuster3106
    @mrbuster3106 Жыл бұрын

    :has() does not work on firefox, unless you unlock it via configuration. Understandably this means production code cannot use :has() selector :/

  • @theodorealenas3171

    @theodorealenas3171

    Жыл бұрын

    Nor qutebrowser. And I'm meant to be able to use it, websites are text with fancy bullshits why wouldn't I be able to use it.

  • @FoxiAndMolly
    @FoxiAndMolly7 ай бұрын

    hi and great thanks. Is it possible to somehow get the expansion animate a bit slower? smooth scroll like.

  • @ElkunCoding
    @ElkunCoding Жыл бұрын

    Awesome.

  • @meganweber5057
    @meganweber5057 Жыл бұрын

    For the second technique, how do I get text-overflow: ellipsis to work?

  • @AleMadLei
    @AleMadLei Жыл бұрын

    Thank you! This looks really cool. My only concern is accesibility, I think a screen reader would not be able to transmit the CSS text content and will not linit the content shown. Do you think that could be handled CSS only?

  • @Vir7uaLGameplays
    @Vir7uaLGameplays Жыл бұрын

    Holly shoot this is life changing level thanks!

  • @shihab3930
    @shihab3930 Жыл бұрын

    Just 😲 wow!

  • @calcio437
    @calcio437 Жыл бұрын

    Thanks

  • @isfaharuddinnishan

    @isfaharuddinnishan

    Жыл бұрын

    😃

  • @link2yasmeen778
    @link2yasmeen778 Жыл бұрын

    Superbb

  • @scottmacintyre7385
    @scottmacintyre7385 Жыл бұрын

    Thanks for the great video. I'm trying to do limited text lines with ellipsis in a table cell using css but can't get it to work. Any suggestions would be a great help.

  • @randomride6057
    @randomride6057 Жыл бұрын

    I probably would have quit web dev by now if it were not for you, Kyle. You are the best web dev teacher out there, no paid course even compares to your videos. Thank you a million times!

  • @BazilNizam
    @BazilNizam Жыл бұрын

    what is the 1em in the calc is that 16 px ?

  • @re-member
    @re-memberАй бұрын

    Thank you. Is there a way to show the button only if the text is overflowing?

  • @fran_sar
    @fran_sar6 ай бұрын

    Awesome

  • @dand4485
    @dand4485 Жыл бұрын

    Great video. Just curious when the next CSS battle... 😁

  • @realdaly
    @realdaly Жыл бұрын

    how can I make the fade effect stick to the bottom if my container's overflow was auto not hidden?

  • @nayemalifahim6701
    @nayemalifahim67019 ай бұрын

    Make a video on an input box in which height auto increases and max-height 200px scrollbar comes

  • @ElectricKota
    @ElectricKota Жыл бұрын

    You can even write it without has selector, just select sibling, by ~ sign, you need to move the input before paragpraph, so you must hide input and pair it with label, and then it will works even on older browsers without has() support. I use this hack for every hsmburger menu, sliding articles and so on.

  • @abdulkadirpolatx
    @abdulkadirpolatx10 ай бұрын

    Great

  • @mfsbo
    @mfsbo Жыл бұрын

    Hey Kyle, how did you edit the cursor when you placed the last cursor in multiple cursors at wrong place. It was around 1:35 mark

  • @rama3018
    @rama3018 Жыл бұрын

    Wow , your vidio so good bro , yeah i like to learn your vidio and practice 😂

  • @spoonmanchen7631
    @spoonmanchen76313 ай бұрын

    Can you provide tips on how to make the transition in 'p' height more smoother?

  • @omyele9315
    @omyele9315 Жыл бұрын

    Cool sir

  • @nguyenvuvietanh9268
    @nguyenvuvietanh92689 ай бұрын

    can you teach me how to add transition to this wonderful thing?

  • @Amr-ep3vl
    @Amr-ep3vl10 ай бұрын

    I love how you were going nice and slow and explaining things clearly. And then the "has" property kicks in and you go full throttle and I don't understand what the hell just happened :D

  • @smohammadhn
    @smohammadhn Жыл бұрын

    That was magic ... 😁

  • @Trazynn
    @Trazynn Жыл бұрын

    Can you show us how to make a random image gallery fetching images from a folder?

  • @MarcoGarri-co8jn
    @MarcoGarri-co8jn Жыл бұрын

    Great video. Helps a lot. I there any way to implement in wordpress classic editor because after include this is deleted form page and if I use code snippet include ::before

  • @maicon484
    @maicon48415 күн бұрын

    nice

  • @patrickconrad396
    @patrickconrad396 Жыл бұрын

    Damn man the ridiculously complex series of js loops I created to do this with pictures and then seeing the simplicity of pure css is insane.

  • @nomad100hd

    @nomad100hd

    Жыл бұрын

    Using a checkbox is bad practice because it is not accessibility friendly. It is better to use javascript.

  • @haidubogdan8712
    @haidubogdan8712 Жыл бұрын

    I think a example using and would have been interesting to see. In this case you can solve the expanding animation without the need of a checkbox.

  • @alex4tm1

    @alex4tm1

    Жыл бұрын

    but then you would always have to click to see the content no matter if it was 3 lines or 20, this solves that problem and when the text is short u see it all, when it's long u see a preview

  • @haidubogdan8712

    @haidubogdan8712

    Жыл бұрын

    @@alex4tm1 it's related to using the "hack" checkbox as a toggle element to expand / collapse. For me this is a bit counter-intuitive. The same principle of css ~:checked rule, can be applied on details[open] { ... }

  • @sushmithasrikanth3836
    @sushmithasrikanth3836 Жыл бұрын

    Hello .. can you please teach how to use nodemailer to send a welcome mail automatically after a user registers

  • @Enkrod
    @Enkrod Жыл бұрын

    This is really nice but doesn't work with Firefox if you don't manually set a flag in your Browser. I'm sure it will work in a near future version, but right now it's something to keep in mind.

  • @dangoldsmith3039
    @dangoldsmith30397 ай бұрын

    Very cool approach… I love it thanks kyle. The only shame is you can’t smoothly animate between the checked states can you? So the boxes smoothly animate to and from the expanded style.

  • @khoinguyen-ft2ys
    @khoinguyen-ft2ys Жыл бұрын

    :has selector is a game changer

  • @sumith
    @sumith Жыл бұрын

    its cool

  • @sneaky-Jay
    @sneaky-Jay Жыл бұрын

    There is an older technique here using the siblings css selector on the checked checkbox. But the drawback is the order of the elements inside the HTML.

  • @nomad100hd

    @nomad100hd

    Жыл бұрын

    It is also not accessibility friendly.

  • @some5794
    @some5794 Жыл бұрын

    why do you use -- at the beginning of line-height?

  • @thetechie6770
    @thetechie6770 Жыл бұрын

    Please make a detailed explanation video on Redux

  • @spreadItWide
    @spreadItWide Жыл бұрын

    That last minute was wild! Headed to that :has() video now!

  • @TonyStark90743
    @TonyStark90743 Жыл бұрын

    Plz make videos on Google auth with mern and Rest api with nodejs and sql

  • @offgridvince
    @offgridvince Жыл бұрын

    Thank you so much for you videos, I'm learning so much. Also, I am having a difficult time with the login tutorial. I can only get the login in route to work in deveplopment. I can't seem to get bcrypt compare to work in production with MongoDB Atlas or Compass. Please help. Thank you.

  • @offgridvince

    @offgridvince

    Жыл бұрын

    I'll accept knowledge from the chat as well. I reached out with comments on that video, but it's like 2 years old now. Not too active.

  • @alexradu1921
    @alexradu1921 Жыл бұрын

    can we add animation to it?