Modale con il link stesso indice

0

Domanda

Ho creato un modale, in cui ho messo un href link alla sezione contatti, collocata alla fine della stessa index.html.

Quando clicco il contact me pulsante modale scompare e non sto scorrere fino alla sezione contatti (penso che ci sia un qualche tipo di inbuild scrolldown dopo la chiusura modale che rompe la mia href link).

Ho provato ad usare il metodo javascript dopo aver cliccato il pulsante, ma vi compaiono anche i problemi. Quando si utilizza window.location.reload e poi scrollintoview per #kontakt pagina ricarica bene, ma il scrollintoview non avvenire mai.

<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

Migliore risposta

1

Ha a che fare con il modo in cui listener di eventi, opere; genera solo una volta che si chiude il modale.

Quello che ho fatto è solo un hack con l'aggiunta di un timeout in modo che la chiusura di modale e di scorrimento per visualizzare non sparare allo stesso tempo

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

Esso scorre bene, ma lo sfondo scuro, senza possibilità di scegliere ancora esiste. <div class="modal-backdrop show"></div> questa classe per completare la parte superiore del corpo e blocchi di contenuto.
Simonsoft177

Non riesco a replicare il problema, si può provare ad aumentare il timeout a 1000ms e provare di nuovo
otejiri

Penso che il timeout non è il problema dal momento che la pagina non viene ricaricata. Il punto è che quando il modale è aperto tutto il background diventa unscrollable e oscurati. Quando si chiude il modale la possibilità di scorrere e muoversi sulla pagina indietro e lo sfondo scuro scomparire. Tuttavia questo non succede, solo possibilità di scorrere torna, ma con lo sfondo scuro e la disabilità per fare clic viene ancora visualizzato.
Simonsoft177

È possibile aggiungere javascript per eliminare un determinato div senza conoscere il suo id ? <div class="modal-backdrop show"></div> per essere esatti.
Simonsoft177

okay, è possibile rimuovere la "mostra" da classlist
otejiri

Grazie a voi che funziona. Ultima cosa, se ho più modali? Devo solo copiare e incollare nuovi ascoltatori o mettere tutto in uno?
Simonsoft177

Si può replicare che finchè hanno Id diversi
otejiri

In altre lingue

Questa pagina è in altre lingue

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