Efecto con el método fadeTo en jQuery

El .fadeTo()método anima la opacidad de los elementos coincidentes. Es similar al .fadeIn()método, pero ese método muestra el elemento y siempre se desvanece al 100% de opacidad.

El método fadeTo () cambia gradualmente la opacidad, para los elementos seleccionados, a una opacidad específica (efecto de desvanecimiento).


Sintaxis

La sintaxis es parecida a los 2 efectos anteriores fadeIn() y fadeOut()

$(elemento).fadeTo(speed,opacity,easing,callback)

Opciones
  • elemento (obligatorio): Este valor será normalmente el id del elemento (‘#’) que queremos manipular. También puede ser un class (‘.’) o etiqueta.
  • speed (oblgatorio): Velocidad de la duración del efecto en milisengundos. También pueden pasarse los valores ‘fast‘ y ‘slow‘.
  • opacity (obligatorio): Nivel opacidad que queremos asignar al elemento, el valor deberá estar entre 0.00 y 1.00.
  • easing (opcional): Velocidad de la animación en diferentes puntos de la misma. El valor por defecto es ‘swing‘ (movimiento rápido al principio y final y lento por el medio de la animación), en cambio el valor ‘linear‘ ofrece una animación constante sin cambios de velocidad.
  • callback (opcional): Función/acción que se ejecutará cuando el efecto se haya completado.
Ejemplo

Cambia gradualmente la opacidad de la imagen que esta en el elementos <img>

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>

$(document).ready(function(){
  $("button").click(function(){
    $("img").fadeTo(1000, 0.4);
  });
});
</script>
</head>
<body>
<button>Cambia gradualmente la opacidad de la foto</button>
<img src="imagenes/prueba.jpg" style="max-width:100%;width:auto;height:auto;">
</body>
</html>

Ver ejemplo anterior

El método fadeTo puede modificar la opacidad de un elemento, el efecto es llevar la opacidad actual hasta el valor que le pasamos al método fadeTo

Podemos inicializar este método de las siguientes formas:

fadeTo([velocidad],[valor de opacidad])

Indicamos la velocidad de transición del estado actual al nuevo estado (slow/normal/fast) o un valor indicado en milisegúndos.

El valor de la opacidad es un numero real entre 0 y 1. 1 significa sin opacidad y 0 es transparente.

También podemos llamar al método fadeTo con tres parámetros:

fadeTo([velocidad],[valor de opacidad],[función])

Esta segunda estructura de la función permite ejecutar una función cuando finaliza la transición.

Hay que tener en cuenta que fadeTo por más que indiquemos el valor 0 en opacidad el espacio que ocupa el elemento en la página seguirá ocupado por un recuadro vacío.

Problema:
Confeccionar una página que muestre un recuadro con texto. Disponer dos botones, uno que cambie la opacidad lentamente hasta el valor 0.5 y el otro que lo muestre lentamente hasta el valor 1.

<!DOCTYPE html>
<html>

<head>
  <title>Ejemplo de jQuery</title>
  <meta charset="UTF-8">
  <link rel="StyleSheet" href="estilos22.css" type="text/css">
</head>

<body>
  <input type="button" id="boton1" value="Reducir opacidad">
  <input type="button" id="boton2" value="Aumentar opacidad">
  <div id="descripcion" class="recuadro">
    <p>HTML es el lenguaje que se emplea para el desarrollo de páginas de internet.</p>
    <p>Este lenguaje está constituido de elementos que el navegador interpreta y las despliega en la pantalla de acuerdo a su objetivo. 
	Veremos que hay elementos para disponer imágenes sobre una página, hipervínculos que nos permiten dirigirnos a otra página, listas, 
	tablas para tabular datos, etc.</p>
    <p>Para poder crear una página HTML se requiere un simple editor de texto (en nuestro caso emplearemos este sitio) y un navegador 
	de internet (IExplorer,FireFox etc.), emplearemos el navegador que en este preciso momento está utilizando (recuerde que usted está 
	viendo en este preciso momento una página HTML con su navegador).</p>
    <p>Lo más importante es que en cada concepto desarrolle los ejercicios propuestos y modifique los que se presentan ya resueltos.</p>
    <p>Este curso lo que busca es acercar el lenguaje HTML a una persona que nunca antes trabajó con el mismo. No pretende mostrar todas los 
	elementos HTML en forma alfabética.</p>
    <p>Como veremos, de cada concepto se presenta una parte teórica, en la que se da una explicación completa, luego se pasa a la sección 
	del ejercicio resuelto donde podemos ver el contenido de la página HTML y cómo la visualiza el navegador. Por último y tal vez la sección más 
	importante de este tutorial es donde se propone que usted haga páginas en forma autónoma (donde realmente podrá darse cuenta si el concepto 
	quedó firme).</p>
  </div>

  <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
  <script src="func22.js"></script>
</body>

</html>
Ver ejemplo anterior

func22.js

let x = $(document);
x.ready(inicializarEventos);

function inicializarEventos() {
  let x = $("#boton1");
  x.click(reducirOpacidadRecuadro);
  x = $("#boton2");
  x.click(aumentarOpacidadRecuadro);
}

function reducirOpacidadRecuadro() {
  let x = $("#descripcion");
  x.fadeTo("slow", 0.5);
}

function aumentarOpacidadRecuadro() {
  let x = $("#descripcion");
  x.fadeTo("slow", 1);
}

estilos22.css

.recuadro {
  background-color:#ffffcc;
  font-family:verdana;
  font-size:14px;

  border-top-width:1px;
  border-right-width:3px;
  border-bottom-width:3px;
  border-left-width:1px;

  border-top-style:dotted;
  border-right-style:solid;
  border-bottom-style:solid;
  border-left-style:dotted;

  border-top-color:#ffaa00;
  border-right-color:#ff0000;
  border-bottom-color:#ff0000;
  border-left-color:#ffaa00;
}

Cuando se presiona el botón de reducir la opacidad llamamos al método fadeTo con el valor 0.5:

function reducirOpacidadRecuadro() {
  let x = $("#descripcion");
  x.fadeTo("slow", 0.5);
}

y cuando presionamos el botón de aumentar la opacidad llamamos al método fadeTo con valor 1 en opacidad (significa opacidad total):

function aumentarOpacidadRecuadro() {
  let x = $("#descripcion");
  x.fadeTo("slow", 1);
}