How to make the overflow CSS property work with hidden as value

后端 未结 6 1214
南方客
南方客 2020-11-30 22:21

I am having a tough time with overflow: hidden.

Basically, I am trying to hide the overflow of an unordered list which is located in a

相关标签:
6条回答
  • 2020-11-30 22:29

    Evidently, sometimes, the display properties of parent of the element containing the matter that shouldn't overflow should also be set to overflow:hidden as well, e.g.:

    <div style="overflow: hidden">
      <div style="overflow: hidden">some text that should not overflow<div>
    </div>
    

    Why? I have no idea but it worked for me. See https://medium.com/@crrollyson/overflow-hidden-not-working-check-the-child-element-c33ac0c4f565 (ignore the sniping at stackoverflow!)

    0 讨论(0)
  • 2020-11-30 22:33

    I did not get it. I had a similar problem but in my nav bar.

    What I was doing is I kept my navBar code in this way: nav>div.navlinks>ul>li*3>a

    In order to put hover effects on a I positioned a to relative and designed a::before and a::after then i put a gray background on before and after elements and kept hover effects in such way that as one hovers on <a> they will pop from outside a to fill <a>.

    The problem is that the overflow hidden is not working on <a>.

    What i discovered is if i removed <li> and simply put <a> without <ul> and <li> then it worked.

    What may be the problem?

    0 讨论(0)
  • 2020-11-30 22:40

    Actually...

    To hide an absolute positioned element, the container position must be anything except for static. It can be relative or fixed in addition to absolute.

    0 讨论(0)
  • 2020-11-30 22:40

    In addition to provided answers:

    it seems like parent element (the one with overflow:hidden) must not be display:inline. Changing to display:inline-block worked for me.

    .outer {
      position: relative;
      border: 1px dotted black;
      padding: 5px;
      overflow: hidden;
    }
    .inner {
      position: absolute;
      left: 50%;
      margin-left: -20px;
      top: 70%;
      width: 40px;
      height: 80px;
      background: yellow;
    }
    <span class="outer">
      Some text
      <span class="inner"></span>
    </span>
    <span class="outer" style="display:inline-block;">
      Some text
      <span class="inner"></span>
    </span>

    0 讨论(0)
  • 2020-11-30 22:41

    This worked for me

    <div style="display: flex; position: absolute; width: 100%;">
      <div style="white-space: nowrap; overflow: hidden;text-overflow: ellipsis;">
        Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi.
      </div>
    </div>
    

    Adding position:absolute to the parent container made it work.

    PS: This is for anyone looking for a solution to dynamically truncating text.

    EDIT: This was meant to be an answer for this question but since they are related and it could help someone on this question I shall also leave it here instead of deleting it.

    0 讨论(0)
  • 2020-11-30 22:45

    Ok if anyone else is having this problem this may be your answer:

    If you are trying to hide absolute positioned elements make sure the container of those absolute positioned elements is relatively positioned.

    0 讨论(0)
提交回复
热议问题