Publicidad

Ayer aprendí a modificar una etiqueta de html desde Javascript, me pareció tan interesante que no lo quiero olvidar. Así que voy a hacer un post para volver a verlo cuando quiera recordar como usarlo.😅

Para modificar un media query desde Javascript veremos lo siguiente:

Window.matchMedia() : 

El método «Window.matchMedia()» recibe un parámetro tipo texto que indica el media query de el cual vamos a devolver el nuevo objeto.

Window.matchMedia(), Window.matchMedia js, Window.matchMedia javascript

 

Método addEventListener() :

El método «addEventListener()»  Ejecuta una acción cada ves que es activado, este método tiene 2 parámetros, uno que especifica el tipo de evento y el segundo es una función anónima.

addEventListener js

Publicidad

 

Ejemplo:

Hacer invisible el <nav> cuando la pantalla tenga 1000px mediante javascript.

Para este ejemplo primero vamos a crear la estructura del html.

<!DOCTYPE html>
<html>
  <head>
    <title>Media Queries - ejemplo</title>
  </head>
  <body>
    <header>
      <img width="115" src="bear-5.svg" alt="bear-logo"/>
      <nav>
      <ul>
        <li class="first-li">Inicio</li>
        <li>Sobre nosotros</li>
        <li>Contacto</li>
      </ul>
      </nav>
    </header>
  </body>
  <script src="script.js"> </script>
</html>

Ahora del lado de javascript  creamos una constante donde guardaremos el nuevo objeto.

 const screen = window.matchMedia("(max-width: 1000px)")

Lo siguiente es que el objeto llama al evento y si el evento se activa entonces llega a ejecutase todo lo que hay dentro de la función anónima.

screen.addEventListener("change", function() {
if (screen.matches) {
  document.querySelector("nav").style.display = "none";
} else {
  document.querySelector("nav").style.display = "block";
}
});

Como extra también le daremos un poco de color con css.

body {
    color: white;
    font-family: 'Fredoka', sans-serif;
    font-family: 'Noto Sans SC', sans-serif;
}

header {
    width: 100vw;
    background: #ff66c3;
    height: 150px;
    display: grid;
    place-content: end;
}

nav {
    width: 100vw;
    background: #13d5b8;
    padding: 8px;
}


.first-li {
   border-left: 1px solid aliceblue;
}

li {
    display: inline;
    border-right: 1px solid aliceblue;
    padding: 0px 8px;
}

Nota: Luego de hacer este ejemplo espabile un poco y note que podía hacer esto mismo con CSS lo cual me parece más fácil.😅

Eso es todo espero no haber cometido errores y si los cometí pueden dejar un comentario para que pueda revisarlo.

Aquí les dejo el enlace al archivo de este pequeño ejemplo.

Publicidad


Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments