Wrap a text within only two lines inside div

匿名 (未验证) 提交于 2019-12-03 02:44:02

问题:

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 using CSS?

e.g.

Sample text showing wrapping of text in only two line... 

Thanks

回答1:

Limiting output to two lines of text is possible with CSS, if you set the line-height and height of the element, and set overflow:hidden;:

#someDiv {     line-height: 1.5em;     height: 3em;       /* height is 2x line-height, so two lines will display */     overflow: hidden;  /* prevents extra lines from being visible */ } 

--- jsFiddle DEMO ---

Alternatively, you can use the CSS text-overflow and white-space properties to add ellipses, but this only appears to work for a single line.

#someDiv {     line-height: 1.5em;     height: 3em;     overflow: hidden;     white-space: nowrap;     text-overflow: ellipsis;     width: 100%; } 

And a demo:

--- jsFiddle DEMO ---

Achieving both multiple lines of text and ellipses appears to be the realm of javascript.



回答2:

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> 


回答3:

I believe the CSS-only solution text-overflow: ellipsis applies to one line only, so you won't be able to go this route:

.yourdiv {      line-height: 1.5em; /* Sets line height to 1.5 times text size */     height: 3em; /* Sets the div height to 2x line-height (3 times text size) */     width: 100%; /* Use whatever width you want */     white-space: normal; /* Wrap lines of text */     overflow: hidden; /* Hide text that goes beyond the boundaries of the div */     text-overflow: ellipsis; /* Ellipses (cross-browser) */     -o-text-overflow: ellipsis; /* Ellipses (cross-browser) */ } 

Have you tried http://tpgblog.com/threedots/ for jQuery?



回答4:

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



回答5:

See http://jsfiddle.net/SWcCt/.

Just set a line-height the half of height:

line-height:20px; height:40px; 

Of course, in order to make text-overflow: ellipsis work you also need:

overflow:hidden; white-space: pre; 


回答6:

Try something like this: http://jsfiddle.net/6jdj3pcL/1/

<p>Here is a paragraph with a lot of text ...</p>  p {     line-height: 1.5em;     height: 3em;     overflow: hidden;     width: 300px; }  p::before {    content: '...';    float: right;    margin-top: 1.5em; } 


回答7:

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>


回答8:

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



回答9:

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. */   } } 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!