2

firebase 용 jquery에서 이미지 팝업을 구현하는 방법을 모르겠으므로 조금 문제가 있습니다. 인터넷에서 검색했지만 동적 웹 사이트 용으로 구현하는 방법을 찾지 못했습니다. 나는 다음과 같은 jquery 코드를 가지고있다. 아무도 도와 줄 수 있는가? 나는 이것에 관해서도 stackoverflow에 아무것도 발견하지 못했다.firebase 용 jquery에서 이미지 팝업을 구현하는 방법

이 내 HTML 코드

<html> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> 
    <meta name="description" content=""> 
    <meta name="author" content=""> 

    <title>images</title> 

    <!-- Latest compiled and minified CSS --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous"> 

    <!-- Optional theme --> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous"> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css"> 
    <link rel="stylesheet" href="overrides.css"> 


    </head> 

    <style> 
.contentImage{ 
    position: relative; 
    } 


.image { 
    opacity: 1; 
    display: block; 
    width: 100%; 
    height: 40%; 
    transition: .5s ease; 
    backface-visibility: hidden; 
} 


.image:hover { 
    opacity: 0.3; 
} 

.gallery { 
    margin: 5px; 
    border: 1px solid #ccc; 
    float: left; 
    width: 180px; 
} 

.gallery:hover { 
    border: 1px solid #777; 
} 

.gallery img { 
    width: 100%; 
    height: auto; 
} 



</style> 
<body> 

    <nav class="navbar navbar-inverse navbar-static-top"> 
    <div class="container"> 
     <div class="navbar-header"> 
     <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> 
      <span class="sr-only">Toggle navigation</span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
      <span class="icon-bar"></span> 
     </button> 
     <a class="navbar-brand" href="#">here is the title</a> 
     </div> 
     <div id="navbar" class="collapse navbar-collapse"> 
     <ul class="nav navbar-nav"> 
      <li><a href="index.html">Home</a></li> 
      <li><a href="#">Your images</a></li> 
      <li class="active"><a href="#">Public images</a></li> 
     </ul> 
     </div><!--/.nav-collapse --> 
    </div> 
    </nav> 

    <div class="container" id="contentHolder"> 
    </div> 


    <script src="https://www.gstatic.com/firebasejs/live/3.0/firebase.js"></script> 
    <script>  
    // Initialize Firebase 
    var config = { 
     apiKey: "AIzaSyB181Itkz9i9YjeJYLq9GbF94p8409wEfE", 
    authDomain: "farmyantra.firebaseapp.com", 
    databaseURL: "https://farmyantra.firebaseio.com", 
    storageBucket: "farmyantra.appspot.com", 
    messagingSenderId: "146534813177" 
    }; 
    firebase.initializeApp(config); 
    </script> 
    <script src="https://apis.google.com/js/platform.js" async defer></script> 
    <!-- Bootstrap core JavaScript 
    ================================================== --> 
    <!-- Placed at the end of the document so the pages load faster --> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
    <script>window.jQuery || document.write('<script src="../../assets/js/vendor/jquery.min.js"><\/script>')</script> 
    <!-- Latest compiled and minified JavaScript --> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script> 
    <script type="text/javascript" src="timeline.js"></script> 


</body> 
</html> 

이며,이 질문이 명확하지 않다, 내 JS가

$(document).ready(function(){ 
    firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
     // User is signed in. 
     var token = firebase.auth().currentUser.uid; 
     queryDatabase(token); 
    } else { 
     // No user is signed in. 
     window.location = "index.html"; 
    } 
}); 
}); 


function queryDatabase(token) { 
    firebase.database().ref('/Posts/').once('value').then(function(snapshot) { 
    var PostObject = snapshot.val(); 
    var keys = Object.keys(PostObject); 
    var currentRow; 
    for (var i = 0; i< keys.length; i++) { 
     var currentObject = PostObject[keys[i]]; 
     if (i % 4 == 0) { 
     currentRow = document.createElement("div"); 
     $(currentRow).addClass("row"); 
     $("#contentHolder").append(currentRow); 
     } 
     var col = document.createElement("div"); 
     $(col).addClass("col-lg-3"); 
     var image = document.createElement("img"); 
     image.src = currentObject.url; 
     $(image).addClass("contentImage image hover "); 
     var p = document.createElement("p"); 
     $(p).html(currentObject.caption); 
     $(p).addClass("contentCaption"); 
     $(col).append(image); 
     $(col).append(p); 
     $(currentRow).append(col); 
     //create new row on every third entry 
     //col-lg-4 
    } 
    // ... 
    }); 

} 
+1

조정을 위해 @KENdi. –

답변

2

잘 파일입니다. 그러나 내 이해에 따라 대답하도록 노력합시다. 팝업 이미지를 표시하려면 html에 부트 스트랩 모달을 추가하고 firebase 데이터베이스에서 표시하는 각 이미지를 클릭하면 아래 설명 된대로 부트 스트랩 모달이 표시됩니다.

HTML에이 모달 div를 추가하십시오 :

<div id="imageModal" class="modal fade" role="dialog"> 
    <div class="modal-dialog modal-sm"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal">&times;</button> 
      <h3 class="modal-title">Caption goes here..</h3> 
     </div> 
     <div class="modal-body"> 
      <div id="image"> </div> 
     </div> 
    </div> 
    </div> 
당신의 timeline.js 파일에 지금

, 코드 아래에 추가 :

$('img').on('click', function() { 
     $('#imageModal #image').empty(); 
     var imgUrl = $(this).attr('src'); 
     var caption = $(this).siblings('.contentCaption').html(); 
     $('#imageModal #image').append('<img width="100%" height="100%" src="' + imgUrl + '"></img>'); 
     $('#imageModal .modal-title').text(caption); 
     $('#imageModal').modal('show'); 
    }); 

참고 : 작은 오류가 queryDatabase 재미에있다 ction :

var image = document.createElement("img"); 
image = document.createElement("div") 
image.src = currentObject.url; 

이미지 요소를 만들고 동일한 변수를 div 요소에 할당하려고합니다. 따라서 이미지 요소는 div 요소로 덮어 씁니다. 이미지 요소를 표시하려면 두 번째 문 image = document.createElement("div")을 삭제하십시오.

+1

실수를 지적 해 주셔서 감사합니다. 나는 그것을 편집했습니다. –

+0

환영합니다. 하지만 당신의 질문에 대한 정답을 얻었습니까? – PrashanthBR

+1

감사합니다 형제, 당신은 내 하루를 저장, 당신의 대답을 upvoted 및 허용 표시 ... 감사합니다 –

관련 문제