2016-05-26 49 views
0

我被困在一點點的jQuery魔術中,我需要在我的網站中......我正在尋找在上面的​​代碼中添加一個DIV, DIV的大小與圖像相同 - 不是圖像響應,所以當圖像改變大小DIV也應該...在每個圖像上添加一個DIV,其大小與下面的圖像相同

我正在用下面的方法 - 但它使所有DIV的大小相同最後一個圖像,而不是圖像,每個圖像上面坐...

代碼我到目前爲止如下:

function placeImageOverDIVFX() { 
    $('.projectContentWrapper img').before('<div class="projectContentWrapperOverlayDIV"></div>'); 
} 

placeImageOverDIVFX(); 
$(window).load(function() { placeImageOverDIVFX(); }); 

function sizeupImageInnerFX() { 
    $('.projectContentWrapper img').each(function() { 
     var contentWrapperImageWidth = $(this).width(); 
     var contentWrapperImageHeight = $(this).height(); 

     function setSizes() { 
      $('.projectContentWrapperOverlayDIV').each(function() { 
       $(this).width(contentWrapperImageWidth); 
       $(this).height(contentWrapperImageHeight); 
      }); 
     } 

     setSizes(); 
    }); 
} 

sizeupImageInnerFX(); 

$(window).load(function() { sizeupImageInnerFX(); }); 
$(window).resize(function() { sizeupImageInnerFX(); }); 

關於如何在每個「projectContentWrapperOverlayDIV」DIV下面直接爲圖像製作DIV大小的任何想法?

HTML標記下面的例子:

<div class="projectContentWrapper"> 

<img src="assets/images/work/01/01.jpg"> 
<img src="assets/images/work/01/02.jpg"> 
<img src="assets/images/work/01/03.jpg"> 

</div> 

回答

0

我覺得你只是有一個邏輯問題。 這.each()塊抓住每個圖像的寬度/高度,這是偉大的!我認爲這個代碼很好。

$('.projectContentWrapper img').each(function() { 
    var contentWrapperImageWidth = $(this).width(); 
    var contentWrapperImageHeight = $(this).height(); 
    setSizes(); 
}); 

但是,當您改變div的大小時,實際上是遍歷每個div,而不僅僅是圖像上方的div。

function setSizes() { 
    $('.projectContentWrapperOverlayDIV').each(function() { 
     $(this).width(contentWrapperImageWidth); 
     $(this).height(contentWrapperImageHeight); 
    }); 
} 

第一次通過圖像迴路,具有.projectContentWrapperDIV類的所有div將更新到所述第一圖像的寬度/高度。第二次通過時,它將覆蓋第一個循環的更改並將所有div更新爲第二個圖像的寬度/高度。這一直重複,直到最後一張圖像,這就是爲什麼你所有的div似乎是繼承最後的圖像的寬度/高度。

您需要專門訪問圖像上方的個別div。你沒有任何HTML標記,所以我不能給你具體細節,但jQuery的parent()closest()可能會幫助你找到它。如果您發佈HTML標記,我們可以給您一個更好的解決方法。

+0

剛剛添加了HTML標記,如果有幫助? – dubbs

0

你正在使它不必要地複合。如果我理解得很好(在圖像上添加div),可以使用CSS輕鬆完成。查看我的示例並根據需要進行調整。

.imager { 
 
    width: 150px; /* Adjust as Needed */ 
 
    height: 150px; /* Adjust as Needed */ 
 
    display: inline-block; 
 
    position: relative; /* Helps curatil overlap */ 
 
    overflow: hidden; 
 
} 
 

 

 
.imager:before { 
 
    content: "IMG"; 
 
    width: 100%; 
 
    height: 100%; 
 
    position: absolute; 
 
    background: black; 
 
    z-index: 9; 
 
    top: 0; 
 
    left: 0; 
 
    opacity: .4; 
 
} 
 

 

 
/* For the text "IMG" */ 
 

 
.imager:after { 
 
    content: "IMG"; 
 
    height: 100%; 
 
    width: 100%; 
 
    line-height: 150px; 
 
    text-align: center; 
 
    top: 0; 
 
    position: absolute; 
 
    font-weight: bold; 
 
    font-size: 36px; 
 
    color: red; 
 
    
 
    } 
 

 
/* IMG Block ends here */ 
 

 

 

 

 
/* Image control starts below */ 
 

 
.imager img { 
 
    width: 100%; 
 
    heihgt: auto; 
 
    margin: 20px 10px 0 10px; 
 
}
<div class="imager"><img src="http://i41.tinypic.com/14iiyoy.jpg" border="0" alt="Image and video hosting by TinyPic"> </div> 
 

 
<div class="imager"><img src="http://i41.tinypic.com/14iiyoy.jpg" border="0" alt="Image and video hosting by TinyPic"> </div> 
 

 
<div class="imager"><img src="http://i41.tinypic.com/14iiyoy.jpg" border="0" alt="Image and video hosting by TinyPic"> </div> 
 

 
<div class="imager"><img src="http://i41.tinypic.com/14iiyoy.jpg" border="0" alt="Image and video hosting by TinyPic"> </div>

0

這裏有一個想法,如果我正確地理解這個問題。爲了稍後在調整流體圖像時調整DIV的大小,我根據圖像的索引爲每個div分配一個ID。

$(window).load((function() { 
    $('.projectContentWrapper img').each(function (index) { 
     var imageWidth = $(this).width(); 
     var imageHeight = $(this).height(); 
     var newDiv = $("<div class='projectContentWrapperOverlayDIV'></div>"); 
     $(newDiv).width(imageWidth); 
     $(newDiv).height(imageHeight); 
     $(newDiv).attr("id", "overlay_"+index); 
     $(this).before(newDiv); 
    } 
} 

$(window).resize(function() { 
    $('.projectContentWrapper img').each(function (index) { 
     var imageWidth = $(this).width(); 
     var imageHeight = $(this).height(); 
     $("#overlay_"+index).width(imageWidth).height(imageHeight); 
    } 
} 

如果圖像有ID,那會更好。只用:

$(newDiv).attr("id", "overlay_" + this.id); 

//當然沒有測試。

相關問題