2

按照此处的说明进行操作:http: //lokeshdhakar.com/projects/lightbox2/和“Murach 的 JavaScript 和 jQuery”一书中(第 320 和 321 页),我正在尝试将灯箱功能添加到我的网站。

我将 lightbox.css(和 screen.css,可能还需要思考)添加到我的 Content 文件夹,以及 lightbox.js 和 jquery.smooth-scroll.min.js(因为它包含在 lightbox 下载中,并且我想像灯箱需要它)到我的脚本文件夹。

我还在我的图像文件夹中添加了灯箱下载中包含的以下图像:close.png、loading.gif、next.png 和 prev.png。

我有这个 html 和 jQuery 代码(此时这是整个 Default.cshtml):

@{
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "el Garrapata - Spoon!!!";
}

<div id="tabs">
    <ul>
    <li><a href="#tabs-1">Spring</a></li>
    <li><a href="#tabs-2">Summer</a></li>
    <li><a href="#tabs-3">Fall</a></li>
    <li><a href="#tabs-4">Winter</a></li>
    </ul>
    <div id="tabs-1">
        <a href="Images/Fullsize/Landscapes/Spring_2013 04 06_2293.jpg" rel="lightbox" ><img src="Images/Thumbnails/Landscapes/Spring_2013 04 06_2293_th.jpg" width="300" height="200"></a>
    </div>

    <div id="tabs-2">
    </div>

    <div id="tabs-3">
    </div>

    <div id="tabs-4">
    </div>

</div>

    <script type="text/javascript">
        $(document).ready(function () {
            $("#tabs").tabs();
        });
    </script>

...但它不起作用:虽然该缩略图显示在“Spring”选项卡中,但单击它只会导致屏幕大部分变暗 - 它变得“变灰”到几乎不透明的程度。

灯箱下载还包括 jquery-1.7.2.min.js 和 jquery-ui-1.8.18.custom.min.js

我在 _SiteLayout.cshtml 中引用了较新的版本:

<script src="~/Scripts/jquery-2.0.0.min.js"></script>
<script src="~/Scripts/jquery-ui-1.9.2.min.js"></script>

这可能是问题吗?如果我想使用灯箱,我是否会“卡住”使用旧版本的 jQuery 和 jQueryUI?

顺便说一句,我试图在灯箱的内部论坛上发布这个,但无法登录,无论是使用 Fakebook 还是谷歌(尽管我(在前者的情况下不情愿地)都有两个账户;我也尝试过 OpenID jazz,但它似乎期待一个网址......???)

更新

注意:我将尽快将这个问题奖励 100 分。如果我在此之前得到答案,我将在回答后奖励赏金。

更新 2

我已经切换到fancyBox,但是当点击“缩略图”时,大(href)图像仍然紧贴页面的左侧,而不是中心。以下是所有 Razor、HTML 和 jQuery(为简洁起见,省略了一些图像代码):

从 _SiteLayout.cshtml 中选择:

<link rel="stylesheet" href="/fancybox/source/jquery.fancybox.css?v=2.1.4" type="text/css" media="screen" />
<script src="~/Scripts/jquery-2.0.0.min.js"></script>
<!-- May want to replace the above before deploying with use of a CDN:
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
OR: <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
..and similar for jquery-ui -->
<script src="~/Scripts/jquery-ui-1.9.2.min.js"></script>
<script type="text/javascript" src="/fancybox/source/jquery.fancybox.pack.js?v=2.1.4"></script>

来自 Default.cshtml:

@{
    Layout = "~/_SiteLayout.cshtml";
    Page.Title = "Garrapata";
}

<div id="tabs">
    <ul>
    <li><a href="#tabs-1">Spring</a></li>
    <li><a href="#tabs-2">Summer</a></li>
    <li><a href="#tabs-3">Fall</a></li>
    <li><a href="#tabs-4">Winter</a></li>
    </ul>
    <div id="tabs-1">
        <a class="fancybox" rel="group" href="Images/Fullsize/Landscapes/Spring_2013 04 06_2293.jpg"><img src="Images/Thumbnails/Landscapes/Spring_2013 04 06_2293_th.jpg" width="294" height="196" alt="" /></a>
        <a class="fancybox" rel="group" href="Images/Fullsize/Landscapes/Spring_2013 04 06_2295.jpg"><img src="Images/Thumbnails/Landscapes/Spring_2013 04 06_2295_th.jpg" width="294" height="196" alt="" /></a>
    </div>

    <div id="tabs-2">
    </div>

    <div id="tabs-3">
    </div>

    <div id="tabs-4">
    </div>

</div>

    <script type="text/javascript">
        $(document).ready(function () {
            $("#tabs").tabs();
            $(".fancybox").fancybox({
                openEffect  : 'elastic',
                closeEffect : 'elastic'
            });
        });
    </script>

另外,我在 NE 角没有看到“关闭”按钮 - 可能是因为占据了所有“顶部”空间的大图像没有留出空间让它可见。

更新 3

现在我看到我在 _SiteLayout.cshtml 中引用的 .css 和 .js 文件应该在 /fancybox/source

似乎不是我现在拥有的,即:

<link rel="stylesheet" href="/fancybox/source/jquery.fancybox.css?v=2.1.4" type="text/css" media="screen" />
<script type="text/javascript" src="/fancybox/source/jquery.fancybox.pack.js?v=2.1.4"></script>

...应该起作用的是:

<link rel="stylesheet" href="~/Content/jquery.fancybox.css" type="text/css" media="screen" />
<script type="text/javascript" src="~/Scripts/jquery.fancybox.js"></script>

...因为我已将这些文件复制到这些位置。

真的必须是你提到的那种特殊的(而且,在我看来,相当奇特)的方式吗?

由于它似乎基于我所得到的根本找不到css和js,我很惊讶它甚至可以像它一样工作......

4

2 回答 2

11

您尝试实现的灯箱仅适用于 jQuery jquery-1.7.2或更低版本,并且您不需要jquery-ui-1.9.2.min.js灯箱即可工作。

要使此版本的灯箱正常工作,您 需要lightbox.css和.jquery-1.7.2.jslightbox.js

下面显示的是一个示例代码,类似于您使用 Lightbox 的示例代码。(将此代码粘贴到文本编辑器中,将其保存为 HTML 页面并使用 Web 浏览器打开它)

<html>
<head>
    <!-- 
         **** Things you need to do****
         1. SPECIFY LIGHTBOX CSS FILE
         2. SPECIFY JQUERY JS (jquery-1.7.2) FILE
         3. SPECIFY LIGHTBOX JS FILE 
    -->

    <link rel="stylesheet" href="http://lokeshdhakar.com/projects/lightbox2/css/lightbox.css" type="text/css" media="screen" /> 
    <script src="http://lokeshdhakar.com/projects/lightbox2/js/jquery-1.7.2.min.js"></script> 
    <script src="http://lokeshdhakar.com/projects/lightbox2/js/lightbox.js"></script> 
</head>
<body>
<div id="tabs">
    <ul>
    <li><a href="#tabs-1">Spring</a></li>
    <li><a href="#tabs-2">Summer</a></li>
    <li><a href="#tabs-3">Fall</a></li>
    <li><a href="#tabs-4">Winter</a></li>
    </ul>
    <div id="tabs-1">
        <a href="http://pages.swcp.com/~jamii/OtherCats/coco.jpg" rel="lightbox" >
            <img src="http://pages.swcp.com/~jamii/OtherCats/coco.jpg" width="300" height="200">
        </a>
    </div>
</div>
</body>
</html>

您可以使用 fancybox 代替 lightbox,它适用于最新的 jQuery 版本。Fancybox 的最新版本是Fancybox 2,您可以从这个站点下载它 - http://fancyapps.com/fancybox/

实现 Fancybox 2 的代码

<html>
<head>
    <!-- Add jquery library -->
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 

    <!-- Add fancyBox main JS and CSS files -->
    <script type="text/javascript" src="http://fancyapps.com/fancybox/source/jquery.fancybox.pack.js"></script>
    <link rel="stylesheet" type="text/css" href="http://fancyapps.com/fancybox/source/jquery.fancybox.css" media="screen" />

    <script>
        $(document).ready(function(){
            $(".fancybox").fancybox({
                openEffect  : 'elastic',
                closeEffect : 'elastic'
            });
        });
    </script>
</head>
<body>
<div id="tabs">
    <ul>
    <li><a href="#tabs-1">Spring</a></li>
    <li><a href="#tabs-2">Summer</a></li>
    <li><a href="#tabs-3">Fall</a></li>
    <li><a href="#tabs-4">Winter</a></li>
    </ul>
    <div id="tabs-1">
        <a class="fancybox" href="http://pages.swcp.com/~jamii/OtherCats/coco.jpg" rel="lightbox" > <!--Add class "fancybox"-->
            <img src="http://pages.swcp.com/~jamii/OtherCats/coco.jpg" width="300" height="200">
        </a>
    </div>
</div>
</body>
</html>

更新#1

您需要源文件夹中的所有文件来实现 fancybox(helpers 文件夹是可选的)。您需要将fancybox css、js 和图像保存在一个位置。您可以做的是将source文件夹复制到您的 Web 应用程序目录中并将其重命名为fancybox. 然后你可以从你的html页面调用css文件,js文件。例如:

<link rel="stylesheet" href="../fancybox/jquery.fancybox.css" type="text/css" media="screen" />
<script type="text/javascript" src="../fancybox/jquery.fancybox.pack.js"></script>

在此处输入图像描述

于 2013-04-23T02:38:58.363 回答
2

有时,当您在灯箱之前包含其他 .js 库时,它也不起作用。把它放在jquery之后。

于 2014-06-19T12:29:40.130 回答