2017-03-10 1 views
0

codepen에서 찾은 코드를 사용하여 필터링 된 포트폴리오를 설정하려고합니다. 코드를 구현할 수 있었지만 javascript 함수에 호버 효과를 적용하기 위해 추가 코드를 추가하는 데 실패했습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 다음은 예입니다 https://codepen.io/creotip/pen/dfjeF필터링 된 포트폴리오에 추가 div 추가

$(function() { 
    var selectedClass = ""; 
    $(".btn").click(function() { 
     selectedClass = $(this).attr("data-rel"); 
     $("#portfolio").fadeTo(100, 0.1); 
     $("#portfolio div").not("." + selectedClass).fadeOut().removeClass('scale-anm'); 
     setTimeout(function() { 
      $("." + selectedClass).fadeIn().addClass('scale-anm'); 
      $("#portfolio").fadeTo(300, 1); 
     }, 300); 
    }); 
}); 

나는 자바 스크립트 코드로이 div의 (오버레이 및 텍스트)를 적용 싶지만 방법을 모른다 :

<div id="portfolio"> 
    <div class="tile scale-anm web all"> 
     <img src="{image:Post1}" width="100%"/> 
     <div class="overlay"> 
      <div class="text"> 
       Hello World <i class="fa fa-arrow-right" aria-hidden="true"></i> 
      </div> 
     </div> 
    </div> 

[...] 
</div> 
+0

동적 부하에 오버레이 블록을 삽입 할 또는 타일 블록을 가져 가면 오버레이 블록의 슬라이드 효과를 만들고 싶어 ? 이 펜을 보시오. https://codepen.io/anon/pen/KWWLLO - 이것은 당신이 기대하는 것입니까? –

+0

스택 오버플로에 오신 것을 환영합니다! 제 3 자 사이트뿐만 아니라 질문 자체에있는 모든 관련 코드를 [mcve]에 입력하십시오. –

답변

0

당신은 단지이 작업을 수행 할 수 있습니다 CSS는 .tile div의 마크 업에 .overlay을 추가하고 기본적으로 오버레이를 숨기고 CSS에 .tile:hover .overlay으로 표시되도록 트리거합니다.

예를 들어 포트폴리오의 첫 번째 이미지에 오버레이를 추가했습니다.

$(function() { 
 
    var selectedClass = ""; 
 
    $(".fil-cat").click(function() { 
 
    selectedClass = $(this).attr("data-rel"); 
 
    $("#portfolio").fadeTo(100, 0.1); 
 
    $(".tile").not("." + selectedClass).fadeOut().removeClass('scale-anm'); 
 
    setTimeout(function() { 
 
     $("." + selectedClass).fadeIn().addClass('scale-anm'); 
 
     $("#portfolio").fadeTo(300, 1); 
 
    }, 300); 
 

 
    }); 
 
});
body { 
 
    max-width: 900px; 
 
    float: none; 
 
    margin: auto; 
 
} 
 

 
#portfolio { 
 
    margin: 1rem 0; 
 
    -webkit-column-count: 3; 
 
    -moz-column-count: 3; 
 
    column-count: 3; 
 
    -webkit-column-gap: 1rem; 
 
    -moz-column-gap: 1rem; 
 
    column-gap: 1rem; 
 
    -webkit-column-width: 33.33333333333333%; 
 
    -moz-column-width: 33.33333333333333%; 
 
    column-width: 33.33333333333333%; 
 
} 
 

 
.tile { 
 
    -webkit-transform: scale(0); 
 
    transform: scale(0); 
 
    -webkit-transition: all 350ms ease; 
 
    transition: all 350ms ease; 
 
} 
 

 
.tile:hover {} 
 

 
.scale-anm { 
 
    transform: scale(1); 
 
} 
 

 
p { 
 
    padding: 10px; 
 
    border-bottom: 1px #ccc dotted; 
 
    text-decoration: none; 
 
    font-family: lato; 
 
    text-transform: uppercase; 
 
    font-size: 12px; 
 
    color: #333; 
 
    display: block; 
 
    float: left; 
 
} 
 

 
p:hover { 
 
    cursor: pointer; 
 
    background: #333; 
 
    color: #eee; 
 
} 
 

 
.tile img { 
 
    max-width: 100%; 
 
    width: 100%; 
 
    height: auto; 
 
    margin-bottom: 1rem; 
 
} 
 

 
.btn { 
 
    font-family: Lato; 
 
    font-size: 1rem; 
 
    font-weight: normal; 
 
    text-decoration: none; 
 
    cursor: pointer; 
 
    display: inline-block; 
 
    line-height: normal; 
 
    padding: .5rem 1rem; 
 
    margin: 0; 
 
    height: auto; 
 
    border: 1px solid; 
 
    vertical-align: middle; 
 
    -webkit-appearance: none; 
 
    color: #555; 
 
    background-color: rgba(0, 0, 0, 0); 
 
} 
 

 
.btn:hover { 
 
    text-decoration: none; 
 
} 
 

 
.btn:focus { 
 
    outline: none; 
 
    border-color: var(--darken-2); 
 
    box-shadow: 0 0 0 3px var(--darken-3); 
 
} 
 

 
::-moz-focus-inner { 
 
    border: 0; 
 
    padding: 0; 
 
} 
 

 
.overlay { 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    right: 0; 
 
    bottom: 0; 
 
    background: rgba(0, 0, 0, 0.8); 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: center; 
 
    color: #fff; 
 
    opacity: 0; 
 
    transition: opacity .5s; 
 
} 
 

 
.tile:hover .overlay { 
 
    opacity: 1; 
 
}
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
 
<link href="https://npmcdn.com/[email protected]/css/basscss.min.css" rel="stylesheet"/> 
 
<div class="toolbar mb2 mt2"> 
 
    <button class="btn fil-cat" href="" data-rel="all">All</button> 
 
    <button class="btn fil-cat" data-rel="web">Websites</button> 
 
    <button class="btn fil-cat" data-rel="flyers">Flyers</button> 
 
    <button class="btn fil-cat" data-rel="bcards">Business Cards</button> 
 
</div> 
 

 
<div style="clear:both;"></div> 
 
<div id="portfolio"> 
 
    <div class="tile scale-anm web all"> 
 
    <img src="http://demo.themerain.com/charm/wp-content/uploads/2015/04/2-mon_1092-300x234.jpg" alt="" /> 
 
    <div class="overlay"> 
 
      <div class="text"> 
 
       Hello World <i class="fa fa-arrow-right" aria-hidden="true"></i> 
 
      </div> 
 
     </div> 
 
    </div> 
 
    <div class="tile scale-anm bcards all"> 
 
    <img src="http://demo.themerain.com/charm/wp-content/uploads/2015/04/jti-icons_08-300x172.jpg" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm web all"> 
 
    <img src="http://demo.themerain.com/charm/wp-content/uploads/2015/04/emi_haze-300x201.jpg" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm web all"> 
 
    <img src="http://demo.themerain.com/charm/wp-content/uploads/2015/04/codystretch-300x270.jpg" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm flyers all"> 
 
    <img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97190&w=350&h=190" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm bcards all"> 
 
    <img src="https://placeholdit.imgix.net/~text?txtsize=19&txt=200%C3%97290&w=200&h=290" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm flyers all"> 
 
    <img src="http://demo.themerain.com/charm/wp-content/uploads/2015/04/jti-icons_08-300x172.jpg" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm flyers all"> 
 
    <img src="http://demo.themerain.com/charm/wp-content/uploads/2015/04/transmission_01-300x300.jpg" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm web all"> 
 
    <img src="https://placeholdit.imgix.net/~text?txtsize=19&txt=200%C3%97290&w=200&h=290" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm flyers all"> 
 
    <img src="https://placeholdit.imgix.net/~text?txtsize=19&txt=200%C3%97290&w=200&h=290" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm web all"> 
 
    <img src="http://demo.themerain.com/charm/wp-content/uploads/2015/04/the-ninetys-brand_02-300x300.jpg" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm bcards all"> 
 
    <img src="http://demo.themerain.com/charm/wp-content/uploads/2015/04/15-dia_1092-1-300x300.jpg" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm web all"> 
 
    <img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97190&w=350&h=190" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm bcards all"> 
 
    <img src="http://demo.themerain.com/charm/wp-content/uploads/2015/04/emi_haze-300x201.jpg" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm web all"> 
 
    <img src="http://demo.themerain.com/charm/wp-content/uploads/2015/04/transmission_01-300x300.jpg" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm web all"> 
 
    <img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97190&w=350&h=190" alt="" /> 
 
    </div> 
 
    <div class="tile scale-anm bcards all"> 
 
    <img src="https://placeholdit.imgix.net/~text?txtsize=19&txt=200%C3%97290&w=200&h=290" alt="" /> 
 
    </div> 
 
</div> 
 

 
<div style="clear:both;"></div>

+0

나는이 방법으로 구현했지만 포트폴리오 범주를 선택할 때 자바 스크립트 코드를 사용하면 오버레이가 더 이상 표시되지 않습니다. – blandz

+0

@blandz 아. javascript에서 $ ("# portfolio div")를 변경하지 않았습니다. ("."+ "selected tile"). "+"selectedClass) .fadeOut(). removeClass ('scale-anm'); 이제 어때? –

+0

효과가있었습니다! 도와 주셔서 정말 감사합니다! – blandz