Wrap a text within only two lines inside div

前端 未结 11 733

I want to wrap a text within only two lines inside div of specific width. If text goes beyond the length of two lines then I want to show elipses. Is there a way to do that

相关标签:
11条回答
  • 2020-12-04 09:15

    The best one I've seen which is CSS only and responsive comes from Mobify Developer Blog - CSS Ellipsis: How to Manage Multi-Line Ellipsis in Pure CSS:

    JS Fiddle Example

    CSS:

    html, body, p { margin: 0; padding: 0; font-family: sans-serif;}
    
    .ellipsis {
        overflow: hidden;
        height: 200px;
        line-height: 25px;
        margin: 20px;
        border: 5px solid #AAA; }
    
    .ellipsis:before {
        content:"";
        float: left;
        width: 5px; height: 200px; }
    
    .ellipsis > *:first-child {
        float: right;
        width: 100%;
        margin-left: -5px; }        
    
    .ellipsis:after {
        content: "\02026";  
    
        box-sizing: content-box;
        -webkit-box-sizing: content-box;
        -moz-box-sizing: content-box;
        float: right; position: relative;
        top: -25px; left: 100%; 
        width: 3em; margin-left: -3em;
        padding-right: 5px;
    
        text-align: right;
    
        background: -webkit-gradient(linear, left top, right top,
            from(rgba(255, 255, 255, 0)), to(white), color-stop(50%, white));
        background: -moz-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);           
        background: -o-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);
        background: -ms-linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white);
        background: linear-gradient(to right, rgba(255, 255, 255, 0), white 50%, white); }
    

    Html:

    <div class="ellipsis">
        <div class="blah">
            <p>Call me Ishmael. Some years ago &ndash; never mind how long precisely &ndash; having little or no money in my purse, and nothing particular to interest me on shore, I thought I would sail about a little and see the watery part of the world. It is a way I have of driving off the spleen, and regulating the circulation. Whenever I find myself growing grim about the mouth; whenever it is a damp, drizzly November in my soul; whenever I find myself involuntarily pausing before coffin warehouses, and bringing up the rear of every funeral I meet; and especially whenever my hypos get such an upper hand of me, that it requires a strong moral principle to prevent me from deliberately stepping into the street, and methodically knocking people's hats off &ndash; then, I account it high time to get to sea as soon as I can.</p>
        </div>
    </div>
    
    0 讨论(0)
  • 2020-12-04 09:19

    Another simple and quick solution

    .giveMeEllipsis {
       overflow: hidden;
       text-overflow: ellipsis;
       display: -webkit-box;
       -webkit-box-orient: vertical;
       -webkit-line-clamp: N; /* number of lines to show */
       line-height: X;        /* fallback */
       max-height: X*N;       /* fallback */
    }
    

    The reference to the original question and answer is here

    0 讨论(0)
  • 2020-12-04 09:20

    Typically a one-line truncate is quite simple

    .truncate-text {
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    

    Two line truncate is a little bit more tricky, but it can be done with css this example is in sass.

    @mixin multiLineEllipsis($lineHeight: 1.2rem, $lineCount: 2, $bgColor: white, $padding-right: 0.3125rem, $width: 1rem, $ellipsis-right: 0) {
      overflow: hidden; /* hide text if it is more than $lineCount lines  */
      position: relative; /* for set '...' in absolute position */
      line-height: $lineHeight; /* use this value to count block height */
      max-height: $lineHeight * $lineCount; /* max-height = line-height * lines max number */
      padding-right: $padding-right; /* place for '...' */
      white-space: normal; /* overwrite any white-space styles */
      word-break: break-all; /* will break each letter in word */
      text-overflow: ellipsis; /* show ellipsis if text is broken */
    
      &::before {
        content: '...'; /* create the '...'' points in the end */
        position: absolute;
        right: $ellipsis-right;
        bottom: 0;
      }
    
      &::after {
        content: ''; /* hide '...'' if we have text, which is less than or equal to max lines and add $bgColor */
        position: absolute;
        right: 0;
        width: $width;
        height: 1rem * $lineCount;
        margin-top: 0.2rem;
        background: $bgColor; /* because we are cutting off the diff we need to add the color back. */
      }
    }
    
    0 讨论(0)
  • 2020-12-04 09:22

    CSS only solution for Webkit

    // Only for DEMO
    $(function() {
    
      $('#toggleWidth').on('click', function(e) {
    
        $('.multiLineLabel').toggleClass('maxWidth');
    
      });
    
    })
    .multiLineLabel {
      display: inline-block;
      box-sizing: border-box;
      white-space: pre-line;
      word-wrap: break-word;
    }
    
    .multiLineLabel .textMaxLine {
      display: -webkit-box;
      -webkit-box-orient: vertical;
      -webkit-line-clamp: 2;
      overflow: hidden;
    }
    
    
    /* Only for DEMO */
    
    .multiLineLabel.maxWidth {
      width: 100px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="multiLineLabel">
      <span class="textMaxLine">This text is going to wrap automatically in 2 lines in case the width of the element is not sufficiently wide.</span>
    </div>
    <br/>
    <button id="toggleWidth">Toggle Width</button>

    0 讨论(0)
  • 2020-12-04 09:23

    Use the below link for wrap into two lines check the link

    Insert ellipsis (...) into HTML tag if content too wide

    That needs the below jquery

    http://www.jeremymartin.name/projects.php?project=jTruncate

    0 讨论(0)
  • 2020-12-04 09:23

    @Asiddeen bn Muhammad's solution worked for me with a little modification to the css

        .text {
     line-height: 1.5;
      height: 6em; 
    white-space: normal;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
     }
    
    0 讨论(0)
提交回复
热议问题