如何使用弹出窗口在 JavaScript 中构建一个简单的图片库

2023-12-09

我在互联网上寻找帮助,但我无法让它工作!

有人能给我一个如何编写这样的代码的例子吗?

我会调整图像的大小,并为弹出窗口提供一个缩略图大小的图像和一个更大的图像。我希望用户单击缩略图大小的图像并在弹出窗口中显示全尺寸的图像。

我是 Javascript 的初学者,我认为代码将涉及 window.open 和 onclick 函数,但除此之外我不知道该怎么做。


9 行 JavaScript 的图像库。

您所要做的就是创建两个目录,一个用于images和一个用于thumbnails; the thumbnails目录应放置在images目录。图像名称应该相同。使用alt属性用于图像描述,最后,随意更改 CSS 值。

// HTML
<ul id="gallery">
    <li><img src="images/thumbnails/img-01.jpg" alt="desc-01"></li>
    <li><img src="images/thumbnails/img-02.jpg" alt="desc-02"></li>
    <li><img src="images/thumbnails/img-03.jpg" alt="desc-03"></li>
    <li><img src="images/thumbnails/img-04.jpg" alt="desc-04"></li>
</ul>

// CSS
#gallery {
    list-style-type:none; background-color: #f0f0f0; overflow: hidden; margin: 0px; padding: 0px;
}

#gallery li {
    background-color: #fff; float: left; margin: 5px; padding: 5px;
}

#gallery li img {
    width: 120px; height: 120px; margin: 0px; padding: 0px;
}

//
// Image gallery in 9 lines of JavaScript
// http://stackoverflow.com/users/1310701/hex494d49
//
window.onload = function() {
    var img = document.getElementById("gallery").getElementsByTagName("IMG"), w, i;
    for (i = 0; i < img.length; i++){
        (function(i){
            img[i].onclick = function() {
                w = window.open("","gallery","menubar=0,scrollbars=0");
                w.document.write("<img src='" + img[i].src.replace(/thumbnails\//,'') + "' alt='" + img[i].alt + "' /><div>" + img[i].alt + "</div>");
            };
        }(i));
    }
};

用 15 行 JavaScript 编写的图片库。

// HTML
// The same as above

// CSS
// The same as above
// 

// Image gallry in 15 lines of Javascript
// http://stackoverflow.com/users/1310701/hex494d49
//
window.onload = function() {
    var img = document.getElementById("gallery").getElementsByTagName("IMG"), w, i;
    for (i = 0; i < img.length; i++) {
        (function(i) {
            img[i].onclick = function() {
                if (!w || w.closed) {
                    w = window.open("","gallery","menubar=0,scrollbars=0");
                    w.document.write("<img src='" + img[i].src.replace(/thumbnails\//,'') + "' alt='' /><div>" + img[i].alt + "</div>");
                } else {
                    w.document.getElementsByTagName('IMG')[0].src = img[i].src.replace(/thumbnails\//,'');      
                    w.document.getElementsByTagName('DIV')[0].innerHTML = img[i].alt;
                }
                w.focus();
            };
        }(i));
    }
};

检查first or the second工作版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用弹出窗口在 JavaScript 中构建一个简单的图片库 的相关文章

随机推荐

  • 从 C#(非 C)COM 组件加载和传递 JScript 数组

    我看过有关 jscript 数组的教程 但还没有看到 我看到类似的问题 但涉及 Win32 代码而不是 NET 想知道如何在 JScript 和 C COM 组件之间来回传递数组 例如 我在 C COM 中定义了两个属性 它们返回字符串和整
  • 视图模型不断创建实时数据实例

    我在中创建了视图模型的实例onCreate活动的方法 ticketViewModel ViewModelProviders of this get TicketViewModel class 那我有一个方法 AddTicket 它使用vie
  • 增加 Angular 2+ 和 ASP.NET Core WebAPI 应用程序中的超时

    在我的 Angular 2 ASP NET Core MVC WebAPI 应用程序中 我有一个从客户端 UI 到服务器的长时间运行的 API 调用 请求在 30 秒后超时 我想在客户端或服务器端定义此特定 API 调用的超时 我只找到了全
  • 将文件拖到桌面快捷方式 - 不在应用程序中打开文件

    我有一个小型日志查看器应用程序来读取一些自定义日志 我可以将文件直接拖到可执行文件上 然后通过命令行加载它们就可以了 但是 如果我将文件拖到桌面快捷方式 Windows 将不会使用这些文件作为命令行参数来打开应用程序 它根本不会打开该应用程
  • 改变垫子展开指示器的旋转

    我成功地将垫指示器移动到左侧 而不是右侧 并且我使用变换属性使其在展开时向内转动 不过 我希望指示器在展开时朝上 在折叠时朝下 我如何正确地设计它来实现这一目标 https stackblitz com edit indicatorrota
  • Git - 如何查看方法/函数的更改历史记录?

    所以我发现了关于如何查看文件的更改历史记录的问题 但是这个特定文件的更改历史记录是巨大的 我真的只对特定方法的更改感兴趣 那么是否可以查看该特定方法的更改历史记录 我知道这需要 git 来分析代码 并且不同语言的分析会有所不同 但方法 函数
  • 尝试从应用扩展访问钥匙串时出现“没有可用钥匙串”错误

    我正在制作一个 IOS 自定义键盘扩展 默认情况下 键盘的功能有限 但是当用户从主父应用程序购买完整版本时 键盘会解锁缺少的部分 为了检查用户是否购买了该应用程序 我尝试存储Bool在 IOS 钥匙串中使用这个图书馆 let IAPKeyc
  • UTF8 和日语字符

    问题 外来字符未按应有的方式显示 这包括德语 日语 俄语和除英语之外的所有其他语言 完美运行 PHP 通过 jQuery AJAX 调用调用 MySQL 它应该返回信息并将其显示在页面上 数据被调用并显示 然而 对于非英语字符 结果显示为
  • 如何根据 iFrame 内容的大小“增长”iFrame?

    我正在动态加载 iFrame 有些页面比其他页面 更高 我希望 iFrame 能够相应地增长 是否可以 如果是这样 怎么办 是的 jquery 是可以的 父页面代码 iframe页面上的脚本 function alertSize var m
  • 如何实现网页的实时更新?

    Google 的 GMail 服务之所以能做到这一点 是因为它集成了 Google Talk 而 Etherpad 现在的 typewith me 使 Google Wave 等使用的系统闻名 当其他用户对页面进行更改时 所有此类系统都会立
  • 禁用 LLVM 10 C++ API 的常量折叠

    我正在使用 LLVM C API 为 C 语言的子集编写编译器前端 我注意到生成的 IR 总是应用恒定的折叠优化 但我想禁用此功能并获得忠实的 未优化的 IR 有什么办法可以做到这一点吗 以下是我用来从模块生成 IR 的代码 llvm ve
  • 当通过 javascript/jquery 更改值时,多个选择不会更新

    我有一个多重选择 其中每个选项都设置了一个类 根据类别 我可以预先选择特定类别的所有选项 因此用户不必自己选择所有选项 到目前为止 它运行良好 直到我通过单击手动选择一个选项 从现在开始 预选似乎不再起作用了 但只有视觉效果不再起作用 选项
  • 使用 Youtube Iframe API 创建的视频播放器停止与 Chrome v.85 配合使用

    我在将 Youtube iframe API 与最新稳定版本的 Chrome 版本 85 一起使用时遇到问题 我知道一个月前一切都可以正常工作 但现在 即使完全遵循 Youtube iframe API 文档中找到的最基本的示例 https
  • INotifyCollectionChanged 未更新 UI

    我有一堂课 如下所示 为了简洁起见 我删除了所有功能 public class PersonCollection IList
  • 如何在部署到 Vercel 的 Next.js 应用程序中正确设置环境变量?

    我正在 Next js 中构建我的网络应用程序 并且我一直在做一些测试 我正在做的是将我的代码推送到 GitHub 然后从那里将项目部署到 Vercel 我正在使用 Google API 依赖项 它需要一些客户端 ID 和客户端密钥 以便我
  • 查找组中最常见的观察结果[重复]

    这个问题在这里已经有答案了 数据框 B pd DataFrame b II II II II II I I I MOST FREQUENT 1 2 2 1 1 1 2 2 我需要获取列中出现次数最多的值MOST FREQUENT对于每组 p
  • #[inline] 可以在特征方法声明和实现中使用吗?

    我有一些小方法的特征 这些方法通常作为实现结构所具有的其他方法的单行包装器来实现 如果我想确保特征方法是内联的 我应该放置 inline always 在特征定义内 或在impl对于每个结构 我更愿意简单地将其放入特征定义中 但据我所知 这
  • 如何将最新更改拉取到 GitHub 中我当前的工作分支?

    假设我在分支 abc test git pull origin master 这是否会将 master 分支与我当前的分支 abc test 合并 或者我是否需要运行更多命令 tl dr run git fetch获取最新更改 然后运行gi
  • 在 2.0.5 中,将 cassandra 作为服务启动不起作用,sudo cassandra -f 有效

    当我尝试在 ubuntu 12 04 上启动 cassandra 时 通过 Datastax 安装 dsc20包 作为服务如下 sudo 服务 cassandra 启动 it says 无法访问 Cassandra 的 pidfile 日志
  • 如何使用弹出窗口在 JavaScript 中构建一个简单的图片库

    我在互联网上寻找帮助 但我无法让它工作 有人能给我一个如何编写这样的代码的例子吗 我会调整图像的大小 并为弹出窗口提供一个缩略图大小的图像和一个更大的图像 我希望用户单击缩略图大小的图像并在弹出窗口中显示全尺寸的图像 我是 Javascri