Hide part of a text with a div

0

I have a text within a div with a paragraph ( <p></p> ) that I want to hide with another div above

To achieve this I did with the help bootstrap collapse .

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

<!--Panel de Historial de mensajes-->
<div class="panel panel-success">
	<div class="panel-body">
		<!--Encabezado del historial-->
		<div>
			<div class="col-xs-10">
				<div class="col-xs-2">
					<img src="~/img/kreston/2016 KRESTONZAC INTELEGIS - sobre fondo Blanco.png" alt="imgUser" class="img-responsive img-circle" />
				</div>
				<div class="col-xs-10">Fulanito > Menganito</div>
			</div>
			<div class="pull-right col-xs-2 triangulo-no-favoritos">
				<button class="btn btn-link" title="Favoritos">
					<i class="fa fa-star-o" id="favorito"></i>
				</button>
			</div>
		</div>
		<!--Cuerpo del Historial-->
		<div class="col-sm-12">
			<div class="col-sm-1 icono">
				<i class="fa fa-comments"></i>
			</div>
			<div class="col-sm-11">
				<div>
					Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut placerat laoreet tellus, vitae aliquam nisl blandit ac. Nullam nec purus erat. Nam consectetur eget nisi et tempor. Maecenas condimentum tincidunt magna quis accumsan. Nam eu egestas erat. Integer condimentum sodales pretium. Fusce sit amet rhoncus mauris. Suspendisse feugiat consectetur enim malesuada feugiat.
				</div>
				<div class="collapse" id="collapseExample">
					Aliquam rutrum, quam quis sodales hendrerit, mi nisl pellentesque felis, sed ornare magna magna sit amet lacus. Donec ligula justo, varius eget tristique vel, ultricies eget nibh. Phasellus vel leo gravida, tempor orci volutpat, sodales ex. Donec ac arcu nulla. Sed feugiat imperdiet purus vel vehicula. In aliquam libero sed enim elementum, quis iaculis ante rutrum. Sed eget urna dictum, mattis felis vestibulum, scelerisque arcu. Fusce suscipit mi eu purus dapibus imperdiet. Fusce elit ante, semper placerat mi quis, laoreet euismod turpis.
				</div>
				<button id="masTexto" class="btn btn-link" style="border-top:1px solid #bdc3c7;width:100%;" title="Ver más" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
					<i class="fa fa-chevron-down" id="mas">Expande</i>
				</button>
			</div>
		</div>
		<!--Footer del historial-->
		<div class="col-sm-12">
			<div class="pull-right">Ayer, 12:35 PM</div>
		</div>
	</div>
</div>

But I do not like it since I would have to separate the text to "X" number of characters from the paragraph and the other part to place it within div.collapse .

My goal is to achieve that all the text is within a div and another div above cover most of the text as the image

To better explain my goal in this video game page in the "About this Game" section, it is hidden Much of the text, I would like to do that functionality

    
asked by JuankGlezz 14.12.2016 в 18:57
source

3 answers

2

Since you are using Bootstrap , you could create a class ( .minHeight , for example) and establish that if this is together with the .collapse classes overwrite the properties that they originally have.

So for example:

.minHeight.collapse {
    clear: both;
    height: 0;
    display: block;
    /* Alto minimo */
    min-height: 43px;
    overflow: hidden;
}
.minHeight.collapsing {
    clear: both;
    min-height: 43px;
}
.minHeight.collapse.in {
  height: auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

<!-- Latest compiled and minified JavaScript -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

<!--Panel de Historial de mensajes-->
<div class="panel panel-success">
	<div class="panel-body">
		<!--Encabezado del historial-->
		<div>
			<div class="col-xs-10">
				<div class="col-xs-2">
					<img src="~/img/kreston/2016 KRESTONZAC INTELEGIS - sobre fondo Blanco.png" alt="imgUser" class="img-responsive img-circle" />
				</div>
				<div class="col-xs-10">Fulanito > Menganito</div>
			</div>
			<div class="pull-right col-xs-2 triangulo-no-favoritos">
				<button class="btn btn-link" title="Favoritos">
					<i class="fa fa-star-o" id="favorito"></i>
				</button>
			</div>
		</div>
		<!--Cuerpo del Historial-->
		<div class="col-sm-12">
			<div class="col-sm-1 icono">
				<i class="fa fa-comments"></i>
			</div>
			<div class="col-sm-11">
				<div class="minHeight collapse" id="collapseExample">
					Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut placerat laoreet tellus, vitae aliquam nisl blandit ac. Nullam nec purus erat. Nam consectetur eget nisi et tempor. Maecenas condimentum tincidunt magna quis accumsan. Nam eu egestas erat. Integer condimentum sodales pretium. Fusce sit amet rhoncus mauris. Suspendisse feugiat consectetur enim malesuada feugiat.<br>
					Aliquam rutrum, quam quis sodales hendrerit, mi nisl pellentesque felis, sed ornare magna magna sit amet lacus. Donec ligula justo, varius eget tristique vel, ultricies eget nibh. Phasellus vel leo gravida, tempor orci volutpat, sodales ex. Donec ac arcu nulla. Sed feugiat imperdiet purus vel vehicula. In aliquam libero sed enim elementum, quis iaculis ante rutrum. Sed eget urna dictum, mattis felis vestibulum, scelerisque arcu. Fusce suscipit mi eu purus dapibus imperdiet. Fusce elit ante, semper placerat mi quis, laoreet euismod turpis.
				</div>
				<button id="masTexto" class="btn btn-link" style="border-top:1px solid #bdc3c7;width:100%;" title="Ver más" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
					<i class="fa fa-chevron-down" id="mas">Expande</i>
				</button>
			</div>
		</div>
		<!--Footer del historial-->
		<div class="col-sm-12">
			<div class="pull-right">Ayer, 12:35 PM</div>
		</div>
	</div>
</div>
    
answered by 14.12.2016 / 20:17
source
2

You do not need much scaffolding to do it, just a <div> and a <span> to handle the click that expands the element and finally, the necessary css.

The basis of operation is:

1- Restrict the high maximum with max-height and hide the excess with overflow: hidden .

2- In the click event, reset the default value of max-height (causing it to expand) and hide the expansion button.

Example:

$('.compact span').click(function() {
  $(this).hide();
  $(this).parent().addClass('expanded');
});
.compact {
  position: relative;
  background: black;
  color: white;
  padding: 5px;
  width: 200px;
  max-height: 200px;
  overflow: hidden;
}
.compact span {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 40px;
  background: linear-gradient(transparent, black);
  color: red;
  line-height: 40px;
  text-align: right;
  padding-right: 20px;
}
.compact.expanded {
  max-height: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="compact">
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut placerat laoreet tellus, vitae aliquam nisl blandit ac. Nullam nec purus erat. Nam consectetur eget nisi et tempor. Maecenas condimentum tincidunt magna quis accumsan. Nam eu egestas erat. Integer
  condimentum sodales pretium. Fusce sit amet rhoncus mauris. Suspendisse feugiat consectetur enim malesuada feugiat.
  <span>LEER MAS</span>
</div>
    
answered by 14.12.2016 в 19:50
1

Here we go! Using css and jquery :

$("i").click(function(){
 $(".texto").toggleClass("hide-text");
 $("#masTexto").toggleClass("padding-text");
 $(".texto").hasClass("hide-text") ? $(this).text("Leer menos")
 : $(this).text("Leer más") ;
});
#masTexto {
  background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(80, 80, 80, 0.1)), to(rgba(50, 50, 50, 0.9)), color-stop(.8, #000));
  width: 100%;
  height: 4em;
  color: #28f;
  text-align: right;
  padding-top: 40px;
  margin-top : -70px;
}
.padding-text{
  margin-top : 25px !important;
  padding-top: -20px;
}

i { cursor: pointer; }

.texto{
  height: 7em;
  overflow: hidden;
}

.wrapper{
  background-color: #666;
  color: #FFF;  
}

.hide-text{
overflow: initial;
height: auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="wrapper">
<div class="texto">
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut placerat laoreet tellus, vitae aliquam nisl blandit ac. Nullam nec purus erat. Nam consectetur eget nisi et tempor. Maecenas condimentum tincidunt magna quis accumsan. Nam eu egestas erat. Integer
  condimentum sodales pretium. Fusce sit amet rhoncus mauris. Suspendisse feugiat consectetur enim malesuada feugiat.
  <br> Aliquam rutrum, quam quis sodales hendrerit, mi nisl pellentesque felis, sed ornare magna magna sit amet lacus. Donec ligula justo, varius eget tristique vel, ultricies eget nibh. Phasellus vel leo gravida, tempor orci volutpat, sodales ex. Donec ac
  arcu nulla. Sed feugiat imperdiet purus vel vehicula. In aliquam libero sed enim elementum, quis iaculis ante rutrum. Sed eget urna dictum, mattis felis vestibulum, scelerisque arcu. Fusce suscipit mi eu purus dapibus imperdiet. Fusce elit ante, semper
  placerat mi quis, laoreet euismod turpis.

</div>
<div id="masTexto">
  <br><br><i class="fa fa-chevron-down" id="mas">Leer más</i>
</div>
</div>
    
answered by 14.12.2016 в 21:50