当您使用 Javascript 单击或停止悬停时,如何使 CSS 悬停内容保持在原位?

2024-02-23

我有一个想要实现的身体系统功能。当用户将鼠标悬停在身体​​部位上时,它会突出显示并显示该特定身体部位的信息。我已经按照我想要的方式编写了 CSS 代码,但是我对 JavaScript 一无所知当单击身体部位或鼠标离开悬停状态时,获取要粘贴的信息。

我搜索了论坛并发现了类似的问题,并花了几个小时试图从其他人的 javascript 解决方案中找出这个问题 - 我现在需要寻求帮助。

这是我根据所需效果制作的 Flash 原型:

http://inwavemedia.com/temp/proto/Main.html http://inwavemedia.com/temp/proto/Main.html

如果你想看看我现在拥有的内容,这里是实时 HTML:

http://inwavemedia.com/temp/excretory.html http://inwavemedia.com/temp/excretory.html

这是我的代码:

<style type="text/css">
#bodysystem-excretory {
 width: 618px;
 height: 504px;
 background: url(excretory.png) no-repeat;
 margin: 10px auto; padding: 0;
 position: relative;
 border: 1px solid #999;
}
#bodysystem-excretory li {
    margin: 0;
    padding: 0;
    list-style: none;
    display: block;
    position: absolute;
}

#bodysystem-excretory a {
    display: block;
/*  text-indent: -9999px;*/
    text-decoration: none;
}

#esoph {
    left: 85px;
    top: 41px;
    width: 46px;
    height: 94px;
    z-index: 10;
}

#lungs {
    left: 76px;
    top: 84px;
    width: 84px;
    height: 68px;
    z-index: 20;
}

#bladder {
    left: 87px;
    top: 148px;
    width: 64px;
    height: 104px;
    z-index: 30;
}

#esoph a {
    height: 94px;
}

#lungs a {
    height: 67px;
}

#bladder a {
    height: 104px;
}


#esoph a:hover {
    background-image: url(excretory.png);
    background-repeat: no-repeat;
    background-position: -25px -561px;
}

#lungs a:hover {
    background-image: url(excretory.png);
    background-repeat: no-repeat;
    background-position: -105px -523px;
}

#bladder a:hover {
    background-image: url(excretory.png);
    background-repeat: no-repeat;
    background-position: -114px -618px;
}

.info span{ 
    display: none

}

.info{
    position:relative;
    z-index:1124;
    color:#000;
}

.info:hover{
    z-index:1125;

}

.info:hover span{
    display:block;
    position:absolute;
    top:-30px;
    left:155px;
    width:370px;
    color:#000;
    background-color:#FFFFFF;
}
</style>

</head>

<body>
<ul id="bodysystem-excretory">
  <li id="esoph">
    <a href="#" class="info"><span id="esoph-info"><h3>Esophagus</h3><p>This is esophagus information. This is esophagus information. This is esophagus information. This is esophagus information. This is esophagus information. This is esophagus information. This is esophagus information. </p></span></a>
  </li>
<li id="lungs"><a href="#" class="info"><span id="lungs-info"><h3>Lungs</h3></span></a></li>
<li id="bladder"><a href="#" class="info"><span id="bladder-info"><h3>Bladder</h3></span></a></li>
</ul>

以下是您需要进行的必要更改:

<head>
    <title>Untitled Page</title>
    <style type="text/css">
        #bodysystem-excretory
        {
            width: 618px;
            height: 504px;
            background: url(excretory.png) no-repeat;
            margin: 10px auto;
            padding: 0;
            position: relative;
            border: 1px solid #999;
        }
        #bodysystem-excretory li
        {
            margin: 0;
            padding: 0;
            list-style: none;
            display: block;
            position: absolute;
        }

        #bodysystem-excretory a
        {
            display: block; /*  text-indent: -9999px;*/
            text-decoration: none;
        }

        #esoph
        {
            left: 85px;
            top: 41px;
            width: 46px;
            height: 94px;
            z-index: 10;
        }

        #lungs
        {
            left: 76px;
            top: 84px;
            width: 84px;
            height: 68px;
            z-index: 20;
        }

        #bladder
        {
            left: 87px;
            top: 148px;
            width: 64px;
            height: 104px;
            z-index: 30;
        }

        #esoph a
        {
            height: 94px;
        }

        #lungs a
        {
            height: 67px;
        }

        #bladder a
        {
            height: 104px;
        }


        #esoph a:hover
        {
            background-image: url(excretory.png);
            background-repeat: no-repeat;
            background-position: -25px -561px;
        }

        #lungs a:hover
        {
            background-image: url(excretory.png);
            background-repeat: no-repeat;
            background-position: -105px -523px;
        }

        #bladder a:hover
        {
            background-image: url(excretory.png);
            background-repeat: no-repeat;
            background-position: -114px -618px;
        }

        .info span
        {
            display: none;
        }

        .info
        {
            position: relative;
            z-index: 1000;
            color: #000;
        }

        #bodysystem-excretory li[selected='true'] .info
        {
            z-index:1200;
        }

        #bodysystem-excretory li[selected='true'] .info span
        {
            display: block;
            position: absolute;
            top: -30px;
            left: 155px;
            width: 370px;
            color: #000;
            background-color: #FFFFFF;
        }

        .info:hover
        {
            z-index: 1125;
        }

        .info:hover span
        {
            display: block;
            position: absolute;
            top: -30px;
            left: 155px;
            width: 370px;
            color: #000;
            background-color: #FFFFFF;
        }
    </style>
    <script type="text/javascript">
        function SelectOrgan(obj)
        {
            var parentObj = obj.parentNode;
            var organs = document.getElementById("bodysystem-excretory").getElementsByTagName("li");

            for (var i = 0, len = organs.length; i < len; i++)
            {
                organs[i].setAttribute("selected", "false");
            }

            parentObj.setAttribute("selected", "true");
        }
    </script>
</head>
<body>
    <ul id="bodysystem-excretory">
        <li id="esoph" selected="false"><a href="#" class="info" onclick="SelectOrgan(this)"><span id="esoph-info">
            <h3>
                Esophagus</h3>
            <p>
                This is esophagus information. This is esophagus information. This is esophagus
                information. This is esophagus information. This is esophagus information. This
                is esophagus information. This is esophagus information.
            </p>
        </span></a></li>
        <li id="lungs" selected="false"><a href="#" class="info" onclick="SelectOrgan(this)"><span id="lungs-info">
            <h3>
                Lungs</h3>
        </span></a></li>
        <li id="bladder" selected="false"><a href="#" class="info" onclick="SelectOrgan(this)"><span id="bladder-info">
            <h3>
                Bladder</h3>
        </span></a></li>
    </ul>
</body>
</html>

请注意,每个器官都被分配了一个绝对位置,在空间中的位置也不同。如果你保持所有这些都相同,具有相同的左侧、顶部、宽度和高度,那么你就可以达到你的要求。

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

当您使用 Javascript 单击或停止悬停时,如何使 CSS 悬停内容保持在原位? 的相关文章

随机推荐

  • 使用 base64 字符串的 C# LinkedResource

    我该怎么说 gt url data image jpeg base64 9j 4AAQSkZJRgABAgEASABIAAD 2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB into new
  • 如何使用! scala 中的运算符?

    我是 Scala 的新手 正在尝试一些基本操作来掌握这门语言 我正在尝试使用逻辑运算符 例如 val a2 0x01 0xFF println a2 我想对a2的值求负然后打印出来 但它给了我一个错误说 value unary is not
  • XML 命名空间“clr-namespace:YYY”中不存在标记“XXX”

    我已经实现了一个转换器 将 Int32 转换为 String 以便能够将属性绑定到文本框 我在命名空间 MyApp Converters 中实现了这个转换器 它被称为 Int32ToStringConverter 然后 在我的 axml 中
  • R:删除向量的最后一个元素

    如何删除动物园系列的最后 100 个元素 我知道名称 元素 符号 但我无法减去整个部分 我喜欢用head因为这样更容易打字 其他方法可能执行得更快 但我很懒 而我的计算机却不是 x lt head x 100 gt head 1 102 1
  • Pynput 键盘记录器仅返回 Shift、Command、空格和 Capslock 键

    我希望这个问题没有在之前的帖子中讨论过 我的搜索结果没有返回任何相关内容 但请随时启发我 我正在编写一个非常基本的 Python 键盘记录器 作为一个更大项目的一部分 我使用 pynput 来监听击键 并使用日志记录模块将它们写入 txt
  • 如何将数据读入Tensorflow?

    我正在尝试将数据从 CSV 文件读取到张量流 https www tensorflow org versions r0 7 how tos reading data index html filenames shuffling and ep
  • 如何禁用 VS Code“扩展开发主机”中的所有无关扩展而不覆盖我的正常用户配置?

    我正在尝试在 VSCode 扩展上进行调试 开发 为此 我需要在调试 扩展开发主机 中禁用所有 许多 其他扩展 然而 这样做 saves我的用户首选项 然后导致 我所有其他 VScode 实例 停止拥有任何扩展 如何在 扩展开发主机 中禁用
  • 发送简单的文本(不是电子邮件)到 SpamAssassin

    我想知道是否可以向 SpamAssassin 发送简单的文本 我想将评论放入文本文件中并调用 spamc 我相信您可以禁用任何引用标头的 SA 规则 但由于 消息 格式错误 它可能仍然会中断 即使没有 SA 评分也过于依赖标头 因此在不检查
  • Meteor 服务器 Websocket

    我正在寻找在 Meteor 服务器 而不是客户端 上创建一个 websocket 以连接到外部网站 我知道我要访问的 URL 以及期望的数据 但我不清楚如何准确地创建 websocket 本身 我所做的所有搜索都为我提供了客户端解决方案 但
  • HTML5 WebStorage 数据是如何物理存储的?

    在使用 HTML5 WebStorage 功能时 我知道某些浏览器 例如 Chrome 具有开发人员工具 使用户能够浏览其 WebStorage 的内容以进行调试和故障排除 我想知道是否可以查看文件系统中网络存储的内容 此内容是否存储在文件
  • 在 WPF ComboBox 中设置默认值

    我正在使用 ComboBox ItemsSource 属性绑定来显示从列表到组合框的项目 以下是代码
  • 如何获取发送到数据库的准备好的查询

    当使用像这样的数据库库时pyodbc http code google com p pyodbc 实施Python 数据库 API 规范 http www python org dev peps pep 0249 应用参数替换后如何获得完全
  • 从 do 块返回查询

    我想做的就是能够使用do块设置一些变量 然后返回一个查询STDOUT使用这些变量 DO DECLARE book name TEXT DECLARE book slug TEXT BEGIN book name Ise Monogatari
  • Ruby Gem 开发 - 如何使用 ActiveRecord?

    我目前正在尝试开发我的第一个红宝石宝石 但我已经陷入困境 我使用 bundle gem 命令创建基本结构并阅读了一些教程 但我找不到如何集成 ActiveRecord 我在哪里创建迁移 我是在 lib 文件夹中还是在根目录中创建 db mi
  • UIButtons 的 IBOutletCollection - 更改按钮的选定状态

    我在视图中遇到多个 UIButton 的问题 我希望单独选择按钮 一次选择多个按钮 例如 10 个按钮 选择按钮 1 4 5 9 在我的标头中 我有一个 IBOutletCollection 属性 property retain nonat
  • 如果MySQL数据库没有关闭会发生什么?

    如果MySQL数据库没有关闭会发生什么 我们如何知道它是否正确关闭 我确实有一个页面 页面上有 11 个表 所以我所做的是在脚本开始之前在页面顶部打开数据库 并在脚本 PHP 结束的地方关闭 结尾是 mysql close db 这足够公平
  • UIBarButtonItem 如何禁用辅助功能 (iOS)

    SO 我正在尝试禁用已添加到 UINavigationController 的 leftBarButtonItems 中的 UIBarButtonItem 的 VoiceOver 可访问性 虽然我可以为没有标题的按钮禁用它 但我似乎无法为有
  • 如何在 symfony2 的表单类中隐藏标签?

    我知道您可以在树枝中拆分表单并选择不渲染特定字段的标签 但我忍不住认为您必须能够从表单类中执行此操作 选项数组中的 label 键允许您将此值更改为您喜欢的任何值 但传递 false 或空字符串只会返回字段名称 请参阅下面的示例 其中 ro
  • USB 驱动程序 华硕 Nexus 7 Windows 7

    我已经尝试了该网站和其他许多网站上的所有建议 但均无济于事 甚至可以在 Windows 上为 Nexus 7 进行 Android 开发吗 我试过从sdk管理器下载的usb驱动 华硕的那个 我已尝试将 USB 模式更改为 PTP 但仍然收到
  • 当您使用 Javascript 单击或停止悬停时,如何使 CSS 悬停内容保持在原位?

    我有一个想要实现的身体系统功能 当用户将鼠标悬停在身体 部位上时 它会突出显示并显示该特定身体部位的信息 我已经按照我想要的方式编写了 CSS 代码 但是我对 JavaScript 一无所知当单击身体部位或鼠标离开悬停状态时 获取要粘贴的信