2016-04-18 4 views
0

私はcodepenユーザーFabio Ottavianiが基本的な機能を持ち、ブートストラップモードにすることで、UI appを組み込みようとしています。それがモーダルから削除された場合、それはうまく動作しますが、モーダルに配置されると、最初に動作し、リセットされた後にブレークします。 UIがリセットされると、コーサーはポインタ/手になることさえありません。ブートストラップモードでネストされたときにUIアプリケーションが動作しないのはなぜですか?

var $play = $('.play'), 
 
    $detail = $('.detail'), 
 
    $movie = $('.movie', $detail), 
 
    $close = $('.close'); 
 

 
$('.movies .movie').click(function(){ 
 
    $movie.html($(this).html()); 
 
    $play.appendTo($movie); 
 

 
    $poster = $('.poster', this).addClass('active'); 
 

 
    $('.poster', $detail).css({ 
 
    top: $poster.position().top, 
 
    left: $poster.position().left, 
 
    width: $poster.width(), 
 
    height: $poster.height() 
 
    }).data({ 
 
    top: $poster.position().top, 
 
    left: $poster.position().left, 
 
    width: $poster.width(), 
 
    height: $poster.height() 
 
    }) 
 

 
    $detail.show(); 
 

 
    $('.poster', $detail).delay(10).queue(function(next) { 
 
    $detail.addClass('ready'); 
 

 
    next(); 
 
    }).delay(100).queue(function(next){ 
 
    $(this).css({ 
 
     top: '-10%', 
 
     left: '-6%', 
 
     width: 266, 
 
     height: 400 
 
    }); 
 
    next(); 
 
    }) 
 
}) 
 

 

 
/*-------------------- 
 
Close 
 
--------------------*/ 
 
function close(){ 
 
    console.log('asd'); 
 
    $p = $('.detail .poster'); 
 
    console.log($p) 
 
    $p.css({ 
 
    top: $p.data('top'), 
 
    left: $p.data('left'), 
 
    width: $p.data('width'), 
 
    height: $p.data('height'), 
 
    }) 
 
    $detail.removeClass('ready').delay(500).queue(function(next){ 
 
    $(this).hide(); 
 
    $poster.removeClass('active'); 
 
    next(); 
 
    }); 
 
} 
 

 
$close.click(close); 
 
$('body').click(function(e){ 
 
    $p = $(e.target).parents(); 
 
    if ($p.is('.app')){ 
 
    return false; 
 
    } else { 
 
    close(); 
 
    } 
 
})
/***********reset.css************/ 
 
div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,svg,symbol,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,output,ruby,section,summary,time,mark,audio,video { 
 
    margin:0; 
 
    padding:0; 
 
    border:0; 
 
    font-size:100%; 
 
    font:inherit; 
 
    vertical-align:baseline; 
 
} 
 
article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{ 
 
    display:block; 
 
} 
 
body {line-height:1; 
 
} 
 
ol,ul { 
 
    list-style:none 
 
} 
 
blockquote,q{ 
 
    quotes:none; 
 
} 
 
blockquote:before,blockquote:after,q:before,q:after{ 
 
    content:''; content:none; 
 
} 
 
table{ 
 
    border-collapse:collapse; 
 
    border-spacing:0; 
 
} 
 

 

 
/************style.css************/ 
 
/*-------------------- 
 
App 
 
--------------------*/ 
 

 
.app h2 { 
 
    color: #525661; 
 
    font-size: 17px; 
 
    box-shadow: inset 0 1px 0px rgba(0, 0, 0, 0.1); 
 
    padding: 20px 28px 0; 
 
    margin: -6px 0 0 0; 
 
} 
 

 
/*-------------------- 
 
Movies 
 
--------------------*/ 
 
.movies { 
 
    display: -webkit-box; 
 
    display: -webkit-flex; 
 
    display: -ms-flexbox; 
 
    display: flex; 
 
    padding: 8px 18px; 
 
} 
 
.movies .movie { 
 
    padding: 10px; 
 
    cursor: pointer; 
 
} 
 
.movies .movie .poster { 
 
    width: 100%; 
 
    margin-bottom: 6px; 
 
    border-radius: 4px; 
 
} 
 
.movies .movie .poster.active { 
 
    opacity: 0; 
 
} 
 
.movies .movie .title { 
 
    color: #525661; 
 
    margin-bottom: 4px; 
 
    font-size: 16px; 
 
} 
 
.movies .movie .info { 
 
    font-size: 11px; 
 
    opacity: .8; 
 
} 
 
.movies .movie .desc { 
 
    display: none; 
 
} 
 

 
/*-------------------- 
 
Detail 
 
--------------------*/ 
 
.detail { 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
    z-index: 10; 
 
    padding: 37px 30px 30px 255px; 
 
    display: none; 
 
} 
 
.detail::before { 
 
    content: ''; 
 
    background: #fff; 
 
    position: absolute; 
 
    z-index: -1; 
 
    top: 0; 
 
    left: 0; 
 
    width: 100%; 
 
    height: 100%; 
 
    border-radius: 15px; 
 
    opacity: 0; 
 
    -webkit-transition: all 0.4s cubic-bezier(0.67, 0.13, 0.1, 0.81); 
 
    transition: all 0.4s cubic-bezier(0.67, 0.13, 0.1, 0.81); 
 
} 
 
.detail .close { 
 
    position: absolute; 
 
    top: 21px; 
 
    right: 22px; 
 
    width: 12px; 
 
    height: 12px; 
 
    cursor: pointer; 
 
    border: 6px solid #FFF; 
 
    box-sizing: content-box; 
 
    z-index: 10; 
 
} 
 
.detail .poster { 
 
    position: absolute; 
 
    z-index: 2; 
 
    top: -10%; 
 
    left: -6%; 
 
    height: 100%; 
 
    border-radius: 5px; 
 
    box-shadow: 0 5px 30px rgba(0, 0, 0, 0.2); 
 
    -webkit-transition: all 0.5s cubic-bezier(0.67, 0.13, 0.1, 0.81); 
 
    transition: all 0.5s cubic-bezier(0.67, 0.13, 0.1, 0.81); 
 
} 
 
.detail .title, 
 
.detail .info, 
 
.detail .desc, 
 
.detail .play, 
 
.detail .close { 
 
    -webkit-transform: translateX(-50px); 
 
      transform: translateX(-50px); 
 
    opacity: 0; 
 
    -webkit-transition: all 0.4s cubic-bezier(0.67, 0.13, 0.1, 0.81); 
 
    transition: all 0.4s cubic-bezier(0.67, 0.13, 0.1, 0.81); 
 
} 
 
.detail .close { 
 
    -webkit-transform: translateX(10px); 
 
      transform: translateX(10px); 
 
} 
 
.detail .title { 
 
    font-size: 35px; 
 
    font-weight: 300; 
 
    color: #525661; 
 
    margin-bottom: 5px; 
 
} 
 
.detail .info { 
 
    font-size: 11px; 
 
    opacity: 0; 
 
    margin-left: 2px; 
 
} 
 
.detail .desc { 
 
    margin-top: 30px; 
 
    font-size: 14px; 
 
    line-height: 1.6; 
 
} 
 
.detail .play { 
 
    background: -webkit-linear-gradient(0deg, #E4761F, #FF8B32); 
 
    background: linear-gradient(90deg, #E4761F, #FF8B32); 
 
    border: none; 
 
    border-radius: 20px; 
 
    color: #fff; 
 
    font-size: 12px; 
 
    line-height: 1.5; 
 
    padding: 8px 17px; 
 
    margin: 30px 0 0 -2px; 
 
    text-transform: uppercase; 
 
    z-index: 10; 
 
    outline: none !important; 
 
    cursor: pointer; 
 
    opacity: 0; 
 
} 
 
.detail .play svg { 
 
    vertical-align: middle; 
 
    position: relative; 
 
    top: -2px; 
 
    margin-right: 3px; 
 
} 
 

 
.detail.ready::before { 
 
    opacity: 1; 
 
} 
 
.detail.ready .info { 
 
    opacity: .8; 
 
} 
 
.detail.ready .poster { 
 
    opacity: 1; 
 
    -webkit-transition-duration: .5s; 
 
      transition-duration: .5s; 
 
} 
 
.detail.ready .title, 
 
.detail.ready .info, 
 
.detail.ready .desc, 
 
.detail.ready .play, 
 
.detail.ready .close { 
 
    -webkit-transform: translateX(0); 
 
      transform: translateX(0); 
 
    opacity: 1; 
 
    -webkit-transition-delay: 0s; 
 
      transition-delay: 0s; 
 
    -webkit-transition-duration: .5s; 
 
      transition-duration: .5s; 
 
} 
 
.detail.ready .title { 
 
    -webkit-transition-delay: .2s; 
 
      transition-delay: .2s; 
 
} 
 
.detail.ready .info { 
 
    -webkit-transition-delay: .3s; 
 
      transition-delay: .3s; 
 
} 
 
.detail.ready .desc { 
 
    -webkit-transition-delay: .4s; 
 
      transition-delay: .4s; 
 
} 
 
.detail.ready .play { 
 
    -webkit-transition-delay: .5s; 
 
      transition-delay: .5s; 
 
}
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <meta charset="UTF-8"> 
 
    <title>Portfolio</title> 
 
    <!--modal--> 
 
    <script src="http://s.codepen.io/assets/libs/modernizr.js" type="text/javascript"></script> 
 

 

 
    <link rel="stylesheet prefetch" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css"> 
 

 
    <style> 
 
     /* NOTE: The styles were added inline because Prefixfree needs access to the styles and they must be inlined if they are on local disk! */ 
 
     
 
     .modal-open body { 
 
      -webkit-filter: blur(1px); 
 
      -moz-filter: blur(1px); 
 
      filter: blur(1px); 
 
     } 
 
     
 
     .modal-dialog .modal-content { 
 
      border-radius: 0; 
 
      box-shadow: none; 
 
      background-color: rgba(255, 255, 255, 0.9); 
 
      padding-left: 30px; 
 
      padding-right: 30px; 
 
     } 
 
     
 
     .modal-backdrop { 
 
      background-color: rgba(255, 255, 255, 0.6); 
 
     } 
 
     
 
     .columns { 
 
      column-count: 3; 
 
      column-gap: 20px; 
 
     } 
 
     
 
     img { 
 
      width: 100%; 
 
      cursor: pointer; 
 
     } 
 
    </style> 
 

 

 
    <script src="js/prefixfree.min.js"></script> 
 

 
    <link rel="stylesheet" href="css/reset.css"> 
 

 
    <link rel="stylesheet prefetch" href="https://fonts.googleapis.com/css?family=Roboto:100,300,400"> 
 

 
    <link rel="stylesheet" href="css/style.css"> 
 

 

 

 

 
</head> 
 

 
<body> 
 
    <a href="#" data-toggle="modal" data-target="#modal">Open Modal</a> 
 
    <div class="modal fade" id="modal"> 
 
     <div class="modal-dialog"> 
 
      <div class="modal-content"> 
 
       <div class="modal-body"> 
 
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
 
        <div class="app"> 
 

 
         <legend>Most Popular Movies</legend> 
 
         <section class="movies"> 
 
          <div class="movie"> 
 
           <img src="http://movium.io/data/posters/eqFckcHuFCT1FrzLOAvXBb4jHwq.jpg" alt="" class="poster" /> 
 
           <div class="title">Room</div> 
 
           <div class="info"> 
 
            <span class="length">117 min</span> 
 
            <span class="year">2015</span> 
 
           </div> 
 
           <div class="desc"> 
 
            Jack is a young boy of 5 years old who has lived all his life in one room. He believes everything within it are the only real things in the world. But what will happen when his Ma suddenly tells him that there are other things outside of Room? 
 
           </div> 
 
          </div> 
 
          <div class="movie"> 
 
           <img src="http://movium.io/data/posters/lIv1QinFqz4dlp5U4lQ6HaiskOZ.jpg" alt="" class="poster" /> 
 
           <div class="title">Whiplash</div> 
 
           <div class="info"> 
 
            <span class="length">167 min</span> 
 
            <span class="year">2015</span> 
 
           </div> 
 
           <div class="desc"> 
 
            Under the direction of a ruthless instructor, a talented young drummer begins to pursue perfection at any cost, even his humanity. 
 
           </div> 
 
          </div> 
 
          <div class="movie"> 
 
           <img src="http://movium.io/data/posters/kqjL17yufvn9OVLyXYpvtyrFfak.jpg" alt="" class="poster" /> 
 
           <div class="title">Mad Max</div> 
 
           <div class="info"> 
 
            <span class="length">120 min</span> 
 
            <span class="year">2015</span> 
 
           </div> 
 
           <div class="desc"> 
 
            An apocalyptic story set in the furthest reaches of our planet, in a stark desert landscape where humanity is broken, and most everyone is crazed fighting for the necessities of life. Within this world exist two rebels on the run who just might be able to restore order. There's Max, a man of action and a man of few words, who seeks peace of mind following the loss of his wife and child in the aftermath of the chaos. 
 
           </div> 
 
          </div> 
 
          <div class="movie"> 
 
           <img src="http://movium.io/data/posters/5W794ugjRwYx6IdFp1bXJqqMWRg.jpg" alt="" class="poster" /> 
 
           <div class="title">The Revenant</div> 
 
           <div class="info"> 
 
            <span class="length">156 min</span> 
 
            <span class="year">2015</span> 
 
           </div> 
 
           <div class="desc"> 
 
            In the 1820s, a frontiersman, Hugh Glass, sets out on a path of vengeance against those who left him for dead after a bear mauling. 
 
           </div> 
 
          </div> 
 
         </section> 
 
         <div class="detail"> 
 
          <svg class="close"> 
 
           <use xlink:href="#close"></use> 
 
          </svg> 
 
          <div class="movie"> 
 

 
           <img src="http://movium.io/data/posters/eqFckcHuFCT1FrzLOAvXBb4jHwq.jpg" alt="" class="poster" /> 
 
           <div class="title">Room</div> 
 
           <div class="info"> 
 
            <span class="length">117 min</span> 
 
            <span class="year">2015</span> 
 
           </div> 
 
           <div class="desc"> 
 
            Jack is a young boy of 5 years old who has lived all his life in one room. He believes everything within it are the only real things in the world. But what will happen when his Ma suddenly tells him that there are other things outside of Room? 
 
           </div> 
 

 
           <button class="play"> 
 
            <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Capa_1" x="0px" y="0px" viewbox="0 0 232.153 232.153" style="enable-background:new 0 0 232.153 232.153;" xml:space="preserve" width="10px" height="10px"> 
 
             <g id="Play"> 
 
              <path style="fill-rule:evenodd;clip-rule:evenodd;" d="M203.791,99.628L49.307,2.294c-4.567-2.719-10.238-2.266-14.521-2.266 c-17.132,0-17.056,13.227-17.056,16.578v198.94c0,2.833-0.075,16.579,17.056,16.579c4.283,0,9.955,0.451,14.521-2.267 l154.483-97.333c12.68-7.545,10.489-16.449,10.489-16.449S216.471,107.172,203.791,99.628z" fill="#FFFFFF" /> 
 
             </g> 
 
            </svg> play movie 
 
           </button> 
 

 

 

 
          </div> 
 
         </div> 
 
        </div> 
 

 
       </div> 
 
      </div> 
 
      <!-- /.modal-content --> 
 
     </div> 
 
     <!-- /.modal-dialog --> 
 
    </div> 
 
    <!-- /.modal --> 
 

 

 

 

 
    <!-- Icons --> 
 
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none;"> 
 
     <symbol id="close" viewbox="0 0 212.982 212.982"> 
 
      <g> 
 
       <path style="fill-rule:evenodd;clip-rule:evenodd;" d="M131.804,106.491l75.936-75.936c6.99-6.99,6.99-18.323,0-25.312 c-6.99-6.99-18.322-6.99-25.312,0l-75.937,75.937L30.554,5.242c-6.99-6.99-18.322-6.99-25.312,0c-6.989,6.99-6.989,18.323,0,25.312 l75.937,75.936L5.242,182.427c-6.989,6.99-6.989,18.323,0,25.312c6.99,6.99,18.322,6.99,25.312,0l75.937-75.937l75.937,75.937 c6.989,6.99,18.322,6.99,25.312,0c6.99-6.99,6.99-18.322,0-25.312L131.804,106.491z" fill="#525661" /> 
 
      </g> 
 
     </symbol> 
 
     <symbol id="ico-search"> 
 
      <path fill-rule="evenodd" clip-rule="evenodd" fill="#363a47" d="M14.769,14.769c-0.342,0.342-0.896,0.342-1.237,0l-3.756-3.756 
 
                    c-2.399,1.793-5.801,1.623-7.981-0.557c-2.392-2.392-2.392-6.271,0-8.663s6.271-2.392,8.662,0c2.18,2.181,2.35,5.583,0.557,7.981 
 
                    l3.756,3.756C15.11,13.873,15.11,14.427,14.769,14.769z M9.219,3.032c-1.709-1.709-4.479-1.709-6.188,0 
 
                    c-1.708,1.708-1.708,4.479,0,6.188c1.709,1.708,4.479,1.708,6.188,0C10.927,7.51,10.927,4.74,9.219,3.032z" /> 
 
     </symbol> 
 
    </svg> 
 
    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script> 
 

 
    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 

 
    <script src="http://netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js"></script> 
 
    <script src="js/index.js"></script> 
 

 

 

 

 
</body> 
 

 
</html>

答えて

1

あなたはスコープの問題を持っています。アプリのためのコンソールログを見ると、私は

$poster is undefined

誤りに気づく私が見るあなたのコードを見ているときに$ポスターは何かに設定されているが、$('.movies .movie')クリック機能にスコープされます。その機能を使用する必要がある機能の外にあるものは、それが何であるかを知りません。

これに対する修正は、私が実際に `$のポスター= $を定義する必要がありましたが、これは私の問題を解決し、トップ

var $play = $('.play'), $detail = $('.detail'), $movie = $('.movie', $detail), $close = $('.close'), $poster;

+0

であなたのグローバル変数へ$posterを追加することになります(「ポスター」)'にそれを働かせる。私は実際に、後でエラーのコンソールログを見ていないことに気付きました。それは別の方法で働いたので、私はそれが良かったと思うと思う。 –

関連する問題