Bootstrap 3 and Youtube in Modal

后端 未结 18 1402
余生分开走
余生分开走 2020-12-07 07:05

I\'m trying to use the Modal feature from Bootstrap 3 to show my Youtube video. It works, but I can\'t click on any buttons in the Youtube video.

Any help on this?<

相关标签:
18条回答
  • 2020-12-07 07:25

    Here is another solution: Force HTML5 youtube video

    Just add ?html5=1 to the source attribute on the iframe, like this:

    <iframe src="http://www.youtube.com/embed/dP15zlyra3c?html5=1"></iframe>
    
    0 讨论(0)
  • 2020-12-07 07:25

    Ok. I found a solution.

                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal">
                            <span aria-hidden="true">&times;</span><span class="sr-only">Close</span>
                        </button>
                        <h3 class="modal-title" id="modal-login-label">Capital Get It</h3>
                        <p>Log in:</p>
                    </div>
    
                    <div class="modal-body">
    
                        <h4>Youtube stuff</h4>
    
    
    
                 <iframe src="//www.youtube.com/embed/lAU0yCDKWb4" allowfullscreen="" frameborder="0" height="315" width="100%"></iframe>       
                 </div>
    
    
                    </div>
    
                </div>
            </div>
        </div>
    
    0 讨论(0)
  • 2020-12-07 07:27

    Bootstrap does provide modal pop-up functionality out of the box.

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    
    <a class="btn btn-primary" data-toggle="modal" href="#modal-video"><i class="fa fa-play"></i> watch video</a>
    <div class="modal fade" id="modal-video" style="display: none;">
      <div class="modal-dialog">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">close <i class="fa fa-times"></i></button>
          </div>
          <div class="modal-body">
            <iframe type="text/html" width="640" height="360" src="//www.youtube.com/embed/GShZUiyqEH0?rel=0?wmode=transparent&amp;fs=1&amp;rel=0&amp;enablejsapi=1&amp;version=3" frameborder="0" allowfullscreen=""></iframe>
            <p>Your video</p>
          </div>
        </div>
      </div>
    </div>

    0 讨论(0)
  • 2020-12-07 07:34

    I found this problem (or the problem I found and described at https://github.com/twbs/bootstrap/issues/10489) related to CSS3 transformation (translation) on the .modal.fade .modal-dialog class.

    In bootstrap.css you will find the lines shown below:

    .modal.fade .modal-dialog {
      -webkit-transform: translate(0, -25%);
          -ms-transform: translate(0, -25%);
              transform: translate(0, -25%);
      -webkit-transition: -webkit-transform 0.3s ease-out;
         -moz-transition: -moz-transform 0.3s ease-out;
           -o-transition: -o-transform 0.3s ease-out;
              transition: transform 0.3s ease-out;
    }
    
    .modal.in .modal-dialog {
      -webkit-transform: translate(0, 0);
          -ms-transform: translate(0, 0);
              transform: translate(0, 0);
    }
    

    Replacing these lines with the following will show the movie correctly (in my case):

    .modal.fade .modal-dialog {
      -webkit-transition: -webkit-transform 0.3s ease-out;
         -moz-transition: -moz-transform 0.3s ease-out;
           -o-transition: -o-transform 0.3s ease-out;
              transition: transform 0.3s ease-out;
    }
    
    .modal.in .modal-dialog {
    
    }
    
    0 讨论(0)
  • 2020-12-07 07:34

    Found this in another thread, and it works great on desktop and mobile - which is something that didn't seem true with some of the other solutions. Add this script to the end of your page:

    <!--Script stops video from playing when modal is closed-->
    <script>
        $("#myModal").on('hidden.bs.modal', function (e) {
            $("#myModal iframe").attr("src", $("#myModal iframe").attr("src"));
        });
    </script>   
    
    0 讨论(0)
  • 2020-12-07 07:34

    Using LATEST Bootstrap 4.5+

    • Use the same modal repeatedly by passing different Youtube URL's from the HTML Page
    • With a great Play button icon and Autoplay enabled
    • Just COPY the code and you are all SET!!!
    • View solution in Codepen

        // javascript using jQuery - can embed in the script tag
    $(".video-link").click(function () {
      var theModal = $(this).data("target");
      videoSRC = $(this).attr("data-video");
      videoSRCauto = videoSRC + "?modestbranding=1&rel=0&showinfo=0&html5=1&autoplay=1";
      $(theModal + ' iframe').attr('src', videoSRCauto);
      $(theModal + ' button.close').click(function () {
        $(theModal + ' iframe').attr('src', videoSRC);
      });
    });
    #video-section .modal-content {
      min-width: 600px;
    }
    
    #video-section .modal-content iframe {
      width: 560px;
      height: 315px;
    }
    <!-- HTML with Bootstrap 4.5 and Fontawesome -->
    <html>
       <head>
          <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.13.1/css/all.css"
             integrity="sha384-xxzQGERXS00kBmZW/6qxqJPyxW3UR0BPsL4c8ILaIWXva5kFi7TxkIIaMiKtqV1Q" crossorigin="anonymous">
          <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
       </head>
    
       <body>
          <section id="video-section" class="py-5 text-center text-white">
             <div class="container h-100 d-flex justify-content-center">
                <div class="row align-self-center">
                   <div class="col">
                      <div class="card bg-dark border-0 mb-2 text-white">
                         <div class="card-body">
                            <a href="#" class="btn btn-primary bg-dark stretched-link video-link" data-video="https://www.youtube.com/embed/HnwsG9a5riA" data-toggle="modal" data-target="#video-modal">
                            <i class="fas fa-play fa-3x"></i>
                            </a>
                            <h1 class="card-title">Play Video</h1>
                         </div>
                      </div>
                   </div>
                </div>
             </div>
    
             <!-- Video Modal -->
             <div class="modal fade" id="video-modal" tabindex="-1" role="dialog">
                <div class="modal-dialog h-100 d-flex align-items-center">
                   <div class="modal-content">
                      <div class="modal-body">
                         <button type="button" class="close" data-dismiss="modal">
                         <span>&times;</span>
                         </button>
                         <iframe frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
                      </div>
                   </div>
                </div>
             </div>
          </section>
    
          <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
          <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
          <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
    
       </body>
    </html>

    
    
      [1]: https://codepen.io/richierich25/pen/yLOOYBL
    
    0 讨论(0)
提交回复
热议问题