Modal con enlace al mismo índice

0

Pregunta

He creado un modal en el que me han puesto un href enlace a una sección de contacto se coloca al final de la misma index.html.

Cuando hago clic en el contact me botón modal desaparece y no soy desplaza hacia abajo a la sección de contacto (creo que hay algún tipo de inbuild scrolldown después de cerrar el modal que rompe mi propia href enlace).

He intentado usar el método de javascript después de hacer clic en el botón, pero también aparecen los problemas. Cuando se utiliza window.location.reload y, a continuación, scrollintoview a #kontakt la página se vuelve a cargar muy bien, pero el scrollintoview nunca tome lugar.

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModalToggle">
  Launch demo modal
</button>



<div class="modal fade" id="exampleModalToggle" aria-hidden="true" aria-labelledby="exampleModalToggleLabel" tabindex="-1">
            <div class="modal-dialog modal-dialog-centered" style="width:50%;margin:auto">
              <div class="modal-content">
                <div class="modal-body">                
                  <img src="https://www.apacara.com/media/images/orange.jpg" class="d-block w-100"                                              style="width:100%;border-radius:4px;margin:auto">
                </div>
              </div>
              <div class="modal-footer" style="text-align: center;">
                  <button class="btn btn-primary" style="float:left" data-bs-target="#exampleModalToggle6" data-                             bs-toggle="modal" data-bs-dismiss="modal">Next</button>
                  <a class="btn-grad" href="#kontakt" style="cursor:pointer;font-weight:500!important" data-bs-                        toggle="modal" data-bs-dismiss="modal">Contact me</a>
                  <button class="btn btn-primary" style="float:right" data-bs-target="#exampleModalToggle2" data-                           bs-toggle="modal" data-bs-dismiss="modal">Previous</button>
              </div>
            </div>
        </div>

<div id="kontakt" style="margin-top:500px">Helo helo helo helo</div>

html hyperlink modal-dialog
2021-11-15 11:25:01
1

Mejor respuesta

1

Tiene que ver con el modo de escucha de eventos funciona; sólo se desencadena una vez que se cierre el modal.

Lo que hice es solo un hack mediante la adición de un tiempo de espera para el cierre de la modal y el desplazamiento a la vista de no disparar al mismo tiempo

const myModal = document.getElementById('exampleModalToggle');

myModal.addEventListener('hidden.bs.modal', function (event) {
setTimeout(function(){ 
   el = document.querySelector("#kontakt")
   el.scrollIntoView({behavior: 'smooth'}); 
   }, 10);
    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModalToggle">
  Launch demo modal
</button>



<div class="modal fade" id="exampleModalToggle" aria-hidden="true" aria-labelledby="exampleModalToggleLabel" tabindex="-1">
            <div class="modal-dialog modal-dialog-centered" style="width:50%;margin:auto">
              <div class="modal-content">
                <div class="modal-body">                
                  <img src="https://www.apacara.com/media/images/orange.jpg" class="d-block w-100"                                              style="width:100%;border-radius:4px;margin:auto">
                </div>
              </div>
              <div class="modal-footer" style="text-align: center;">
                  <button class="btn btn-primary" style="float:left" data-bs-target="#exampleModalToggle6" data-                             bs-toggle="modal" data-bs-dismiss="modal">Next</button>
                  <a class="btn-grad" href="#kontakt" style="cursor:pointer;font-weight:500!important" data-bs-                        toggle="modal" data-bs-dismiss="modal">Contact me</a>
                  <button class="btn btn-primary" style="float:right" data-bs-target="#exampleModalToggle2" data-                           bs-toggle="modal" data-bs-dismiss="modal">Previous</button>
              </div>
            </div>
        </div>

<div id="kontakt" style="margin-top:500px">Helo helo helo helo</div>

2021-11-15 12:10:57

Se desplaza hacia abajo muy bien, pero el fondo oscuro, sin capacidad para hacer clic todavía existe. <div class="modal-backdrop show"></div> esta clase se quedan en la parte superior del cuerpo y los bloques de contenido.
Simonsoft177

Yo no puedo reproducir el problema, puede intentar aumentar el tiempo de espera para 1000ms y vuelve a intentarlo
otejiri

Creo que el tiempo de espera no es el problema ya que la página no se recarga. El punto es que cuando el modal está abierto todo el fondo se hace unscrollable y oscuras de la salida. Cuando se cierra el modal de la capacidad para desplazarse y moverse en la página debe venir de atrás y el fondo oscuro desaparecer. Sin embargo esto no ocurre, sólo la habilidad para desplazarse viene de vuelta, pero el fondo oscuro y la discapacidad a haga clic en aparece.
Simonsoft177

Es posible añadir a javascript para eliminar un determinado div sin saber su id ? <div class="modal-backdrop show"></div> para ser más exactos.
Simonsoft177

bien puede quitar el "show" de classlist
otejiri

Gracias a que funciona. Última cosa, ¿si tengo varios verbos modales? Debo sólo tienes que copiar y pegar los nuevos oyentes o poner todo en uno?
Simonsoft177

Se puede replicar que el tiempo que tienen diferentes números de identificación
otejiri

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................