2017-07-26 57 views
1

我在Bootstrap中有一個圖像燈箱,我想要實現的是當用戶點擊圖像時,彈出的圖像會不同。在燈箱中打開不同的圖像

所以我會有拇指圖標,當用戶點擊其中的一個時,將顯示完整的圖像。因此,代碼是這樣的:

<a href="full_Image_url" ..> <img src="thumb_img_url" ...></a> 

我嘗試過編輯<a href="#" ..>與其他圖像的位置,但它沒有工作..

var $lightbox = $('#lightbox'); 
 

 
$('[data-target="#lightbox"]').on('click', function(event) { 
 
    var $img = $(this).find('img'), 
 
    src = $img.attr('src'), 
 
    alt = $img.attr('alt'), 
 
    css = { 
 
     'maxWidth': $(window).width() - 100, 
 
     'maxHeight': $(window).height() - 100 
 
    }; 
 

 
    $lightbox.find('.close').addClass('hidden'); 
 
    $lightbox.find('img').attr('src', src); 
 
    $lightbox.find('img').attr('alt', alt); 
 
    $lightbox.find('img').css(css); 
 
}); 
 

 
$lightbox.on('shown.bs.modal', function(e) { 
 
    var $img = $lightbox.find('img'); 
 

 
    $lightbox.find('.modal-dialog').css({ 
 
    'width': $img.width() 
 
    }); 
 
    $lightbox.find('.close').removeClass('hidden'); 
 
});
body { 
 
    padding: 30px 0px; 
 
} 
 

 
#lightbox .modal-content { 
 
    display: inline-block; 
 
    text-align: center; 
 
} 
 

 
#lightbox .close { 
 
    opacity: 1; 
 
    color: rgb(255, 255, 255); 
 
    background-color: rgb(25, 25, 25); 
 
    padding: 5px 8px; 
 
    border-radius: 30px; 
 
    border: 2px solid rgb(255, 255, 255); 
 
    position: absolute; 
 
    top: -15px; 
 
    right: -55px; 
 
    z-index: 1032; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> 
 

 
<div class="container"> 
 
    <div class="col-xs-6 col-sm-3"> 
 
    <a href="#" class="thumbnail" data-toggle="modal" data-target="#lightbox"> 
 
     <img src="https://s3.amazonaws.com/ooomf-com-files/lqCNpAk3SCm0bdyd5aA0_IMG_4060_1%20copy.jpg" alt="..."> 
 
    </a> 
 
    </div> 
 

 
    <div class="col-xs-6 col-sm-3"> 
 
    <a href="#" class="thumbnail" data-toggle="modal" data-target="#lightbox"> 
 
     <img src="https://s3.amazonaws.com/ooomf-com-files/Z3LXxzFMRe65FC3Dmhnp_woody_unsplash_DSC0129.jpg" alt="..."> 
 
    </a> 
 
    </div> 
 
</div> 
 

 
<div id="lightbox" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> 
 
    <div class="modal-dialog"> 
 
    <button type="button" class="close hidden" data-dismiss="modal" aria-hidden="true">×</button> 
 
    <div class="modal-content"> 
 
     <div class="modal-body"> 
 
     <img src="" alt="" /> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

回答

3

你有點擊事件<a data-target="#lightbox'>。你可以找到它的父div,然後找到它的下一個兄弟div和圖像。最後一個div可以是第一個兄弟姐妹。是這樣的:

var $lightbox = $('#lightbox'); 
 

 
$('[data-target="#lightbox"]').on('click', function(event) { 
 
    var imageDiv = $(this).parent().is(':last-child') ? $(this).parent().siblings().first() : $(this).parent().next(); 
 
    var $img = $(imageDiv).find('img'), 
 
    src = $img.attr('src'), 
 
    alt = $img.attr('alt'), 
 
    css = { 
 
     'maxWidth': $(window).width() - 100 , 
 
     'maxHeight': $(window).height() - 100 
 
    }; 
 

 
    $lightbox.find('.close').addClass('hidden'); 
 
    $lightbox.find('img').attr('src', src); 
 
    $lightbox.find('img').attr('alt', alt); 
 

 
}); 
 

 
$lightbox.on('shown.bs.modal', function(e) { 
 
    var $img = $lightbox.find('img'); 
 

 
    $lightbox.find('.modal-dialog').css({ 
 
    'width': $img.width() 
 
    }); 
 
    $lightbox.find('.close').removeClass('hidden'); 
 
});
body { 
 
    padding: 30px 0px; 
 
} 
 

 
#lightbox .modal-content { 
 
    display: inline-block; 
 
    text-align: center; 
 
} 
 

 
#lightbox .close { 
 
    opacity: 1; 
 
    color: rgb(255, 255, 255); 
 
    background-color: rgb(25, 25, 25); 
 
    padding: 5px 8px; 
 
    border-radius: 30px; 
 
    border: 2px solid rgb(255, 255, 255); 
 
    position: absolute; 
 
    top: -15px; 
 
    right: -55px; 
 
    z-index: 1032; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" /> 
 

 
<div class="container"> 
 
    <div class="col-xs-6 col-sm-3"> 
 
    <a href="#" class="thumbnail" data-toggle="modal" data-target="#lightbox"> 
 
     <img src="https://s3.amazonaws.com/ooomf-com-files/lqCNpAk3SCm0bdyd5aA0_IMG_4060_1%20copy.jpg" alt="..."> 
 
    </a> 
 
    </div> 
 

 
    <div class="col-xs-6 col-sm-3"> 
 
    <a href="#" class="thumbnail" data-toggle="modal" data-target="#lightbox"> 
 
     <img src="https://s3.amazonaws.com/ooomf-com-files/Z3LXxzFMRe65FC3Dmhnp_woody_unsplash_DSC0129.jpg" alt="..."> 
 
    </a> 
 
    </div> 
 
</div> 
 

 
<div id="lightbox" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> 
 
    <div class="modal-dialog"> 
 
    <button type="button" class="close hidden" data-dismiss="modal" aria-hidden="true">×</button> 
 
    <div class="modal-content"> 
 
     <div class="modal-body"> 
 
     <img src="" alt="" /> 
 
     </div> 
 
    </div> 
 
    </div> 
 
</div>

+0

感謝您的回答。其實,我想展示一個更大的圖像被點擊...對不起,我編輯了錯誤的問題.. – yaylitzis

+0

感謝您編輯您的答案。但你在哪裏設置更大的圖像的網址? – yaylitzis

+0

沒有必要設置url,使用jquery事件處理程序選擇下一個圖像。你在處理程序中設置了css,這使得它很小,所以我刪除了該css。 – Dij