black laptop computer turned on showing computer codes

[ad_1]

En este tutorial, aprenderá cómo hacer que un elemento aparezca en pantalla completa en cualquier navegador usando JavaScript. API de pantalla completa.

«La API de pantalla completa agrega métodos para representar un elemento en particular y sus descendientes en modo de pantalla completa, y para salir del modo de pantalla completa una vez que ya no es necesario» – MDN

El modo de pantalla completa elimina todos los demás elementos de la pantalla (como la barra de navegación del navegador o la base del escritorio) y llena la pantalla disponible con el elemento seleccionado. Un ejemplo común es cuando se comparte una presentación o se ve un video en pantalla completa.

Una ventaja del modo de pantalla completa es que permite al usuario concentrarse únicamente en el elemento que se está viendo sin distraerse con otros elementos en la pantalla. La API FullScreen también usa el comportamiento predeterminado del sistema, por lo que podemos aprovechar algunas funciones integradas sin tener que escribir más código, como presionar Esc Tecla de cierre de pantalla completa.

1. marcado HTML

Para nuestro marcado usaremos un video elemento y un button elemento para nuestro conmutador de pantalla completa.

Dado que estamos usando un botón de pantalla completa personalizado para nuestro elemento de video, necesitaremos desactivar los controles predeterminados del elemento de video (no se preocupe, siempre podemos recuperar los controles una vez que se habilite la pantalla completa). Podemos hacer esto al no incluir controls atributo en nuestro video etiqueta.

Así es como se ve nuestro marcado:

1
<main>
2
  <video id="video" autoplay loop muted>
3
    <source id='mp4' src="video-src.mp4" type='video/mp4' />
4
  </video>
5
6
  <button 
7
    class="full-screen" 
8
    title="Enter fullscreen mode"
9
    aria-label="Enter fullscreen mode"
10
  >
11
  </button>
12
</main>

2. Estilo con CSS

Diseñaremos el botón de pantalla completa para colocarlo en el medio del contenedor de video.

1
main {
2
  position: relative;
3
  height: auto;
4
}
5
6
video {
7
  min-height: 100vh;
8
  max-width: 100%;
9
  width: 100%;
10
  height: auto;
11
  padding: 0;
12
}
13
14
.full-screen {
15
  transition: 150ms;
16
  position: absolute;
17
  top: 0;
18
  bottom: 0;
19
  right: 0;
20
  left: 0;
21
  margin: auto;
22
  height: fit-content;
23
  width: fit-content;
24
  background-color: rgba(255, 255, 255, 0.5);
25
  border-color: transparent;
26
  border-radius: 50%;
27
  padding: 16px;
28
  display: flex;
29
  justify-content: center;
30
  align-items: center;
31
  outline: none;
32
  cursor: pointer;
33
}
34
35
.full-screen:hover {
36
  background-color: rgba(255, 255, 255, 1);
37
}

También podemos usar la consulta de medios CSS hover para determinar cómo debe comportarse el botón en dispositivos de apuntar y hacer clic (p. ej., portátiles) frente a dispositivos táctiles (p. ej., teléfonos móviles). En esta demostración, configuraremos el botón para que siempre esté visible en los dispositivos táctiles y solo visible al pasar el mouse sobre los dispositivos con cursor.

1
@media (hover: hover) {
2
  .full-screen {
3
    opacity: 0;
4
  }
5
6
  main:hover .full-screen {
7
    opacity: 1;
8
  }
9
}

3. Funcionalidad de pantalla completa

Una vez que tenemos el diseño y el estilo listos, podemos comenzar con la funcionalidad usando JavaScript.

Almacenaremos los elementos que serán seleccionados como variables globales.

1
const video = document.getElementById("video");
2
const fullscreenButton = document.querySelector(".full-screen");

Con la ayuda de detector de eventos, realizaremos un seguimiento cuando se haga clic en el botón de pantalla completa y llamaremos a la API de pantalla completa. Esto se puede hacer con la ayuda de .requestFullScreen() directamente sobre el elemento a realizar a pantalla completa.

1
fullscreenButton.addEventListener("click", function () {
2
  video.requestFullscreen();
3
});

Soporte de pantalla completa de iOS

Para dispositivos iOS, requerimos un método diferente, por lo que necesitaremos actualizar nuestra función para tener esto en cuenta.

1
fullscreenButton.addEventListener("click", function () {
2
  if (video.webkitSupportsFullscreen) {
3
    video.webkitEnterFullscreen();
4
    return;
5
  }
6
7
  video.requestFullscreen();
8
});

El requestFullScreen el método se aplica solo al elemento en el que se llama y sus descendientes. En esta demostración, el botón de pantalla completa no es un descendiente del elemento de video, por lo que una vez que se aplica el modo de pantalla completa al video, el botón de pantalla completa ya no estará visible.

Dado que ya no tendremos acceso al botón de alternar cuando el video esté en modo de pantalla completa, necesitaremos otro método para asegurarnos de que el usuario pueda salir de la vista de pantalla completa. Afortunadamente, los controles de video HTML5 estándar incluyen un cambio de pantalla completa, por lo que podemos usar esto a nuestro favor al mostrar los controles de video después de que el modo de pantalla completa esté activo. Veremos cómo hacer esto en la siguiente sección.

Oyente de eventos a pantalla completa

Hay un detector de eventos específico para detectar cuándo el navegador entra o sale del modo de pantalla completa. Podemos detectar el cambio de modo de pantalla completa con fullscreenchange detector de eventos y también detecta si el navegador está actualmente en modo de pantalla completa con fullscreenElement Propiedad. La propiedad devuelve el elemento exacto en una vista de pantalla completa o devuelve null si no se encuentra ningún elemento.

Con estas dos propiedades, podemos realizar cambios en nuestros elementos en función de si están en modo de pantalla completa o no.

En esta demostración, agregaremos los controles predeterminados al video una vez que esté en modo de pantalla completa y los eliminaremos cuando ya no esté en modo de pantalla completa usando setAttribute y removeAttribute métodos.

1
document.addEventListener("fullscreenchange", function () {
2
  if (document.fullscreenElement) {
3
    video.setAttribute("controls", true);
4
    return;
5
  }
6
7
  video.removeAttribute("controls");
8
});

Formatear elementos en pantalla completa

También hay selectores de CSS para diseñar elementos cuando está en modo de pantalla completa. El :fullscreen El selector se puede usar para diseñar elementos cuando el modo de pantalla completa está activo y ::backdrop el pseudo-selector se puede usar para diseñar el fondo del modo de pantalla completa.

El navegador utiliza estos selectores para aplicar un estilo predeterminado al modo de pantalla completa.

Estilos de navegador predeterminados para el modo de pantalla completa usando los selectores :fullscreen y ::backdropEstilos de navegador predeterminados para el modo de pantalla completa usando los selectores :fullscreen y ::backdropEstilos de navegador predeterminados para el modo de pantalla completa usando los selectores :fullscreen y ::backdrop

5. Uso de FullScreenAPI en elementos que no son de video

Al comienzo de este tutorial, mencioné que la API de pantalla completa solo es totalmente compatible con elementos de video para dispositivos iOS. Ahora veremos un método incompatible entre navegadores para usar la API de pantalla completa en otros elementos.

En esta demostración, llamaremos a la API de pantalla completa en un carrusel que creamos previamente en otro tutorial.

Aquí está la nueva demostración (una versión más grande de CodePen). Tenga en cuenta que esta implementación no funcionará en un iPhone.

El modo de pantalla completa generalmente se puede habilitar en un iframe siempre que el iframe esté presente allowfullscreen o allow="fullscreen" atributo.

Usaremos el diseño del tutorial de carrusel y agregaremos un botón de pantalla completa. También usaremos íconos SVG para alternar la visualización de los botones dependiendo de si el modo de pantalla completa está activo o no.

Así es como se ve nuestro marcado:

1
<section class="slider-wrapper" id="wrapper">
2
3
  <button class="full-screen" title="Enter full screen mode">
4
    <svg class="full-screen--open"></svg>
5
    
6
    <svg class="full-screen--close"></svg>
7
  </button>
8
  
9
  <ul class="slides-container" id="slides-container">
10
  </ul>
11
</section>

Una diferencia con esta implementación es que el botón de pantalla completa es un descendiente del elemento que vamos a poner en pantalla completa, por lo que aún podremos acceder a él en modo de pantalla completa. Por lo tanto, podemos usar el mismo botón para salir del modo de pantalla completa.

Obtener artículos

Primero obtendremos los elementos a los que apuntamos con JavaScript:

1
const wrapper = document.getElementById("wrapper");
2
const fullscreenButton = document.querySelector(".full-screen");

Como estamos usando un botón de alternar, no necesitamos detectar el evento de cambio de pantalla completa, ya que podemos verificar ambos casos en nuestro detector de eventos de clic.

1
fullscreenButton.addEventListener("click", function () {
2
  if (document.fullscreenElement) {
3
    document.exitFullscreen()
4
  } else {
5
    if (wrapper.webkitSupportsFullscreen) {
6
      wrapper.webkitEnterFullscreen()
7
    } else {
8
      wrapper.requestFullscreen()
9
    }
10
  }
11
});

Alternar visualización de iconos

El requestFullScreen() y exitFullScreen() métodos de devolución promesas por lo que es posible vincular otra función para que se ejecute después de que los métodos se ejecuten usando el .then() método.

Podemos usar este método para alternar la visualización del ícono en el botón de pantalla completa agregando y eliminando una clase is-active.

Así es como se ve nuestra función actualizada:

1
fullscreenButton.addEventListener("click", () => {
2
  if (document.fullscreenElement) {
3
    document
4
      .exitFullscreen()
5
      .then(() => fullscreenButton.classList.remove("is-active"));
6
  } else {
7
    if (wrapper.webkitSupportsFullscreen) {
8
      wrapper
9
        .webkitEnterFullscreen()
10
        .then(() => fullscreenButton.classList.add("is-active"));
11
    } else {
12
      wrapper
13
        .requestFullscreen()
14
        .then(() => fullscreenButton.classList.add("is-active"));
15
    }
16
  }
17
});

Luego podemos actualizar nuestro CSS para mostrar el ícono que queremos según el nombre de la clase:

1
.full-screen:not(.is-active) .full-screen--close {
2
  display: none;
3
}
4
5
.full-screen.is-active .full-screen--open {
6
  display: none;
7
}

También es posible lograr el mismo efecto usando :fullscreen selector sin tener que cambiar los nombres de clase con JavaScript.

Usando :fullscreen selector, nuestro CSS se ve así:

1
.full-screen--close {
2
  display: none
3
}
4
5
:fullscreen .full-screen--open {
6
  display: none;
7
}
8
9
:fullscreen .full-screen--close {
10
  display: block;
11
}

Conclusión

¡Y eso es todo amigos! En este tutorial, aprendió a implementar la API de JavaScript de pantalla completa, incluidos varios casos de uso y advertencias.

[ad_2]

Créditos: Jemima Abu (Envato Tuts+ Web Design)

¡¡Si te ha gustado el post compártelo en tus redes sociales para que llegue a más gente!!

Si te ha gustado vota este post

Publicaciones Similares