如何确保 CSS :hover 应用于动态添加的元素

2024-02-02

我有一个脚本,当您将鼠标悬停在缩略图上时,它会在缩略图上动态添加完整图像。我还为完整图像提供了 CSS :hover 样式,以使它们扩展到更大的宽度(通常它们被限制为缩略图的尺寸)。如果图像加载速度很快或被缓存,这种方法效果很好,但如果完整图像需要很长时间才能加载,并且加载时您没有移动鼠标,那么一旦它出现,它通常会保持缩略图宽度(非:悬停样式)直到您再次移动鼠标。我在尝试过的所有浏览器中都遇到了这种行为。我想知道这是否是一个错误,以及是否有办法修复或解决它。

可能值得注意的是,我也尝试在 Javascript 中做同样的事情.on('mouseenter'),并遇到了同样的问题。

由于问题的性质,它可能很难重现,特别是如果您的连接速度很快。我从维基百科中选择了一张较大的照片来演示,但为了使其正常工作,您可能必须将其更改为特别大的照片或来自慢速域的照片。另请注意,您可能必须清除缓存才能连续重试。

如果还是无法重现,可以人为添加延迟fullimage.load在致电之前anchor.show().

HTML:

<img id="image" src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/32/Cairo_International_Stadium.jpg/220px-Cairo_International_Stadium.jpg" />

CSS:

.kiyuras-image {
    position: absolute;
    top: 8px;
    left: 8px;
    max-width: 220px;
}

.kiyuras-image:hover {
    max-width: 400px;
}

JS:

$(function () {

    var fullimageurl = 'http://upload.wikimedia.org/wikipedia/commons/3/32/Cairo_International_Stadium.jpg';

    var fullimage = $('<img/>')
        .addClass('kiyuras-image')
        .load(function () {
            anchor.show();
        });

    var anchor = $('<a/>').hide().append(fullimage);

    $('body').prepend(anchor);

    $("#image").on('mouseenter', function () {
        fullimage.attr('src',fullimageurl);
        $(this).off('mouseenter');
    });

});

JS Bin http://jsbin.com/ifitep/1

更新了 JS Bin,添加了 1.5 秒延迟(希望使问题更清晰) http://jsbin.com/ifitep/10

再次强调:重现问题涉及清除大图像的缓存,然后将鼠标悬停在原始图像上以初始加载大图像,然后在加载时不要移动鼠标。预期的行为是让大图像在最终加载时正确呈现 :hover 伪类。我看到的问题是,当加载时间超过 0.75 秒时,它不会进行 :hover,直到您稍微摇动鼠标。

Edit:有关我的用例的更多详细信息,请参阅我对 @LucaFagioli 答案的评论。

编辑,续集:我以为我已经这样做了,但我只是尝试在 Firefox 中重现该问题,但无法重现。也许这是 Chrome 的一个错误?


大多数浏览器都会更新其hover仅当光标在元素上移动至少一个像素时才会出现。当光标进入缩略图的位置时img它得到hover应用并运行你的mouseenter处理程序。如果您保持光标不动直到加载全尺寸图像,您的旧img(缩略图)将保留hover状态,而新状态将无法得到它。

要使其在这些浏览器中工作,请将hoverCSS 中公共父元素的伪类;例如,将两者都括起来imgs in a span http://jsbin.com/ifitep/50.

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

如何确保 CSS :hover 应用于动态添加的元素 的相关文章

  • 自 2012 年 6 月 12 日以来,“未定义”随机附加在我网站上 1% 的请求网址中

    自 2012 年 6 月 12 日 11 20 TU 起 我在我的 varnish apache 日志中看到非常奇怪的错误 有时 当用户请求一页时 几秒钟后我会看到类似的请求 但 url 中最后一个 之后的所有字符串已被 未定义 替换 例子
  • AngularJS:在部分视图出现之前触发 $viewContentLoaded

    对于部分视图 我想做一些我通常会做的 JavaScript 事情 document ready function 例如将 venet 侦听器绑定到元素 我知道这对于 AngularJS 和加载到 根 视图中的部分视图不起作用 因此 我向控制
  • 更改 CSS 网格中的列顺序

    我正在研究 CSS 网格 当我在桌面尺寸上查看它时 min width 769px 我有单行三列 像这样的事情 col 1 col 2 col 3 我可以使用 css grid 移动列 以便我可以在移动布局上执行类似以下操作吗 col 1
  • 如何在服务器端按钮点击时关闭当前标签页?

    我尝试在确认后关闭当前选项卡 因此我将以下代码放在确认按钮的末尾 但选项卡没有关闭 string jScript ClientScript RegisterClientScriptBlock this GetType keyClientBl
  • Jquery 自动完成 - 预填充文本字段

    我有一个自动完成字段 改编自地理自动完成以查找地理位置 当用户从列表中选择位置时 我会获取纬度 经度和用于搜索的其他一些信息 然而 现在只有当用户实际从自动完成列表中进行选择时它才有效 而不是开始键入并单击 Enter 例如他们尚未从列表中
  • 使用 AJAX 获取发布数据

    我正在尝试从 Wordpress 帖子 AJAX 中提取内容 我已经在下面列出了迄今为止我的努力 加载的脚本 wp enqueue script my ajax request get stylesheet directory uri js
  • 大型应用的回流/布局性能

    我正在使用 GWT 构建一个 HTML 应用程序 其性能总体上是正确的 有时 它会加载 DOM 中的许多对象 并且应用程序会变得很慢 我使用 Chrome 开发者工具分析器来查看时间花在哪里 在 Chrome 下 一旦应用程序被编译 即没有
  • 我可以在不使用 Jquery UI 的情况下获得 Jquery Pulsate Effect 吗?

    我遇到了由于某种原因无法使用 Jquery UI 的情况 我正在尝试在不使用 Jquery UI 的情况下获得 Jquery UI 脉冲效果 与此链接类似 http docs jquery com UI Effects Pulsate ht
  • selenium-webdriver 与 webdriverjs 有什么区别(以及何时使用)?

    我是一位使用 selenium webdriver 的经验丰富的专业人士 我正在探索有关如何测试 javascript 应用程序的更多选项 我发现了 webdriverJs 不幸的是 我不明白这两者 2 之间有什么区别 有人可以解释一下何时
  • CSS :hover 影响所有子 div

    我里面有一个父 div 和多个子 div 我希望这样 如果您将鼠标悬停在父 div 上 它会以不同的方式影响所有子 div 的悬停状态 即 一个 div 的文本带有下划线 另一个 div 的文本会更改颜色 并且保存图像的 div 使图像稍微
  • Google 地图 InfoBubble PixelOffset(从标记上方的默认位置移动)

    我正在尝试实现一个自定义 infoBubble 它的框打开到标记的侧面 而不是顶部的默认位置 事实证明这比预期的要困难 使用普通的infoWindow 您可以使用pixelOffset 请参阅此处文档 https developers go
  • D3.js - 具有多个环的圆环图

    以下示例显示了 D3 js 中的圆环图 是否可以向图表添加多个圆环 var dataset apples 53245 28479 19697 24037 40245 var width 460 height 300 radius Math

  • 有多少像素? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 一个有多少像素 br 标签添加 我知道 br 高度可以通过CSS控制line height财产 不同浏览器的值是否相同 它会添加与浏览
  • 使用 Socket.IO 时如何访问会话标识符?

    我有一个聊天 我需要管理独特的连接 我四处搜寻 但我找到的解决方案似乎都已被弃用 那么 如何使用 Socket IO 获取套接字的会话 ID 我在用着Node js http en wikipedia org wiki Node js Ex
  • d3力定向布局-链接距离优先

    在 d3 中使用力导向布局 如何使链接距离成为优先事项 同时仍然保持良好的图形布局 如果我指定动态链接距离 但保留默认费用 则我的图形距离会因费用函数而发生一些变形 并且不再是准确的距离 但是 如果我删除电荷 图表将如下所示 任何建议表示赞
  • 当选项卡重新加载(chrome 扩展)时,如何运行此脚本?

    所以我想在指定 URL 中重新加载选项卡时运行脚本 它几乎可以工作 但实际上 id 不能 这是我的清单文件 manifest version 2 name Sample Extension description Sample Chrome
  • 无法从 JSON 请求获取数据,尽管我知道它已返回

    我试图获取从 getJSON 返回的数据 但我无法让它工作 我已经在 search twitter API 上尝试了相同的代码 效果很好 但它不适用于其他网站 我知道数据已返回 因为我在使用检查器时可以找到它 我通过检查器找到的值是 id
  • 背景大小:封面在视网膜显示屏上看起来像素化

    可以看到我正在开发的网站here http ourcityourstory com dev 如果你查看 iPad 3 或 iPhone 4 上的 关于 或 联系 部分 背景看起来全都是疯狂的像素化 我有background size set
  • 文本溢出:省略号显示不同的字符

    我这里遇到了一些 CSS 问题 看这张图片 https www flickr com photos 125543025 N07 saved 1 在此图像中 我为文本 INTENSE TRAINING 添加了 CSS 样式 sample st
  • React 错误:目标容器不是 DOM 元素

    我刚刚开始使用 React 所以这可能是一个非常简单的错误 但我们开始吧 我的html代码非常简单 load staticfiles

随机推荐

  • 为什么我们需要私有构造函数?

    如果一个类有一个私有构造函数 那么它就不能被实例化 因此 如果我不想实例化我的类并仍然使用它 那么我可以将其设为静态 私有构造函数有什么用 还有 它是用在单例类中的 但是除此之外 还有什么其他用途吗 注意 我排除上述单例情况的原因是 我不明
  • 将原始字节导入为 R 中的原始字节

    我已将数据库中的字符串导入到 R 中 数据库列类型是BYTEA Postgres 为了让我按预期使用它 它应该是类型raw 相反 它是类型character 我想在以下意义上将其转换为原始数据 字符串表示形式是 x1f8b080000000
  • Prolog查找所有路径实现

    我的任务是在 Prolog 中实现 findall 的一个版本 除了 not 和 cut 之外 不使用任何 Prolog 内置函数 所以基本上是在纯 Prolog 中 我正在尝试在树中搜索所有直系后代并在列表中返回结果 parent a b
  • PHP createFromFormat 5.2版本

    标题已经说了我想知道的一切 有什么功能吗还是我必须自己做 Thanks Edit 好的 太棒了 在我正在开发的服务器中它运行得非常完美 但在我的托管开发服务器的计算机中 我使用的是 Windows strptime gt 注意 该函数在 W
  • JSON 解析异常:无法将 VALUE_STRING 解码为 base64 (MIME-NO-LINEFEEDS):base64 内容中存在非法字符“”(代码 0x22)

    使用 Jackson 我尝试用 JSON 编码数据 但出现异常 我尝试了字符串数据和字节 数据 String representation of same data is here Bytes converted to String gt
  • 对查询集进行排序的好方法? - 姜戈

    我想做的是 获得得分最高的 30 位作者 Author objects order by score 30 作者按以下顺序排列last name 有什么建议么 关于什么 import operator auths Author object
  • WooCommerce:访客结帐不起作用

    我一直在尝试弄清楚如何使我的支持访客结帐的网站正常运行 但到目前为止尚未成功 我激活了以下 WooCommerce 设置 启用访客结账 在 结账 页面启用注册 通常 用户应该能够在不创建帐户的情况下结账 但如果愿意 也可以选择创建帐户 但如
  • 使用 Steamworks 获取 Steam 游戏的所有评论?

    目前 我正在尝试使用 Steamworks 文档中描述的方法获取特定游戏的所有 Steam 评论 https partner steamgames com doc store getreviews https partner steamga
  • 关闭下载栏

    我正在使用 Java 和 Selenium 编写测试 在我的测试中 我下载了一个文件 但随后需要单击 chrome 浏览器页面底部显示的下载栏下方的按钮 我搜索了很多 但唯一的解决方案是here https stackoverflow co
  • to_json 如果字段为黑色则返回 nil,ios 无法解释 ror 中的 null

    如何将 to json 输出中的字段值从 null 更改为 目前它返回 name priya mobile null 相反我想要 name priya mobile or name priya mobile NA 请建议 要添加到 phil
  • 在 Swift 中是否有办法知道哪个对象被刷了?

    我想传递发件人redBox到函数leftSwipeFunc 我不知道如何传递一个不是的参数UISwipeGestureREcognizer 如果您知道答案 请帮助我 let swipeLeft UISwipeGestureRecognize
  • 如何传递选择参数来调用詹金斯管道内的作业

    我怎样才能通过choice parameters在 a 内部调用时用于下游作业stage在詹金斯管道中 我尝试了以下解决方案 但没有一个有效 stage build job steps script build job test param
  • GraalVM - 在类路径上找不到语言和多语言实现

    我正在尝试在项目中使用 GraalVM 来添加简单的脚本功能 我使用 Maven 进行依赖项管理来加载 Graal 的基本依赖项 这是我的 pom xml
  • 更改 Sublime Text 2 中的键盘快捷键

    如何将当前使用多个光标选择所有的键更改为 CMD G 键盘快捷键在 Sublime Text 2 中被称为键绑定 有文档here http docs sublimetext info en latest customization key
  • 从java程序运行jar文件

    我正在尝试从另一个 Java 程序执行 jar 文件 我正在使用以下代码 try Runtime runtime Runtime getRuntime runtime exec path upto jar catch Exception e
  • 哪个适合linux? GNU make、cmake、codeblocks、qmake

    在我面前有一些不同的技术 我对它们感到困惑 GNU make CMAKE Qmake Code blocks 方法 Code Blocks uses a custom build system which stores its inform
  • Visual Studio 2017 xaml 设计器不可用

    使用 Visual Studio Professional 2017 版本 15 2 26430 16 当我打开我开发的桌面 UI 的 xaml 文件时 我无法再看到 xaml 设计器 我只能看到原始 xaml 代码 这是新行为 可能是由于
  • JFrame 上的所有组件均未显示

    我正在创建一个刽子手游戏 想要在框架上有 3 个不同的组件 绞刑架的图片 试图猜测的单词以及字母的按钮 当我尝试将这些组件添加到 JFrame 时 字符被添加到我也想要它们 但是这个词显示在左侧 而 HangmanGallows 扩展 JP
  • MATLAB:在黑白图像上绘制一条线

    如果已知起始坐标和结束坐标 在 MATLAB 中在黑白 二进制 图像上绘制线条的最佳方法是什么 请注意 我并不是想添加注释行 我希望这条线成为图像的一部分 您可能想看看我的答案 https stackoverflow com a 19413
  • 如何确保 CSS :hover 应用于动态添加的元素

    我有一个脚本 当您将鼠标悬停在缩略图上时 它会在缩略图上动态添加完整图像 我还为完整图像提供了 CSS hover 样式 以使它们扩展到更大的宽度 通常它们被限制为缩略图的尺寸 如果图像加载速度很快或被缓存 这种方法效果很好 但如果完整图像