JSFiddle - React, Tailwind, and code Playground

by luka kupunia

HTML

<p class="block-with-text">
  Lorem ipsum dolor sit amet, consectetur adipisicing elit. At, officiis eaque illo. Veritatis cupiditate, alias vero incidunt quis culpa beatae eius asperiores fugiat consequatur commodi quisquam necessitatibus autem! Quidem, ex.
  Lorem ipsum dolor sit amet, consectetur adipisicing elit. At, officiis eaque illo. Veritatis cupiditate, alias vero incidunt quis culpa beatae eius asperiores fugiat consequatur commodi quisquam necessitatibus autem! Quidem, ex.
  Lorem ipsum dolor sit amet, consectetur adipisicing elit. At, officiis eaque illo. Veritatis cupiditate, alias vero incidunt quis culpa beatae eius asperiores fugiat consequatur commodi quisquam necessitatibus autem! Quidem, ex.
  Lorem ipsum dolor sit amet, consectetur adipisicing elit. At, officiis eaque illo. Veritatis cupiditate, alias vero incidunt quis culpa beatae eius asperiores fugiat consequatur commodi quisquam necessitatibus autem! Quidem, ex.
  Lorem ipsum dolor sit amet, consectetur adipisicing elit. At, officiis eaque illo. Veritatis cupiditate, alias vero incidunt quis culpa beatae eius asperiores fugiat consequatur commodi quisquam necessitatibus autem! Quidem, ex.
  Lorem ipsum dolor sit amet, consectetur adipisicing elit. At, officiis eaque illo. Veritatis cupiditate, alias vero incidunt quis culpa beatae eius asperiores fugiat consequatur commodi quisquam necessitatibus autem! Quidem, ex.
  Lorem ipsum dolor sit amet, consectetur adipisicing elit. At, officiis eaque illo. Veritatis cupiditate, alias vero incidunt quis culpa beatae eius asperiores fugiat consequatur commodi quisquam necessitatibus autem! Quidem, ex.
</p>

CSS

/* styles for '...' */ 
p{}
.block-with-text {
  /* hide text if it more than N lines  */
  overflow: hidden;
  /* for set '...' in absolute position */
  position: relative; 
  /* use this value to count block height */
  line-height: 1.2em;
  /* max-height = line-height (1.2) * lines max number (3) */
  max-height: 3.6em; 
  /* fix problem when last visible word doesn't adjoin right side  */
  text-align: justify;  
  /* place for '...' */
  margin-right: -1em;
  padding-right: 1em;
}
/* create the ... */
.block-with-text:before {
  /* points in the end */
  content: '...';
  /* absolute position */
  position: absolute;
  /* set position to right bottom corner of block */
  right: 0;
  bottom: 0;
}
/* hide ... if we have text, which is less than or equal to max lines */
.block-with-text:after {
  /* points in the end */
  content: '';
  /* absolute position */
  position: absolute;
  /* set position to right bottom corner of text */
  right: 0;
  /* set width and height */
  width: 1em;
  height: 1em;
  margin-top: 0.2em;
  /* bg color = bg color under block */
  background: white;
}