javascript - FlotJS 工具提示扰乱了响应能力?

标签 javascript html css responsive-design flot

我正在开发一个应用程序,我在其中使用 FlotJS 图表库来绘制图形,并且我已经打开了工具提示,以便用户可以将鼠标悬停在点上并可以在特定日期告诉每个点的内容。

喜欢 this interactive graph example by flot ,我们可以将鼠标悬停在这些点上以查看 sin 和 cos 的值。

我正在使用 Smart Admin Responsive Theme在我的元素中,如果您导航到他们提供的图表演示,还有一个关于 Flot Chart Demos 的部分

如果你仔细看一下顺序第二的罪恶图表,它和我正在做的很相似。将鼠标悬停在点上会显示工具提示,以查看罪恶的值(value)。

我面临的问题是,如果您将鼠标悬停在最后几个点上,工具提示会出现,但它会扰乱页面的响应能力,并且每次都看不到。

如何解决这个问题?有什么方法可以让工具提示在页面末尾出现在鼠标指针的左侧吗?

编辑

选项对象

var layerOptions = {
    xaxis : {
        mode : "time"
    },
    legend : {
        show : true,
        noColumns : 1, // number of colums in legend table
        labelFormatter : null, // fn: string -> string
        labelBoxBorderColor : "#000", // border color for the little label boxes
        container : null, // container (as jQuery object) to put legend in, null means default on top of graph
        position : "ne", // position of default legend container within plot
        margin : [0, 5], // distance from grid edge to default legend container within plot
        backgroundColor : "#efefef", // null means auto-detect
        backgroundOpacity : 0.4 // set to 0 to avoid background
    },
    tooltip : true,
    tooltipOpts : {
        content : "<b>%s</b> content on <b>%x</b> was <b>%y</b>",
        dateFormat : "%y-%m-%d",
        defaultTheme : false
    },
    grid : {
        hoverable : true,
        clickable : true
    },
    series: {
        /*bars: {
            show: true, 
            barWidth: 1000 * 60 * 60 * 24 * 30,
            order: 1
        }*/
    }
};

最佳答案

是的,您可以根据窗口大小动态设置工具提示的位置。我在我的 float 页面之一中使用它在靠近右边界时将工具提示翻转到左侧:

var prevPoint = null;
$("#placeholder").bind("plothover", function (event, pos, item) {
    if (item) {
        if (prevPoint != item.dataIndex) {
            prevPoint = item.dataIndex;
            $("#tooltip").remove();

            var x = item.datapoint[0].toFixed(2),
                y = item.datapoint[1].toFixed(2),
                text = item.series.label + ' content on ' + x + ' was ' + y;
            showTooltip(item.pageX, item.pageY, text);
        }
    } else {
        $("#tooltip").remove();
        prevPoint = null;
    }
});

function showTooltip(x, y, content) {
    var cssParams = {
        position: 'absolute',
        display: 'none',
        border: '1px solid #888888',
        padding: '2px',
        'background-color': '#eeeeee',
        opacity: 0.8
    };
    if (x < 0.8 * windowWidth) {
        cssParams.left = x + 3;
    }
    else {
        cssParams.right = windowWidth - x + 6;
    }
    if (y < 0.8 * windowHeight) {
        cssParams.top = y + 3;
    }
    else {
        cssParams.bottom = windowHeight - y + 6;
    }
    $('<div id="tooltip">' + content + '</div>').css(cssParams).appendTo('body').fadeIn(100);
}

windowHeightwindowWidth 是在调整大小事件中更新的全局变量(使用 $(window).height())。如果愿意,您还可以使用容器元素的尺寸。

当您使用给定的事件/函数时,您可以删除工具提示插件和选项。

关于javascript - FlotJS 工具提示扰乱了响应能力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30726695/

相关文章:

javascript - 如何使用图像源数组更改 JavaScript 中的图像

javascript - 修改数字输入以仅接受数字

javascript - 使 JS 幻灯片的第一张幻灯片持续时间更长

javascript - 如何在 UI 选择菜单中为每个选项指定选择功能

javascript - 如何用javascript重写html文档

css - Flex 4 - MXML 组件中的 CSS 类型选择器

javascript - 哪种算法可以找出一个节点到另一个X类型节点的最短路径

css - Firefox 的行高 css

javascript - Bootstrap 自动折叠

javascript - 如何将印度字符转换为 Unicode 转义字符