2016-03-29 22 views
0

私はカードで公開したコンテンツをいくつかの方法でマウスオーバーして開こうとしましたが、いずれも機能しませんでした。下のスニペットで、自分のコードの実際の例を示します。公開カードで公開しているコンテンツを公開しました

<!-- Compiled and minified CSS --> 
 
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.5/css/materialize.min.css"> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css"> 
 

 

 
    <div class="card"> 
 
     <div class="card-image waves-effect waves-block waves-light"> 
 
     <img class="activator" src="https://s19.postimg.org/rs95dw3b7/beautiful-flower-pictures-and-wallpapers-2.jpg"> 
 
     </div> 
 

 
     <!-- card text content --> 
 
     <div class="card-content"> 
 
     <span class="card-title activator"> 
 
     <p>Name of the listing</p> 
 
    </span> 
 
     <p>$10.00</p> 
 
     <div class="card-content"> 
 
      <a href="#" class="waves-effect waves-light btn right bottom">view item</a> 
 
     </div> 
 
     </div> 
 

 
     <!-- card reveal content --> 
 
     <div class="card-reveal"> 
 
     <span class="card-title"> 
 
     <i class="fa fa-times right"></i> 
 
     <div>Name</div> 
 
    </span> 
 
     <p>this is the data in the card reveal content</p> 
 
     <div> 
 
      <a href="#" class="waves-effect waves-light btn right bottom">view</a> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    
 
<!-- Compiled and minified JavaScript --> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-beta1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.5/js/materialize.min.js"></script>

+0

あなたはこのhttp://codeply.com/go/SKBlBBLMQWような何かを行うことができますが、 'activator'は小さな要素ではない画像全体である必要があり、それ以外の場合は、意志常にカードリールを開けてください – ZimSystem

+0

本当に嬉しいことですか?実際に必要なのはホバー上です**カードデーラー**マウスを取り外す際に再び明らかになったコンテンツ**カードの公開**もう一度閉じる必要があります(マウスアウト) –

+0

これを行う角度の方法はありますか? – GMan

答えて

1

これは実用的なソリューションよりもハックの多くのように見えるかもしれないが、それは仕事が行われます!

$(".card").mouseenter(function(e){ 
    if ($(this).find('> .card-reveal').length) { 
     if ($(e.target).is($('.card .activator')) || $(e.target).is($('.card .activator i'))) { 
      // Make Reveal animate up 
      $(this).find('.card-reveal').css({ display: 'block'}).velocity("stop", false).velocity(
       {translateY: '-100%'}, 
       { 
        duration: 300, 
        queue: false, 
        easing: 'easeInOutQuad' 
       }); 
     } 
    } 

    $('.card-reveal').closest('.card').css('overflow', 'hidden'); 

}); 

$(".card").mouseleave(function(){ 
    // Make Reveal animate down and display none 
    $(this).find('.card-reveal').velocity(
     {translateY: 0}, 
     { 
      duration: 225, 
      queue: false, 
      easing: 'easeInOutQuad', 
      complete: function() { 
       $(this).css({ display: 'none'}); 
      } 
     }); 
}); 

codepenを参照すると、より良い考えを得ることができます。

+0

ここであなたのコードでは、カードを公開するセクションは、閉じるボタンをクリックしたときのようにスライドするのではなく、ただ消えてしまいます。カード公開セクションをマウスオーバーすると、カード公開セクションをスライドさせて、カード公開セクションの上に初めてスライドすることは可能ですか?事前に感謝 –

+0

はい@ Kuladeepsony。それを指摘していただきありがとうございます。そして、私はそれを最初の場所で処理していたはずですが、謝罪します。私はjQueryを修正し、適切な答えでcodepenリンクを更新しました。あなたがそれをチェックアウトして、それがあなたが望んでいたかどうかがわかるなら、 – pratiks

3

私はこれを自分自身で行う方法を探していましたが、以下の結論に達しました。上にマウスを置くと、マテリアライズCSSから画像カードが開き、カードを離れると閉じます。私はこれが誰かを助け、この質問に簡潔に答えなければならないことを願っています。

$(function() { 
    $('.card').hover(
     function() { 
      $(this).find('> .card-image > img.activator').click(); 
     }, function() { 
      $(this).find('> .card-reveal > .card-title').click(); 
     } 
    ); 
}); 
+0

あなたは最高です! – rupinderjeet

+0

これは答えになるはずです - 簡潔で、仕事には – GMan

+0

があります。 QuerySelectorまたはQuerySelectorAllを使用して – GMan

1

または、CSSまたはSASSを使用できます。

ここでSASSの抜粋です:

.card { 
    overflow-y: hidden; 

    .card-image { 
    & ~ .card-reveal { 
     display: block; 
     transform: translateY(0%); 
     pointer-events: none; 
     transition: transform 0.3s; 
    } 

    &:active, 
    &:hover { 
     & ~ .card-reveal { 
     display: block; 
     transform: translateY(calc(-100% - 1px)); 
     } 
    } 
    } 
} 
関連する問題