Modal avec un lien pour les mêmes index

0

La question

J'ai créé un modal dans lequel j'ai placé un href lien vers une section de contact placé à la fin de la même index.html.

Quand je clique sur le contact me bouton modal disparaît et je ne suis pas défiler jusqu'à la section de contact (je pense qu'il y a une sorte de inbuild déroulant après la fermeture de l'modal qui brise mon propre href lien).

J'ai essayé à l'aide de javascript méthode après avoir cliqué sur le bouton, mais il y a également des problèmes. Lors de l'utilisation de window.location.reload et puis scrollintoview pour #kontakt page recharge très bien, mais la scrollintoview ne jamais prendre de place.

<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

La meilleure réponse

1

Il a à voir avec la façon dont écouteur d'événement œuvres; il ne se déclenche même temps qui est de fermer la modale.

Ce que j'ai fait est juste un hack par l'ajout d'un délai d'attente de sorte que la fermeture du modal et de défilement pour afficher n'est pas le feu en même temps

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

Il fait défiler très bien, mais le fond sombre, sans possibilité de cliquer existe toujours. <div class="modal-backdrop show"></div> cette classe est en restant sur le dessus du corps et des blocs de contenu.
Simonsoft177

Je ne peux pas reproduire le problème, vous pouvez essayer d'augmenter le délai d'attente à 1000ms et essayez à nouveau
otejiri

Je pense que le délai d'attente n'est pas la question puisque la page n'est pas rechargée. Le point est que lorsque le modal est ouvert toute l'arrière-plan devient unscrollable et grisées. Lorsque vous fermer la modale de la possibilité de faire défiler et de se déplacer sur la page d'accueil devrait revenir et le fond sombre disparaître. Cependant, il ne marche pas passé, seule la possibilité de faire défiler revient mais le fond sombre et le handicap de cliquer apparaît toujours.
Simonsoft177

Est-il possible d'ajouter à javascript pour supprimer un spécifique div sans connaître son identité ? <div class="modal-backdrop show"></div> pour être exact.
Simonsoft177

ok, vous pouvez supprimer le "show" de classlist
otejiri

Merci cela fonctionne. Dernière chose, comment faire si j'ai plusieurs auxiliaires modaux? Dois-je simplement copier et coller de nouveaux auditeurs ou de tout mettre dans un seul?
Simonsoft177

Vous pouvez répliquer que tant qu'ils ont de différents IDs
otejiri

Dans d'autres langues

Cette page est dans d'autres langues

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