【问题标题】:How to make a grid of interactive elements?如何制作交互元素的网格?
【发布时间】:2016-04-13 17:52:47
【问题描述】:

我正在尝试创建一个类似于 this 的投资组合网站,当您将鼠标悬停在它们上方时,整页的图像网格会发生变化...(another example, the third screen!

目前我有一个粗略的解决方案,如下所示:

<img src="1.png" id="img" swap="2.png"/>

// then in JS...

$("#img").hover(function(){
    var _this = $(this);
    var current = _this.attr("src");
    var swap = _this.attr("swap");
    _this.attr('src',swap).attr('swap',current); 
}); // 

code credit

但这不是一个非常可扩展的解决方案,除了有 1000 个图像,每个图像都有自己唯一的 ID,因此可以切换 src,我不知道该怎么做 -- 另外我不知道这会对不同的显示尺寸/屏幕截断有何反应。虽然 CSS 瓦片中的背景图像很好,但它不允许交互......除非你有一个 JS 脚本跟踪光标位置(?)

!!这是我的第一个项目,任何帮助将不胜感激:)(Codecademy 是一个非常受保护的学习环境........)

【问题讨论】:

  • 当我转到“另一个示例”时,我的虚拟机刚刚死机。对于我那微不足道的 6GB 虚拟 RAM 来说,似乎发生了太多事情。简而言之,this 在速度较慢的设备或资源半有限的设备上也会表现不佳。
  • 如果你在 CSS 中这样做,只是为了与众不同?

标签: javascript jquery html css grid


【解决方案1】:

您不必使用 id 并为每个图像创建处理程序。

这将适用于页面上当前的每张图片:

$("img").hover(function(){
  var _this = $(this);
  var current = _this.attr("src");
  var swap = _this.attr("swap");
  _this.attr('src',swap).attr('swap',current); 
});

这将对每张图片做出反应,甚至是在页面加载后添加的图片:

$(document).on('hover', 'img', function () {
  var _this = $(this);
  var current = _this.attr("src");
  var swap = _this.attr("swap");
  _this.attr('src',swap).attr('swap',current); 
});

考虑到屏幕尺寸和您的其他顾虑,您需要为图片设置固定的宽度和高度,或者确保所有图片的分辨率相似。

您也可以通过创建 div 网格然后在悬停时更改 div 的背景来对背景进行此操作,类似于上述处理程序。

【讨论】:

  • 感谢 Mark 的回答,我实际上实施了第一个解决方案,并且成功了...关于固定宽度/高度,那会是 ems 吗?您如何让它们端到端地填充屏幕,这只是从 HTML 继承的一些 CSS 吗?另外...在第一个示例中,当您放大/缩小时,彩色方块四处移动/更改位置,有什么提示吗?谢谢!
  • 既然问题已经得到解答,如果您能将我的答案选为正确就太好了!至于您的其他问题,每个问题都有很多解决方案。您可以指定宽度为 px(像素)、em(相对于字体大小)、%。您可以使用 javascript 提供不是图像的“填充”块来填充屏幕。您可以使用媒体查询来定位各种屏幕分辨率。有一些方法可以禁用缩放。很多答案我没有在评论中详细说明的空间。这都是成为 Web 开发人员的一部分。很多东西要学!
猜你喜欢
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 2012-11-10
  • 2010-12-17
  • 1970-01-01
  • 1970-01-01
  • 2019-04-24
  • 2018-08-09
相关资源
最近更新 更多