【问题标题】:jQuery Lightbox appearing blankjQuery 灯箱出现空白
【发布时间】:2016-07-04 08:52:00
【问题描述】:

我正在练习构建一个单页网站,当单击按钮时,其他页面会作为 jquery 灯箱加载。

但是,当我单击按钮时,灯箱效果会发生,但它是空白的。我尝试加载外部站点,例如 google.com,但它也是空白的。这是一个html页面的代码:

<li><a href="map.html" data-lightbox="We are here" data-title="We are here"><button class="button location">Location</button></a></li>

对于外部网站:

<li><a href="http://www.rte.ie" data-lightbox="history" data-width="960" data-height="600"><button class="button history">History</button></a></li>

这两个都返回空白灯箱。

我使用的是http://lokeshdhakar.com/projects/lightbox2/ 的基本 jQuery 灯箱,它适用于我的图片库。

【问题讨论】:

  • 你能提供一个代码或 jsfiddle 你到目前为止所做的事情,以便我们检查有什么问题吗?
  • 你最好不要收到任何控制台错误,也不要告诉我们
  • js fiddle 是什么意思?我是新来的。刚刚完成了为期 10 周的网页设计课程,所以我正在练习。这段代码在我做的另一个网站上工作 但这仅适用于画廊中的图像

标签: jquery html lightbox


【解决方案1】:

看起来该项目甚至不支持外部/内部网站: From the github project

你可能想使用这样的东西: http://www.jacklmoore.com/colorbox/

【讨论】:

  • 我怀疑是这种情况,但我没有足够的经验知道这一点。非常感谢您的帮助
  • 典型的 RTFM 情况 ;)
  • 感谢您的帮助。什么是 RTFM?
【解决方案2】:

您将通过滚动自己的灯箱学到最多 - 看看它是多么简单:

/* js/jQuery */
$(document).ready(function(){
  
$('button').click(function(){
  $('#lightbox').html('This is a lightbox').fadeIn();
});

$('#lightbox').click(function(){
  $(this).fadeOut();
});
  
}); //END document.ready
/* CSS */
#myBody{padding:120px;font-size:2rem;background:palegreen;}

#lightbox{position:absolute;top:15%;left:10%;width:80%;height:60%;font-size:5rem;color:orange;text-align:center;background:black;opacity:0.8;display:none;}
<!-- HTML -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<button>Display lightbox</button>

<div id="myBody">This is my normal page content</div>

<div id="lightbox"></div>

灯箱只是一个常规的 DIV 结构,其样式为 position:absoluteposition:fixed 以将其从正常的 HTML 流中删除。然后它会被隐藏,并在需要时在按钮单击或其他可检测事件(鼠标悬停、ajax.done 等)时显示。

由于灯箱只是一个普通的 div,您可以使用 $('#divID').html('&lt;tag&gt;Your HTML here&lt;/tag&gt;').append().text() 等将新的东西插入到灯箱/div 即时

首先让您的项目使用未隐藏的“灯箱”,然后将 display:none 添加到灯箱 HTML 顶部容器的 CSS 例如&lt;div id="lightbox"&gt; 在我的示例代码中 并使用.show() / .hide() 等命令在需要时显示灯箱。

要将整个网站注入到灯箱中(就像使用 div 一样),请将网站添加到 &lt;iframe&gt;

/* js/jQuery */
$(document).ready(function(){
  
$('button').click(function(){
  $('#lightbox').html('<iframe src="http://google.com"></iframe>').fadeIn();
});

$('#lightbox').click(function(){
  $(this).fadeOut();
});

});//END document.ready
/* CSS */
#myBody{padding:120px;font-size:2rem;background:palegreen;}

#lightbox{position:absolute;top:15%;left:10%;width:80%;height:60%;font-size:5rem;color:orange;text-align:center;background:black;opacity:0.8;display:none;}
<!-- HTML -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<button>Display lightbox</button>

<div id="myBody">This is my normal page content</div>

<div id="lightbox"></div>

但首先要让这一切都正常运行。

【讨论】:

  • 我正在尝试使用您的代码来运行灯箱,然后使用它。因此,我添加了您的 html 并将其保存为索引,并将您的 css 添加到我的 master.css 中。但是我该怎么处理你的 javascript 呢?我添加它并将其保存为 lightbox.js,然后在我的 head 标签中引用它,如下所示: 但它不起作用
  • (1) 确保您已包含与上面示例中使用的加载 jQuery 相同的脚本标记(不必精确,但这个有效)。 (2) 在你让它工作之前,从 lightbox.js 外部文件中删除 js 并将其包含在 HTML 的底部(在 &lt;/body&gt; 之前),包裹在 &lt;script&gt;&lt;/script&gt; 中 (3) 第二个最重要的注意事项:在script 标签,确保所有 js/jQuery 代码都包含在准备好的文档中 fn - 我更新了答案以在答案中做到这一点。一切正常后,将其移回 lightbox.js ext 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-16
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多