Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

186
Views
No se puede cerrar el elemento <dialog> con la visualización configurada en cuadrícula

La función HtmlDialogElement.close() parece no tener efecto en un elemento <dialog> cuando ese cuadro de diálogo tiene su estilo de display establecido en grid .

¿Alguien sabe por qué? Tenga en cuenta que la eliminación de la display: grid permite que el cuadro de diálogo funcione correctamente. He visto este comportamiento en las últimas versiones de Chrome y Firefox.

Ver reproducción mínima a continuación. Si lo prefieres, aquí tienes un Codepen: https://codepen.io/ChristianMay/pen/MWrmdzJ

 let dialog = document.querySelector('dialog') let closeButton = document.querySelector("#dialog-close"); closeButton.addEventListener('click', () => { dialog.close(); })
 dialog { display: grid; }
 <dialog class="dialog" open=""> Test </dialog> <button id="dialog-close">Close dialog</button>

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

El cuadro de diálogo se considera abierto (o mostrado) si el atributo open está presente.

Una vez que este atributo no está presente, el cuadro de diálogo se oculta. Supongo que configurar la pantalla en cuadrícula anula el estilo predeterminado para el diálogo, que debería ocultar el diálogo cada vez que se elimina la open . Podríamos restaurar este comportamiento agregando estilo al cuadro de diálogo sin atributo open .

 let dialog = document.querySelector('dialog') let closeButton = document.querySelector("#dialog-close"); closeButton.addEventListener('click', () => { dialog.close(); })
 dialog:not([open]){ display:none; } dialog{ display:grid; }
 <dialog class="dialog" open=""> Test </dialog> <button id="dialog-close">Close dialog</button>

about 4 years ago · Juan Pablo Isaza Report

0

Ya respondí , pero también podría mostrar <dialog> como una cuadrícula solo si es un diálogo abierto ;)

 dialog[open] { display: grid; }

https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors

El selector de atributos de CSS coincide con los elementos en función de la presencia o el valor de un atributo dado.

Fragmento de demostración con el selector de atributos CSS

 const dialog = document.querySelector('dialog') let closeButton = document.querySelector("#dialog-close"); closeButton.addEventListener('click', () => { dialog.removeAttribute("open"); }) let openButton = document.querySelector("#dialog-open"); openButton.addEventListener('click', () => { dialog.setAttribute("open", ""); })
 dialog[open] { display: grid; }
 <dialog class="dialog" open=""> Test </dialog> <button id="dialog-close">Close dialog</button> <button id="dialog-open">Open dialog</button>

tenedor de tu pluma

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!