首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >戴图:无法为自定义图例div设置z索引

戴图:无法为自定义图例div设置z索引
EN

Stack Overflow用户
提问于 2018-07-19 23:40:50
回答 1查看 429关注 0票数 2

我正在尝试实现一个图形图例,它将跟随鼠标光标。它可以工作,但是有一个问题:图例div是在图形下面绘制的,这不是我想要的。

见以下MWE:

代码语言:javascript
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
  <head>
    <title>Testing</title>
    <script src="static/dygraph.min.js"></script>
    <link rel="stylesheet" href="static/dygraph.css" />
    <style>
      #graph {
        height: 400px;
        width: 640px;
      }
      #legend {
        position: absolute;
        background-color: red;
        /* z-index: 99; */
      }
    </style>
  </head>
  <body>
    <div id="legend"></div>
    <div id="graph"></div>
    <script>
      document.onmousemove = function(e) {
        var legend = document.getElementById("legend");
        legend.style.left = e.pageX + "px";
        legend.style.top = e.pageY + "px";
      };

      var data = [];
      for(let i = 0; i < 100; i++) {
        data.push([i, Math.random(), Math.random()]);
      }
      var g = new Dygraph(
        "graph",
        data,
        {
          fillGraph: true,
          fillAlpha: 0.8,
          labels: ["x", "y1", "y2"],
          labelsDiv: legend,
          legendFormatter: legendFormatter
        }
      );

      function legendFormatter(data) {
        if(data.x === null) return "";
        return data.xHTML + "<br />" +
               data.series.map(
                 v => "<span style='color:" + v.color + ";'>" +
                    v.labelHTML + "</span>: " + v.yHTML
               ).join("<br />");
      }
    </script>
  </body>
</html>

下面的屏幕截图显示了当前的行为(这不是我想要的):

我的本能反应是创造一个更高的z指数。然而,这样做导致了一些奇怪的行为。

在Firefox中,这个传说就会消失。

在铬中,当光标静止时(在图表上),图例是不可见的,并且在光标移动时可以看到闪烁。

为什么是这样,以及如何使图例正确显示(在图表的顶部)?

当光标离开图形时,我仍然希望图例被隐藏,所以设置#legend { display: block !important; }不是一个选项。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-20 04:14:52

1)当图例div位于顶部并移动到光标位置时,

这就混淆了突出数据点的图形函数。

您会注意到,当图例div消失时,图上没有突出显示点。

这会引起闪烁..。

若要更正此问题,请向x,y位置添加几个像素,

因此,图例div不是直接在光标下面。

代码语言:javascript
运行
AI代码解释
复制
legend.style.left = (e.pageX + 16) + "px";
legend.style.top = (e.pageY + 16) + "px";

另外,鼠标会隐藏部分信息否则..。

2)将图例div放在图的顶部,而不添加z索引,

在dom后面,在图div之后添加图例div.

代码语言:javascript
运行
AI代码解释
复制
<div id="graph"></div>
<div id="legend"></div>

3)见下面的工作片段..。

代码语言:javascript
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
  <head>
    <title>Testing</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/dygraph/2.1.0/dygraph.min.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/dygraph/2.1.0/dygraph.css" />
    <style>
      #graph {
        height: 400px;
        width: 640px;
      }
      #legend {
        position: absolute;
        background-color: red;
      }
    </style>
  </head>
  <body>
    <div id="graph"></div>
    <div id="legend"></div>
    <script>
      var legend = document.getElementById("legend");
      document.onmousemove = function(e) {
        legend.style.left = (e.pageX + 16) + "px";
        legend.style.top = (e.pageY + 16) + "px";
      };

      var data = [];
      for(let i = 0; i < 100; i++) {
        data.push([i, Math.random(), Math.random()]);
      }
      var g = new Dygraph(
        "graph",
        data,
        {
          fillGraph: true,
          fillAlpha: 0.8,
          labels: ["x", "y1", "y2"],
          labelsDiv: legend,
          legendFormatter: legendFormatter,
          
        }
      );

      function legendFormatter(data) {
        //if(data.x === null) return "";
        return data.xHTML + "<br />" +
               data.series.map(
                 v => "<span style='color:" + v.color + ";'>" +
                    v.labelHTML + "</span>: " + v.yHTML
               ).join("<br />");
      }
    </script>
  </body>
</html>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51437501

复制
相关文章
Rust API Guidelines 《Rust API 编写指南》翻译完成~
官方 Rust library 团队总结的关于编写 crate API 的经验与建议。
MikeLoveRust
2021/06/16
1.5K0
基于kubernetes Api完成更新镜像版本
kubernetes Api python client 相关内容信息 Github地址: https://github.com/kubernetes-client/python/blob/master/kubernetes/README.md
py3study
2020/08/10
1.8K0
windows完成端口api了解一下
__in HANDLE ExistingCompletionPort,
随心助手
2019/10/15
6390
从头完成一个restful API 服务
“ 昨天搭建了一个HTTPS的服务器,放在那里不用简直是浪费了,今天来部署一个RESTFul API服务”
周萝卜
2019/07/17
7680
从头完成一个restful API 服务
新手学习FFmpeg - 调用API完成录屏
如果使用FFmpeg提供的-list_devices 命令可以查询到当前支持的设备,其中分为两类:
随机来个数
2019/08/31
2K0
从头完成一个restful API 服务(再续)
安装Jenkins其实很简单的,只要下载Jenkins的WAR包,然后放到tomcat下面
周萝卜
2019/07/17
5450
从头完成一个restful API 服务(再续)
从头完成一个restful API 服务(续)
“ 上次完成了一个初级的API服务器的搭建,今天来给它增加点新功能,要看前面内容的,戳这里”
周萝卜
2019/07/17
6360
从头完成一个restful API 服务(续)
java基础API
(1)Application Programming Interface,应用程序接口。 是一些预先定义的类和接口,或指软件系统不同组成部分衔接的约定。 (2)API说明文档
全栈程序员站长
2022/09/08
8880
java基础API
Java API 基础
  Java程序员在开发Java程序时,只需要安装有JDK,就可以在程序中使用import关键字导入Java API 中指定的包并在自己的程序中使用这些包中定义的各种类和接口。
全栈程序员站长
2022/09/08
1.1K0
Java API 基础
ZooKeeper Java API
ZooKeeper API 的核心部分是 ZooKeeper 类。在构造函数中提供一些参数来连接 ZooKeeper,并提供如下方法:
smartsi
2019/11/26
2K0
HDFS Java API
官网 http://hadoop.apache.org/docs/r2.7.3/api/index.html
程裕强
2022/05/06
1.6K0
HDFS Java API
Zookeeper Java API
本文主要讲解使用Java API来和Zookeeper集群进行交互,大家在看完这篇文章以后一定要亲自动手去敲代码(纸上得来终觉浅,绝知此事要躬行)。下面介绍的API依赖的maven版本为:
shysh95
2019/07/24
5650
-java常用API
Java常用API 1. StringBuffer 1.1 StringBuffer概述 为了解决String字符串操作导致的内存冗余,提高效率,Java中提供了StringBuffer和StringBuilder来操作字符串,并且提供了很多方法,便于程序员开发。 StringBuffer和StringBuilder中都有char类型可变长数组作为字符串的保存空间。使用到的方法类型和ArrayList类似。 StringBuffer 线程安全,效率较低 StringBuild
ruochen
2021/11/24
1.2K0
Java常用API
编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发出向前跑、向后跑、射门、抢球等各种命令,没有编过程序的人很难想象这样的程序如何编写。但是对于有经验的开发人员来说,知道机器人厂商一定会提供一些用于控制机器人的Java类,这些类中定义好了操作机器人各种动作的方法。其实,这些Java类就是机器人厂商提供给应用程序编程的接口,大家把这些类称为Xxx Robot API。本章涉及的Java API指的就是JDK中提供的各种功能的Java类。
闲花手札
2021/08/24
1.1K0
Java Stream API
– 代码简洁函数式编程写出的代码简洁且意图明确,使用 stream 接口让你从此告别 for 循环。
HUC思梦
2020/09/03
5950
Java Validation Api
在我们应用程序的业务逻辑中,经常会碰到参数教研的情况,比如在Controller中,我们的参数是一个Entity的时候,经常要判断这个Entity的字段是否是null之类或者是长度等。通常来讲,我们用比如StringUtils或者是if等来进行教研,这样在我们的代码层上面就会带来很不好的体验,阅读、维护的成本会大大增加,造成冗余。因此有了这个JSR 303。   Bean Validation为JavaBean提供了相应的API来给我们做参数的验证。通过Bean Validation比如@NotNull
haoming1100
2018/04/27
1.6K0
Java Validation Api
从未来看C#
现在当我们需要声明一个类型用来保存数据,并且支持数据的解构的话,需要像如下一样写出大量的样板代码:
用户9127601
2023/08/30
2490
从未来看C#
从未如此了解过Linux
操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信。 Linux 内核版本又分为 稳定版 和 开发版,两种版本是相互关联,相互循环
CC老师
2019/01/23
6440
elasticsearch的restful API和Java API
本人现在使用的是elasticsearch 5.2.1的,服务器IP为192.168.5.182.所以在Java API和jar包中会有所不同.
算法之名
2019/08/20
2K0
踏上架构旅途 思考从未止步
普通程序员是编写代码的人。编写代码的方式有很多,只要能让程序跑起来,能正确地处理业务流程和对数据进行计算,就可以说“会编写代码”。程序员需要熟悉整个程序的逻辑及处理过程,需要熟悉程序语言的特性,还需要熟悉一些计算机操作系统的交互调用方式,才能写出从用户侧交互,到数据和业务逻辑处理,再到与计算机系统交互的代码,有效地把用户信息、数据、业务和计算机串联和拼装出来。
用户1682855
2018/10/22
4480
踏上架构旅途 思考从未止步

相似问题

如何在卷影根内创建卷影根

21

在多个卷影根下的href中单击卷影根

12

SVG卷影根已关闭

010

如何定位未在卷影根中找到的元素

13

保留卷影Dom主机内容

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文