【问题标题】:How to implement an image popup in jquery for firebase如何在 jquery 中为 firebase 实现图像弹出窗口
【发布时间】:2017-09-18 03:03:16
【问题描述】:

我有点麻烦,因为我不知道如何在 jquery 中为 firebase 实现图像弹出窗口。我在互联网上搜索过它,但没有找到如何为动态网站实现它的方法。我有以下 jquery 代码,有人可以帮忙吗?我在 stackoverflow 上也没有找到任何关于此的内容。

这是我的 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
    }
    // ...
  });

}

【问题讨论】:

  • @KENdi 进行调整..

标签: javascript jquery firebase firebase-realtime-database firebase-authentication


【解决方案1】:

嗯,你的问题不清楚。不过,让我试着按照我的理解来回答。如果您想在弹出窗口中显示图像,请将引导模式添加到 html,然后单击您从 firebase 数据库显示的每个图像,显示引导模式,如下所述:

将此模态 div 添加到您的 HTML:

<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函数有一个小错误:

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

您正在创建一个图像元素并将相同的变量分配给一个 div 元素。因此,图像元素被 div 元素覆盖。删除第二条语句image = document.createElement("div"),让你显示图片元素。

【讨论】:

  • 欢迎。但是你的问题得到了正确的答案吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多