2017-08-25 9 views
0

このコードは、カスタムシャドウのサイズをイメージの高さに合わせて大きくするという点で優れています。しかし、ページ上の異なるサイズの画像に適用すると、すべての画像を最初の画像サイズにリサイズします。もっと具体的にするにはどうすればいいですか?構文のブランキング。jqueryのこのオブジェクトだけにCSSの変更を適用する方法

<li class="col third impact-home">   
     <div class="image-with-overlay"> 
     <%= image_tag 'impact.jpg', :class => "image-with-shadow" %> 
     <div class="image-shadow"></div> 
     </div> 
    </li> 

$(document).ready(function() { //Fires when DOM is loaded 
    getImageSizes(); 
    $(window).resize(function() { //Fires when window is resized 
     getImageSizes(); 
    }); 
}); 

function getImageSizes() { 
    var imgHeight = $(".image-with-shadow").height(); 
    var imgMargin = (- imgHeight) * .995; 
    console.log(imgMargin); 
    $(".image-shadow").css({"height": imgHeight}); 
    $(".image-shadow").css({"margin-top": imgMargin}); 
} 
+0

のようになりますあなたは($ '内のオブジェクトの配列から第一のオブジェクトのパラメータのサイズを取得していることを知っている願っています".image-with-shadow") '。簡単にするには、ループで追加してください。これは必要に応じて動作します – Sagar

+0

また、jqueryプラグインを作成して特定の画像に使用することもできます。プラグインのドキュメントについては、これをチェックしてください。 – Aman

+0

これはHTMLなしで意味がありません – zer00ne

答えて

1

各画像をループして個別に処理する必要があります。 HTMLせずに私は.image-shadowが画像にどのように関連するか、それ自体を知らないが、それはこの

function getImageSizes() { 
     $(".image-with-shadow").each(function() { 
      var imgHeight = $(this).height(); 
      var imgMargin = (- imgHeight) * .995; 
      console.log(imgMargin); 
      //need to select the image shadow in relation to each image 
      //with no HTML reference i'm not sure how it's laid out 
      $(this).closest(".image-shadow").css({"height": imgHeight}); 
      $(this).closest(".image-shadow").css({"margin-top": imgMargin}); 
    }) 

} 
+0

$(this).next()。css({"height ":imgHeight}); – judith

関連する問題